在腾讯云服务器的 Linux 环境下部署 Java 项目并实现持久化运行(即项目开机自启、后台运行、崩溃自动重启等),是实际生产环境中常见的需求。以下是完整的部署流程,适用于 Spring Boot 或普通 Java Web 项目。
✅ 一、准备工作
1. 购买并登录腾讯云 CVM
- 登录 腾讯云控制台
- 创建一台 Linux 云服务器(推荐 CentOS 7+/Ubuntu 20.04+)
- 获取公网 IP、用户名(如
root或ubuntu)、密码或密钥
使用 SSH 登录:
ssh root@你的公网IP
✅ 二、安装必要环境
1. 安装 JDK
# 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
设置 JAVA_HOME(可选,但建议):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # 根据实际路径调整
export PATH=$JAVA_HOME/bin:$PATH
写入 /etc/profile 实现全局生效:
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' | sudo tee -a /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile
source /etc/profile
2. 上传 Java 项目 JAR 包
将本地打包好的 your-project.jar 上传到服务器,例如:
方法一:使用 scp
scp your-project.jar root@你的公网IP:/root/app/
方法二:使用 wget 下载(如果 jar 包已上传到 OSS 或 GitHub)
mkdir -p /root/app && cd /root/app
wget https://your-domain.com/your-project.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=/root/app
ExecStart=/usr/bin/java -jar your-project.jar
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
参数说明:
User: 运行用户(建议创建专用用户如javauser提高安全性)WorkingDirectory: 项目所在目录ExecStart: 启动命令Restart=always: 崩溃后自动重启RestartSec=10: 重启间隔 10 秒
2. 启用并启动服务
# 重载 systemd 配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start myapp
# 设置开机自启
sudo systemctl enable myapp
# 查看状态
sudo systemctl status myapp
正常输出应显示 active (running)。
✅ 四、查看日志
使用 journalctl 查看服务日志:
# 查看最近日志
sudo journalctl -u myapp.service -f
# 查看某天日志
sudo journalctl -u myapp.service --since "2025-04-05"
✅ 五、开放防火墙端口(如 8080)
如果使用的是 Spring Boot,默认端口为 8080
1. 开放腾讯云安全组
- 登录腾讯云控制台 → 找到 CVM 实例 → 安全组 → 编辑入站规则
- 添加规则:允许 TCP 8080 端口(或你项目使用的端口)
2. 开放系统防火墙(如 firewalld)
# CentOS
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# Ubuntu(ufw)
sudo ufw allow 8080
✅ 六、测试访问
浏览器访问:
http://你的公网IP:8080
确保项目正常响应。
✅ 七、可选优化
1. 使用 Nginx 反向X_X(推荐用于生产)
安装 Nginx:
# Ubuntu
sudo apt install nginx -y
# CentOS
sudo yum install nginx -y
配置反向X_X(/etc/nginx/sites-available/myapp):
server {
listen 80;
server_name your-domain.com; # 或公网IP
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 systemctl enable nginx
sudo systemctl restart nginx
之后可通过 http://你的IP 直接访问,无需加端口。
2. 使用域名 + HTTPS(Let’s Encrypt)
配合 certbot 和 nginx 可免费申请 SSL 证书。
✅ 八、常见问题排查
| 问题 | 解决方法 |
|---|---|
| 无法访问 8080 | 检查安全组、防火墙、Java 是否监听 0.0.0.0:8080 |
| 服务启动失败 | systemctl status myapp 和 journalctl -u myapp 查日志 |
| 内存不足 | 调整 JVM 参数:ExecStart=/usr/bin/java -Xms512m -Xmx1g -jar your-project.jar |
| 文件权限错误 | 确保 jar 文件可执行:chmod +x your-project.jar |
✅ 总结:持久化部署的关键点
| 功能 | 实现方式 |
|---|---|
| 后台运行 | systemd 服务 |
| 开机自启 | systemctl enable myapp |
| 崩溃重启 | Restart=always |
| 日志管理 | journalctl |
| X_X访问 | 安全组 + 防火墙 + Nginx |
如需自动化部署,可结合 Jenkins + Git + Shell 脚本 实现 CI/CD。
如果你提供具体的项目类型(如 Spring Boot、Tomcat WAR 包等),我可以给出更精确的配置方案。
CDNK博客