在腾讯云服务器的 Linux 环境下部署 Java 项目并实现持久化运行(即服务开机自启、崩溃自动重启等),通常包括以下几个步骤。下面以常见的 Spring Boot 项目为例,使用 systemd 方式进行持久化部署。
✅ 一、准备工作
1. 购买并登录腾讯云服务器
- 选择 CVM 实例(如 CentOS 7/8、Ubuntu 20.04+)
- 获取公网 IP、用户名(如 root 或 ubuntu)、密码或密钥
- 使用 SSH 登录:
ssh root@your_server_ip
2. 安装必要的环境
(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
(2)上传 Java 项目 Jar 包
将你的 xxx.jar 文件上传到服务器,推荐使用 scp:
scp your-project.jar root@your_server_ip:/root/app/
或使用 FTP 工具(如 FileZilla)上传。
✅ 二、创建应用目录并放置 jar 包
mkdir -p /opt/myapp
cp /root/app/your-project.jar /opt/myapp/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: 运行用户(建议创建专用用户如appuser更安全)WorkingDirectory: 应用工作目录ExecStart: 启动命令Restart=always: 崩溃后自动重启RestartSec=10: 重启前等待 10 秒
2. 重载 systemd 配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
✅ 四、启动并设置开机自启
# 启动服务
sudo systemctl start myapp
# 查看状态
sudo systemctl status myapp
# 设置开机自启
sudo systemctl enable myapp
# 停止服务
sudo systemctl stop myapp
# 重启服务
sudo systemctl restart myapp
✅ 五、查看日志(调试用)
# 查看实时日志
sudo journalctl -u myapp.service -f
# 查看最近 100 行日志
sudo journalctl -u myapp.service -n 100
✅ 六、配置防火墙和安全组(重要!)
1. 腾讯云控制台配置安全组
- 进入 腾讯云 CVM 控制台
- 找到你的实例 → 安全组 → 添加规则
- 放行你的应用端口(如 8080)
示例规则:
- 协议类型:TCP
- 端口:8080
- 源 IP:0.0.0.0/0(或限制为特定 IP)
2. 本地防火墙(如 firewalld 或 ufw)
CentOS(firewalld):
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
Ubuntu(ufw):
sudo ufw allow 8080
✅ 七、(可选)反向X_X(Nginx)
若想通过域名访问或使用 80 端口,可部署 Nginx 反向X_X。
1. 安装 Nginx
# Ubuntu
sudo apt install nginx -y
# CentOS
sudo yum install nginx -y
2. 配置反向X_X
编辑配置文件:
sudo vim /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;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
✅ 八、域名绑定与备案(可选)
- 将域名解析到服务器公网 IP
- 若在我国大陆使用 80/443 端口,需完成 ICP 备案
✅ 九、总结:关键点
| 步骤 | 内容 |
|---|---|
| ✅ 环境 | JDK 安装正确 |
| ✅ 部署 | jar 包上传并测试运行 |
| ✅ 持久化 | 使用 systemd 服务管理 |
| ✅ 自启 | systemctl enable myapp |
| ✅ 日志 | journalctl 查看输出 |
| ✅ 安全组 | 腾讯云控制台放行端口 |
| ✅ 防火墙 | 本地防火墙开放端口 |
| ✅ 域名 | Nginx + 域名解析(可选) |
🚀 附加建议
- 使用
.env或外部配置文件管理数据库连接等敏感信息 - 使用
nohup或screen仅适合临时测试,不推荐生产 - 生产环境建议使用非 root 用户运行 Java 应用
- 结合 Jenkins/GitLab CI 实现自动化部署(进阶)
如有具体项目结构或框架(如 Spring Boot、Tomcat WAR 包等),可提供更详细指导。欢迎补充细节!
秒懂云