搭建基于 Spring Boot 的 Java 项目服务器环境,通常分为 基础环境准备、项目构建与部署、运行配置 和 启动验证 四个核心步骤。以下是一个通用且规范的实操指南(以 Linux CentOS/Ubuntu 为例):
一、基础环境准备
1. 安装 JDK
Spring Boot 需要 JDK 8+(推荐 JDK 17 或 21)。
# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-17-jdk -y
# CentOS/RHEL
sudo yum install java-17-openjdk-devel -y
# 验证安装
java -version
javac -version
2. 安装 Maven(可选但推荐)
用于本地打包,若使用 CI/CD 可直接跳过。
# Ubuntu
sudo apt install maven -y
# CentOS
sudo yum install maven -y
mvn -v
3. 安装 Nginx(反向X_X,可选)
用于负载均衡、静态资源托管或 HTTPS 配置。
# Ubuntu
sudo apt install nginx -y
# CentOS
sudo yum install nginx -y
二、项目构建与上传
1. 本地打包(Maven)
在项目根目录执行:
mvn clean package -DskipTests
生成文件位于 target/ 目录下,例如:your-app-0.0.1-SNAPSHOT.jar
2. 上传到服务器
使用 scp 或 sftp 将 JAR 包上传至服务器指定目录(如 /opt/app/):
scp target/your-app-0.0.1-SNAPSHOT.jar user@server_ip:/opt/app/
三、服务器端配置与运行
1. 创建运行用户(安全建议)
sudo useradd -m -s /bin/bash appuser
sudo passwd appuser
2. 设置目录权限
sudo mkdir -p /opt/app/logs
sudo chown -R appuser:appuser /opt/app
3. 编写启动脚本(start.sh)
#!/bin/bash
APP_NAME="your-app"
JAR_FILE="/opt/app/${APP_NAME}.jar"
LOG_DIR="/opt/app/logs"
PORT=8080
cd /opt/app
nohup java -jar $JAR_FILE
--spring.profiles.active=prod
--server.port=$PORT
> ${LOG_DIR}/${APP_NAME}.log 2>&1 &
echo "应用已启动,PID: $(pgrep -f $JAR_FILE)"
赋予执行权限:
chmod +x start.sh
sudo -u appuser ./start.sh
💡 生产环境建议:使用
systemd管理服务(见下文“进阶方案”)。
四、进阶方案:使用 systemd 管理服务(推荐)
创建服务文件 /etc/systemd/system/your-app.service:
[Unit]
Description=Your Spring Boot Application
After=syslog.target network.target
[Service]
User=appuser
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar your-app.jar --spring.profiles.active=prod
Restart=always
StandardOutput=journal
StandardError=journal
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable your-app
sudo systemctl start your-app
sudo systemctl status your-app
查看日志:
sudo journalctl -u your-app -f
五、网络与安全配置
1. 开放防火墙端口(如 8080)
# UFW (Ubuntu)
sudo ufw allow 8080/tcp
# firewalld (CentOS)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
2. 配置 Nginx 反向X_X(可选)
编辑 /etc/nginx/sites-available/your-app:
server {
listen 80;
server_name your-domain.com;
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 nginx -t
sudo systemctl restart nginx
六、验证与监控
- 访问测试:浏览器或 curl 访问
http://your-server-ip:8080或域名。 - 健康检查:Spring Boot Actuator 默认提供
/actuator/health端点(需开启依赖)。 - 日志监控:使用
tail -f logs/*.log或 ELK 栈集中管理日志。 - 性能优化:根据服务器资源调整 JVM 参数(如
-Xms512m -Xmx1g)。
常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 启动失败 | 端口占用 | lsof -i:8080 查进程并 kill |
| 内存溢出 | JVM 堆太小 | 增加 -Xmx 参数 |
| 数据库连接失败 | 配置文件错误 | 检查 application-prod.yml 中的 DB URL/账号 |
| 无响应 | 防火墙未放行 | 检查 ufw/firewalld 规则 |
通过以上步骤,即可搭建一个稳定、可维护的 Spring Boot 生产环境。如需容器化部署,也可考虑使用 Docker + Docker Compose 方案进一步提升灵活性。
CLOUD技术博