《JAVA八股真解》十、部署
#JAVA##JAVA面经##JAVA内推#
1. Nginx 的作用
Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛应用于 Web 服务的前端代理与负载均衡。
主要功能:
- 反向代理:将多个服务器虚拟成一台服务器,对外提供统一入口。
- 负载均衡:将请求均匀分配到多台后端服务器,减轻单台压力,提升整体吞吐量。
- 动/静分离:将静态资源(如图片、CSS、JS)由 Nginx 直接响应,动态请求转发给应用服务器,提高访问速度。
- 高并发处理:基于事件驱动模型,支持大量并发连接,适合高流量场景。
典型应用场景:
- 网站前端代理
- API 网关
- CDN 加速节点
2. Linux 常用命令
Linux 是大多数服务器的操作系统,熟悉常用命令是运维工作的基础。
系统类命令:
ifconfig:查看网络接口信息(IP 地址、MAC 地址等)。reboot:重启系统。free:查看内存使用情况。df:查看磁盘空间使用情况。top:实时监控系统资源占用(CPU、内存、进程等)。lsof -i:端口号:查看指定端口对应的进程(常用于排查端口冲突)。
进程类命令:
ps -ef | grep java:查看当前运行的所有 Java 进程。kill -9 PID:强制终止指定 PID 的进程(PID 为进程 ID)。java -Xmx32g -Xms1g -jar myapp.jar:启动 Spring Boot 应用(JAR 文件)。nohup java -Xmx32g -Xms1g -jar myapp.jar &:后台运行 JAR 文件,忽略挂断信号。
文件类命令:
tail -10f order.log:实时动态查看日志文件最后 10 行内容,并持续监控新增日志(面试常考)。tail -n 10 order.log:非动态查看日志文件最后 10 行内容,不监控后续更新。find /path/to/directory -name "*.txt":在指定目录下查找所有扩展名为.txt的文件。cat file.txt:显示文件内容。
提示:
tail -f是开发调试中常用的命令,用于实时观察日志输出。
3. Jenkins 自动部署原理
Jenkins 是一个开源的持续集成与交付工具,支持自动化构建、测试和部署流程。
工作流程:
- 配置项目:在 Jenkins 中创建新项目,设置项目名称、源码管理方式(如 Git)、构建触发条件等。
- 源码拉取:当触发条件满足时(如代码提交),Jenkins 从 Git 仓库获取最新代码。
- 构建过程:
- 设置构建环境:指定 JDK 版本、Maven 配置等。
- 安装依赖:通过 Maven 下载并安装项目所需依赖包。
- 编译项目:执行编译命令,生成可执行的字节码文件。
- 运行测试:执行单元测试、集成测试,确保代码质量和功能正确性。
- 打包发布:将编译后的代码打包成 JAR/WAR 文件,准备部署。
- 部署到服务器:
- 远程拷贝:通过 SSH 将构建产物复制到目标服务器。
- 容器化部署:使用 Docker 或其他容器技术,在目标服务器上创建并运行包含应用的容器。
- 验证部署:通过发送请求或执行自动化测试,验证部署的应用是否正常运行。
优势:
- 实现 CI/CD 流程自动化。
- 减少人工操作,提升交付效率。
- 支持多种插件扩展,适应不同需求。
适用场景:
- 微服务架构下的持续交付。
- 多环境部署(开发、测试、生产)。