Java 网站服务器部署全指南
部署 Java 网站通常涉及环境搭建、项目打包、服务器配置以及反向代理等多个环节,目前主流的部署方式分为 Spring Boot 内嵌服务器部署(Jar包) 和 传统外部容器部署(War包),本文以最常用的 Spring Boot 为例进行详细讲解。
准备工作
在开始部署前,请确保你拥有以下资源:
- 一台 Linux 服务器(推荐 Ubuntu 22.04 或 CentOS 7/8)。
- 域名(可选,用于通过域名访问)。
- 基础知识:基本的 Linux 命令行操作、SSH 连接工具(如 PuTTY, Xshell 或 Terminal)。
环境搭建
安装 JDK (Java Development Kit)
Java 程序运行必须安装 JRE,开发部署建议安装 JDK,版本必须与项目编译版本一致。
- 安装命令(以 Ubuntu 为例,安装 OpenJDK 17):
sudo apt updatesudo apt install openjdk-17-jdk
- 验证安装:
java -version
安装数据库
根据项目需求安装 MySQL, PostgreSQL 或 MongoDB。
- 安装 MySQL:
sudo apt install mysql-server
- 配置:创建数据库、创建用户并授予权限,导入项目所需的
.sql脚本。
项目打包
在本地开发环境将代码编译为可执行文件。
- 使用 Maven 打包:
- 在项目根目录下运行:
mvn clean package -DskipTests - 打包完成后,在
target目录下会生成一个.jar文件(my-app-0.0.1-SNAPSHOT.jar)。
- 在项目根目录下运行:
- 上传文件:
- 使用 SCP 或 FTP 工具将
.jar文件上传到服务器指定目录(如/var/www/java-app/)。
- 使用 SCP 或 FTP 工具将
部署运行
前台测试运行
先尝试直接运行,确认程序没有配置错误:
java -jar my-app.jar- 观察日志,确认显示
Started Application in X seconds且没有报错。
后台持久化运行
前台运行在关闭终端后会停止,因此需要将其作为后台进程运行。
-
使用 nohup(简单快速)
nohup java -jar my-app.jar > output.log 2>&1 &- 解释:
nohup忽略挂断信号,> output.log将日志输出到文件,&表示后台运行。
-
使用 systemd(专业推荐,支持自启动)
-
创建服务文件:
sudo nano /etc/systemd/system/my-app.service -
[Unit] Description=My Java Website After=syslog.target [Service] User=root ExecStart=/usr/bin/java -jar /var/www/java-app/my-app.jar SuccessExitStatus=143 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
-
启动服务:
sudo systemctl daemon-reloadsudo systemctl start my-appsudo systemctl enable my-app(设置开机自启)
-
配置 Nginx 反向代理
Java 应用通常运行在 8080 端口,直接暴露给用户不安全且不方便,使用 Nginx 将 80 端口(HTTP)或 443 端口(HTTPS)转发到 Java 应用。
- 安装 Nginx:
sudo apt install nginx
- 配置反向代理:
- 编辑配置文件:
sudo nano /etc/nginx/sites-available/default - 在
server块中添加:location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
- 编辑配置文件:
- 重启 Nginx:
sudo systemctl restart nginx
关键优化与安全
- 防火墙配置:
- 仅开放 80, 443 和 22 端口,关闭 8080 端口以防止直接访问。
sudo ufw allow 80/tcpsudo ufw allow 443/tcp
- JVM 参数调优:
- 根据服务器内存限制,设置最大堆内存,防止 OOM(内存溢出)。
java -Xms512m -Xmx1024m -jar my-app.jar
- SSL 证书:
- 使用 Certbot (Let’s Encrypt) 为 Nginx 配置免费的 HTTPS 证书,提升安全性。
- 日志管理:
- 定期清理
output.log或使用logrotate工具,防止磁盘空间被日志填满。
- 定期清理
部署流程总结
代码编写 $rightarrow$ Maven 打包 $rightarrow$ 上传服务器 $rightarrow$ 安装 JDK/DB $rightarrow$ systemd 后台运行 $rightarrow$ Nginx 转发 $rightarrow$ 配置防火墙/SSL。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/493751.html



