在腾讯云服务器(Linux 环境)上持久化部署 Java 项目,通常是指将 Java Web 应用(如 Spring Boot、Java EE 项目等)部署为长期运行的服务,并确保其在系统重启或崩溃后仍能自动恢复。以下是完整的部署流程和最佳实践。
✅ 一、准备工作
1. 购买并登录腾讯云服务器
- 登录 腾讯云控制台
- 购买 CVM 实例(推荐:CentOS 7+/Ubuntu 20.04+)
- 获取公网 IP 和登录凭证(密码或密钥)
使用 SSH 登录:
ssh root@your-server-ip
✅ 二、环境搭建
1. 安装 JDK(以 OpenJDK 为例)
Ubuntu/Debian:
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
CentOS/RHEL:
sudo yum install java-17-openjdk-devel -y
java -version
推荐使用 JDK 8 / 11 / 17,根据项目需求选择。
2. 安装并配置防火墙(开放端口)
例如你的 Java 项目运行在 8080 端口:
# Ubuntu 使用 ufw
sudo ufw allow 8080
# CentOS 使用 firewalld
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
同时在腾讯云 安全组规则 中放行对应端口(非常重要!)
✅ 三、上传 Java 项目
方式 1:上传 JAR 包(推荐用于 Spring Boot)
将本地打包好的 app.jar 上传到服务器:
scp app.jar root@your-server-ip:/root/app/
方式 2:使用 Git 拉取代码 + Maven 构建
git clone https://gitee.com/your-repo/java-project.git
cd java-project
mvn clean package -DskipTests
cp target/app.jar /opt/app/
✅ 四、持久化运行 Java 项目(关键步骤)
为了让 Java 程序在后台持续运行且开机自启,推荐使用 systemd 服务。
创建 systemd 服务文件
sudo vim /etc/systemd/system/myapp.service
写入以下内容(根据实际情况修改):
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar /opt/app/app.jar
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
启动并设置开机自启
# 重载 systemd 配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start myapp
# 设置开机自启
sudo systemctl enable myapp
# 查看状态
sudo systemctl status myapp
✅ 五、查看日志
# 查看实时日志
sudo journalctl -u myapp.service -f
# 查看最近的日志
sudo journalctl -u myapp.service --since "1 hour ago"
✅ 六、可选优化
1. 使用 Nginx 反向X_X(推荐)
安装 Nginx:
sudo apt install nginx # Ubuntu
sudo yum install nginx # CentOS
配置反向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 ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
2. 域名 + HTTPS(使用 Let’s Encrypt)
使用 Certbot 配置免费 SSL:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
✅ 七、常用命令总结
| 功能 | 命令 |
|---|---|
| 启动服务 | 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 |
✅ 注意事项
- 不要直接用
java -jar在前台运行,容易被中断。 - 使用
systemd是 Linux 下最标准的守护进程管理方式。 - 确保 安全组 放行了 80、443、8080 等端口。
- 生产环境建议创建非 root 用户运行 Java 应用,提高安全性。
- 可结合 Jenkins、Docker 进一步自动化部署(进阶)。
✅ 示例目录结构
/opt/app/
├── app.jar
└── config/ # 配置文件(application.yml 等)
如有需要,可以进一步集成 Docker 或 Jenkins 自动部署流水线。
如果你提供具体项目类型(如 Spring Boot、Tomcat WAR、多模块 Maven 项目等),我可以给出更详细的部署脚本。欢迎补充!
轻量云Cloud