腾讯云服务器部署 Spring Boot 项目完整指南

📅 2026-06-05 🏷️ 云服务器

一、前言

对于开发者来说,将自己开发的项目部署到云服务器上是必备技能。腾讯云作为国内主流的云服务商,提供了稳定可靠的云服务器产品。

本文将从零开始,详细讲解如何在腾讯云服务器上部署 Spring Boot 项目,包括环境搭建、项目打包、部署运行、域名配置、HTTPS 配置等完整流程,适合初学者参考。

二、服务器准备

2.1 选购云服务器

首先需要在腾讯云官网购买一台云服务器。对于个人项目或小型应用,推荐配置:

  • CPU:2核
  • 内存:4GB
  • 系统盘:40GB SSD
  • 带宽:5Mbps
  • 操作系统:CentOS 7.x 或 Ubuntu 20.04

提示:新用户通常有优惠活动,可以关注腾讯云的新用户特惠活动,性价比很高。

2.2 安全组配置

购买服务器后,需要在安全组中开放必要的端口:

  • 22 端口:SSH 远程登录
  • 80 端口:HTTP 访问
  • 443 端口:HTTPS 访问
  • 3306 端口:MySQL 数据库(如需要远程访问)
  • 8080 端口:Spring Boot 默认端口(或你项目使用的端口)
  • 8888 端口:宝塔面板(如使用宝塔)

2.3 连接服务器

使用 SSH 工具连接服务器,推荐工具:

  • Windows:Xshell、Putty、FinalShell
  • Mac:自带终端、iTerm2

连接命令:

ssh root@你的服务器IP

三、环境搭建

3.1 安装 JDK

Spring Boot 项目需要 Java 运行环境。以 JDK 8 为例:

# 查看是否已安装Java
java -version

# CentOS 安装 OpenJDK 8
yum install -y java-1.8.0-openjdk-devel

# Ubuntu 安装 OpenJDK 8
apt update
apt install -y openjdk-8-jdk

验证安装:

java -version
javac -version

3.2 安装 MySQL

以 MySQL 8.0 为例,CentOS 安装步骤:

# 下载MySQL Yum源
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# 安装源
rpm -ivh mysql80-community-release-el7-3.noarch.rpm

# 安装MySQL
yum install -y mysql-server

# 启动MySQL
systemctl start mysqld

# 设置开机自启
systemctl enable mysqld

获取初始密码并修改:

# 查看初始密码
grep 'temporary password' /var/log/mysqld.log

# 登录MySQL
mysql -u root -p

# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

# 允许远程访问(可选)
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3.3 安装宝塔面板(推荐)

宝塔面板是一款服务器管理面板,可以大大简化服务器运维。安装命令:

# CentOS 安装命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装完成后,会显示面板地址、用户名和密码。通过浏览器访问面板地址即可登录管理。

四、项目打包

4.1 修改配置文件

部署前需要修改项目的配置文件,将数据库连接、端口等改为服务器环境的配置:

# 服务器端口
server.port=8080

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=你的数据库密码

4.2 Maven 打包

在项目根目录执行打包命令:

# 跳过测试打包
mvn clean package -DskipTests

# 或者执行完整测试后打包
mvn clean package

打包完成后,在 target 目录下会生成 jar 包,如:app-upgrade-server-1.0.0.jar

4.3 上传到服务器

使用 FTP 工具或 scp 命令将 jar 包上传到服务器:

# scp 命令上传
scp target/app-upgrade-server-1.0.0.jar root@你的服务器IP:/www/wwwroot/app/

五、项目部署

5.1 直接运行

最简单的方式是直接运行 jar 包:

java -jar app-upgrade-server-1.0.0.jar

但这种方式关闭 SSH 连接后程序就会停止,只适合临时测试。

5.2 后台运行

使用 nohup 命令让程序在后台运行:

nohup java -jar app-upgrade-server-1.0.0.jar > app.log 2>&1 &

参数说明:

  • nohup:不挂断运行
  • > app.log:将输出重定向到 app.log 文件
  • 2>&1:将错误输出也重定向到标准输出
  • &:后台运行

5.3 查看运行状态

# 查看Java进程
ps -ef | grep java

# 查看日志
tail -f app.log

# 停止进程
kill -9 进程ID

5.4 编写启动脚本

为了方便管理,可以编写启动、停止、重启脚本:

#!/bin/bash
# 启动脚本 start.sh

APP_NAME=app-upgrade-server-1.0.0.jar
LOG_FILE=app.log

# 检查是否已运行
PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')
if [ -n "$PID" ]; then
    echo "应用已在运行,PID: $PID"
    exit 1
fi

# 启动应用
nohup java -jar $APP_NAME > $LOG_FILE 2>&1 &
echo "应用启动成功,PID: $!"
echo "日志文件: $LOG_FILE"
#!/bin/bash
# 停止脚本 stop.sh

APP_NAME=app-upgrade-server-1.0.0.jar

PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
    echo "应用未运行"
    exit 1
fi

echo "正在停止应用,PID: $PID"
kill -9 $PID
echo "应用已停止"

5.5 Systemd 服务(推荐)

使用 Systemd 管理服务,可以实现开机自启、自动重启等功能:

# 创建服务文件
vi /etc/systemd/system/app-upgrade.service

文件内容:

[Unit]
Description=App Upgrade Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/www/wwwroot/app
ExecStart=/usr/bin/java -jar app-upgrade-server-1.0.0.jar
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

常用命令:

# 启动服务
systemctl start app-upgrade

# 停止服务
systemctl stop app-upgrade

# 重启服务
systemctl restart app-upgrade

# 查看状态
systemctl status app-upgrade

# 设置开机自启
systemctl enable app-upgrade

# 查看日志
journalctl -u app-upgrade -f

六、域名配置

6.1 域名解析

在域名服务商处添加 A 记录,将域名指向服务器 IP:

  • 主机记录:@(主域名)或 www(www子域名)
  • 记录类型:A
  • 记录值:你的服务器 IP

6.2 Nginx 反向代理

使用 Nginx 做反向代理,可以通过域名直接访问,不需要加端口号:

server {
    listen 80;
    server_name yourdomain.com www.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;
    }
}

七、HTTPS 配置

7.1 申请 SSL 证书

可以在腾讯云申请免费的 SSL 证书,或者使用 Let's Encrypt 免费证书。

7.2 Nginx 配置 HTTPS

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;
    
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/private.key;
    
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    
    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;
    }
}

# HTTP 重定向到 HTTPS
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$server_name$request_uri;
}

八、常见问题

8.1 端口无法访问

检查以下几点:

  • 安全组是否开放了端口
  • 服务器防火墙是否开放了端口
  • 程序是否正常启动
  • 端口是否被占用

8.2 项目启动失败

查看日志文件,根据错误信息排查:

  • 数据库连接失败:检查数据库地址、用户名、密码
  • 端口被占用:更换端口或停止占用端口的程序
  • 内存不足:增加服务器内存或调整 JVM 参数

8.3 上传文件大小限制

Spring Boot 默认上传文件大小限制为 1MB,可以在配置文件中修改:

spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB

Nginx 也需要配置:

client_max_body_size 100M;

九、安全建议

  • 修改 SSH 默认端口,避免暴力破解
  • 使用密钥登录,禁用密码登录
  • 定期更新系统和软件
  • 数据库不要对外开放 3306 端口
  • 配置防火墙,只开放必要端口
  • 定期备份数据
  • 使用 HTTPS 加密传输

十、总结

本文详细介绍了在腾讯云服务器上部署 Spring Boot 项目的完整流程,包括服务器选购、环境搭建、项目打包、部署运行、域名配置、HTTPS 配置等内容。

对于初学者,建议使用宝塔面板来管理服务器,可以大大降低运维难度。部署过程中遇到问题时,多查看日志,根据错误信息逐步排查。

希望本文能帮助大家顺利完成项目部署。如有问题,欢迎在评论区交流讨论。