在腾讯云服务器的 Linux 环境下部署 Java 项目并实现持久化运行(即项目开机自启、崩溃后自动重启、后台稳定运行),通常需要以下几个步骤。以下以常见的 Spring Boot 项目为例,使用 systemd 服务进行管理,这是目前最推荐的方式。
✅ 一、准备工作
-
购买并登录腾讯云 CVM 实例
- 操作系统:推荐 CentOS 7+/Ubuntu 20.04+
- 安全组:开放所需端口(如 8080)
-
连接服务器
ssh root@你的公网IP
-
安装 Java 环境
# 查看是否已安装 Java java -version # 如果没有,安装 OpenJDK 8 或 11(以 Ubuntu 为例) sudo apt update sudo apt install openjdk-11-jdk -y # CentOS 用户: sudo yum install java-11-openjdk-devel -y
✅ 二、上传 Java 项目 Jar 包
将打包好的 your-project.jar
上传到服务器,比如放在 /opt/myapp/
目录下。
# 创建目录
sudo mkdir -p /opt/myapp
# 使用 scp 上传(本地执行)
scp your-project.jar root@你的公网IP:/opt/myapp/app.jar
# 或者使用 wget 下载(如果 jar 包在公网可访问)
sudo wget -O /opt/myapp/app.jar "https://your-domain.com/app.jar"
✅ 三、创建 systemd 服务(实现持久化)
systemd 是 Linux 的系统和服务管理器,可以实现开机自启、自动重启等功能。
1. 创建服务文件
sudo vim /etc/systemd/system/myapp.service
写入以下内容(根据实际情况修改):
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
🔍 说明:
User=root
:建议创建专用用户(如javauser
)提高安全性。Restart=always
:崩溃后自动重启。RestartSec=10
:10 秒后重启。Type=simple
:主进程是 Java 启动的 jar。
2. 启用并启动服务
# 重新加载 systemd 配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start myapp
# 设置开机自启
sudo systemctl enable myapp
# 查看状态
sudo systemctl status myapp
正常输出应显示 active (running)
。
✅ 四、查看日志
# 查看实时日志
sudo journalctl -u myapp.service -f
# 查看最近 50 行
sudo journalctl -u myapp.service -n 50
✅ 五、配置 Nginx 反向X_X(可选)
如果你希望用域名或 80/443 端口访问,建议使用 Nginx。
-
安装 Nginx:
sudo apt install nginx -y # Ubuntu sudo yum install nginx -y # CentOS
-
配置反向X_X:
sudo vim /etc/nginx/sites-available/myapp
写入:
server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1: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; } }
-
启用站点并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
✅ 六、安全与优化建议
-
防火墙设置
sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
-
使用非 root 用户运行 Java
sudo adduser javauser sudo chown -R javauser:javauser /opt/myapp
然后修改 service 文件中的
User=javauser
-
使用 HTTPS(Let’s Encrypt)
使用 Certbot 自动申请免费 SSL 证书。 -
定期备份
备份数据库、配置文件和 jar 包。
✅ 七、常用命令总结
功能 | 命令 |
---|---|
启动服务 | sudo systemctl start myapp |
停止服务 | sudo systemctl stop myapp |
重启服务 | sudo systemctl restart myapp |
查看状态 | sudo systemctl status myapp |
开机自启 | sudo systemctl enable myapp |
查看日志 | sudo journalctl -u myapp -f |
✅ 总结
通过 systemd
管理 Java 应用,可以轻松实现:
- 后台持续运行
- 崩溃自动重启
- 开机自启
- 日志集中管理
- 便于维护和监控
这是生产环境中推荐的标准做法。
如有使用 Docker、Jenkins 自动部署等需求,也可以进一步扩展自动化流程。欢迎继续提问!