在腾讯云服务器的 Linux 环境下部署 Java 项目并实现持久化运行(即服务不随终端关闭而终止),通常涉及以下几个关键步骤。以下是详细的操作流程:
✅ 一、准备工作
1. 购买并登录腾讯云服务器
- 登录 腾讯云控制台
- 创建一台 CVM(云服务器),推荐选择:
- 操作系统:Ubuntu 20.04 / CentOS 7/8
- 安全组:开放
22(SSH)、80、443和你的应用端口(如8080)
使用 SSH 登录服务器:
ssh root@你的公网IP
✅ 二、安装必要环境
1. 更新系统包
# Ubuntu
sudo apt update && sudo apt upgrade -y
# CentOS
sudo yum update -y
2. 安装 Java(以 OpenJDK 为例)
# Ubuntu
sudo apt install openjdk-17-jdk -y
# CentOS
sudo yum install java-17-openjdk-devel -y
验证安装:
java -version
javac -version
建议使用 JDK 8/11/17,根据你的项目要求选择。
✅ 三、上传 Java 项目
方式1:上传 Jar 包(推荐 Spring Boot 项目)
假设你本地已打包好 myapp.jar:
使用 scp 命令上传:
scp myapp.jar root@你的公网IP:/root/
或使用 rz 命令(需先安装):
sudo apt install lrzsz -y # Ubuntu
sudo yum install lrzsz -y # CentOS
rz
方式2:从 Git 克隆代码并构建
git clone https://gitee.com/xxx/myproject.git
cd myproject
mvn clean package -DskipTests
cp target/*.jar ~/myapp.jar
✅ 四、持久化运行 Java 应用
Java 进程默认是前台运行,关闭终端后会中断。要实现持久化运行,推荐以下方式:
🔹 方法一:使用 nohup + &(简单轻量)
nohup java -jar myapp.jar > app.log 2>&1 &
说明:
nohup:忽略挂断信号,进程不会随终端退出而结束>:重定向输出到文件&:后台运行
查看进程:
ps aux | grep java
停止服务:
kill -9 $(pgrep -f myapp.jar)
⚠️ 缺点:无法自动重启,日志管理较弱。
🔹 方法二:使用 systemd(推荐,生产环境首选)
创建系统服务文件:
sudo vim /etc/systemd/system/myapp.service
写入以下内容(根据实际情况修改路径和用户):
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/java -jar /root/myapp.jar
Restart=always
StandardOutput=journal
StandardError=journal
WorkingDirectory=/root
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp.service # 开机自启
sudo systemctl start myapp.service # 启动服务
常用命令:
sudo systemctl status myapp # 查看状态
sudo systemctl stop myapp # 停止
sudo systemctl restart myapp # 重启
sudo journalctl -u myapp -f # 实时查看日志
✅ 优点:支持开机自启、崩溃自动重启、日志集成 journald。
🔹 方法三:使用 screen 或 tmux(临时调试用)
安装 screen:
sudo apt install screen -y
使用:
screen -S javaapp
java -jar myapp.jar
# 按 Ctrl+A, 再按 D 销毁会话(detach)
恢复会话:
screen -r javaapp
适合临时测试,不推荐生产环境。
✅ 五、配置防火墙和安全组
确保腾讯云控制台中:
- 安全组规则允许访问你的应用端口(如
8080) - 例如:添加入站规则,类型:自定义TCP,端口:8080,源:0.0.0.0/0
✅ 六、域名与反向(可选)
若想通过域名访问,可使用 Nginx 反向:
1. 安装 Nginx
sudo apt install nginx -y
2. 配置反向
sudo vim /etc/nginx/sites-available/myapp
内容示例:
server {
listen 80;
server_name yourdomain.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;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
✅ 七、其他建议
| 项目 | 建议 |
|---|---|
| 日志管理 | 使用 logback 或 log4j2 输出到文件,配合 logrotate |
| JVM 参数 | 添加内存限制:-Xms512m -Xmx1g |
| 监控 | 使用 top, htop, jstat, jstack |
| 自动部署 | 结合 Jenkins / GitHub Actions / Shell 脚本 |
✅ 总结:推荐完整流程
- 腾讯云购买 CVM
- SSH 登录,安装 Java
- 上传
.jar文件 - 使用
systemd创建服务实现持久化运行 - 配置安全组开放端口
- (可选)配置 Nginx + 域名
如果你提供具体的项目类型(如 Spring Boot、普通 Web、是否使用数据库等),我可以给出更定制化的部署脚本和配置。欢迎继续提问!
CLOUD技术博