将本地 Java 项目部署到腾讯云轻量应用服务器(Lightweight Application Server, LAS)是一个常见且高效的选择。以下是为新手准备的完整步骤指南,涵盖从准备到上线的关键环节:
✅ 一、前期准备
1. 购买并配置轻量应用服务器
- 登录 腾讯云官网 → 进入「轻量应用服务器」→ 创建实例。
- 推荐配置(适合学习/小型项目):
- 地域:选择离你最近的(如
上海) - 镜像:Ubuntu 22.04 LTS 或 CentOS 7/8(Ubuntu 更友好,推荐)
- 带宽:3~5 Mbps(根据访问量调整)
- 系统盘:20GB+
- 设置强密码或绑定 SSH 密钥(务必开启密钥登录,更安全)
- 地域:选择离你最近的(如
💡 提示:首次登录建议使用「远程连接」功能中的 VNC 或 SSH 客户端(如 Xshell、Termius)。
✅ 二、在服务器上安装基础环境
通过 SSH 登录服务器后执行以下命令(以 Ubuntu 为例):
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装 JDK(以 OpenJDK 17 为例,与你的项目版本一致)
sudo apt install openjdk-17-jdk -y
java -version # 验证安装
# 安装 Maven(若项目使用 Maven 构建)
sudo apt install maven -y
mvn -v
# 安装 Nginx(用于反向X_X + 静态资源托管,可选但推荐)
sudo apt install nginx -y
# 安装 Git(方便拉取代码)
sudo apt install git -y
📌 注意:请确保 JDK 版本与你本地开发时一致(查看
pom.xml中<maven.compiler.source>/<target>或.idea/misc.xml)。
✅ 三、上传项目代码
方法一:使用 Git 克隆(推荐)
# 在服务器创建目录
mkdir -p ~/my-java-app
cd ~/my-java-app
# 克隆你的项目(需提前将代码推送到 GitHub/Gitee/GitLab)
git clone https://github.com/your-username/your-repo.git .
方法二:SCP 传输(适合小项目)
# 本地电脑执行(替换路径和 IP)
scp -r /path/to/local/project root@<服务器IP>:~/my-java-app/
✅ 四、编译打包项目
在项目根目录执行:
# 清理并打包(生成 target/*.jar)
mvn clean package -DskipTests
# 确认生成的 JAR 文件
ls target/*.jar
⚠️ 若项目使用 Spring Boot,确保主类正确(含
@SpringBootApplication),且application.yml中数据库/Redis 等配置已适配服务器环境(见下文)。
✅ 五、配置生产环境变量
1. 修改配置文件
编辑 src/main/resources/application-prod.yml 或直接在运行参数中指定:
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC
username: your_user
password: your_password
# 其他配置...
🔐 安全建议:
- 不要将密码硬编码在代码中!改用环境变量或配置中心。
- 示例:启动时传参
java -jar app.jar --spring.datasource.password=${DB_PASSWORD}或在 shell 脚本中导出:
export DB_PASSWORD="your_secure_password"
2. 安装 MySQL(如需本地数据库)
sudo apt install mysql-server -y
sudo systemctl start mysql
sudo mysql_secure_installation # 按提示设置 root 密码
然后创建数据库和用户授权。
🌐 若使用云数据库 RDS(推荐生产环境):
- 购买 RDS for MySQL → 获取内网/网络地址、账号密码
- 在防火墙中开放对应端口(默认 3306)
✅ 六、启动 Java 应用
方案 A:后台运行(简单场景)
nohup java -jar target/your-app.jar > app.log 2>&1 &
echo $! > app.pid # 保存进程 ID
tail -f app.log # 实时查看日志
方案 B:使用 Systemd 管理(推荐,可开机自启)
- 创建服务文件:
sudo nano /etc/systemd/system/myapp.service -
写入内容(替换路径和参数):
[Unit] Description=My Spring Boot App After=network.target [Service] User=root WorkingDirectory=/root/my-java-app ExecStart=/usr/bin/java -jar /root/my-java-app/target/your-app.jar Restart=always Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" [Install] WantedBy=multi-user.target - 启用并启动:
sudo systemctl daemon-reload sudo systemctl enable myapp sudo systemctl start myapp sudo systemctl status myapp
✅ 七、配置 Nginx 反向X_X(可选但强烈建议)
让域名访问更专业,并支持 HTTPS。
1. 申请域名 & SSL 证书(免费)
- 在腾讯云「域名注册」购买域名(如
example.com) - 使用 Let’s Encrypt 免费证书(通过
certbot):sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d example.com -d www.example.com
2. 配置 Nginx 站点
sudo nano /etc/nginx/sites-available/example.com
内容示例:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态资源缓存(如有前端)
location /static/ {
alias /root/my-java-app/static/;
expires 7d;
}
}
3. 启用站点并重启 Nginx
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t # 检查配置
sudo systemctl restart nginx
✅ 八、开放防火墙端口
轻量服务器默认只开放 22(SSH)、80、443。若你的 Java 应用直接暴露端口(不推荐),需额外放行:
# 腾讯云控制台操作(推荐):
# 进入「轻量应用服务器」→ 点击实例 → 「防火墙规则」→ 添加规则:
# 协议:TCP | 端口:8080 | 来源:0.0.0.0/0(或限制 IP)
# 或使用 ufw(Linux 自带)
sudo ufw allow 8080/tcp
sudo ufw reload
✅ 最佳实践:永远不要直接暴露 Java 端口给公网!用 Nginx 反向X_X到
127.0.0.1:8080。
✅ 九、验证部署成功
- 浏览器访问:
https://your-domain.com - 查看日志:
sudo journalctl -u myapp -f # 或 tail -f /root/my-java-app/app.log - 检查进程:
ps aux | grep java netstat -tlnp | grep :8080
🆘 常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
启动报错 Port 8080 already in use |
端口被占用 | lsof -i:8080 查进程 → kill -9 <PID> |
| 数据库连不上 | 防火墙/RDS 白名单未配 | 检查 RDS 白名单、MySQL 监听地址(bind-address = 0.0.0.0) |
| 中文乱码 | JVM 编码未设 | 启动加 -Dfile.encoding=UTF-8 |
| 内存溢出 | Heap 太小 | 加 -Xms512m -Xmx1g |
📦 进阶建议(后续优化)
- 使用 Docker 容器化部署(更利于迁移和扩展)
- 接入 CI/CD(如 GitHub Actions + 自动部署脚本)
- 监控:Prometheus + Grafana 或 腾讯云云监控
- 备份:定期备份数据库 + 代码快照
需要我为你生成一个完整的 deploy.sh 自动化脚本模板,或提供 Spring Boot + Vue 前后端分离项目的具体配置示例吗?欢迎告诉我你的技术栈细节 😊
ECLOUD博客