从零到一:在腾讯云服务器上构建并上线你的首个Spring Boot应用

从零到一:在腾讯云服务器上构建并上线你的首个Spring Boot应用 1. 腾讯云服务器选购与基础配置第一次接触云服务器时面对各种配置选项可能会感到无从下手。腾讯云提供了多种规格的服务器对于个人博客或小型工具项目来说1核2GB内存的配置就完全够用了。学生用户可以通过校园认证享受优惠价格最低配置每月仅需几十元。购买完成后建议选择CentOS 7.6或8.2版本作为操作系统这两个版本在兼容性和稳定性方面表现良好。在控制台的实例页面可以看到服务器的公网IP这是后续访问服务的关键。我刚开始使用时经常找不到这个IP后来发现它就显示在实例列表的最显眼位置。安全组配置是新手最容易忽略的环节。需要开放22端口(SSH)、80端口(HTTP)、443端口(HTTPS)以及你的Spring Boot应用使用的端口默认8080。记得设置仅允许特定IP访问22端口这样可以有效防止暴力破解。我就曾因为没做这个设置导致服务器不断收到登录尝试的警报。2. 服务器登录与环境检查登录服务器推荐使用SSH工具Windows系统可以用PuTTY或XshellMac用户直接使用终端即可。第一次登录时可能会遇到密钥确认的提示输入yes继续即可。如果遇到连接超时通常是安全组没开放22端口导致的。登录成功后建议先执行几个基础命令检查系统状态# 查看系统版本 cat /etc/redhat-release # 查看磁盘空间 df -h # 查看内存使用情况 free -m系统更新是保证安全的重要步骤但新手常会忘记# CentOS 7 sudo yum update -y # CentOS 8 sudo dnf update -y我建议在操作前先创建一个普通用户并赋予sudo权限避免直接使用root账户操作# 创建用户 adduser devuser # 设置密码 passwd devuser # 赋予sudo权限 usermod -aG wheel devuser3. Java环境与MySQL安装配置3.1 JDK安装Spring Boot项目需要JDK环境推荐使用OpenJDK 11# CentOS 7 sudo yum install -y java-11-openjdk-devel # CentOS 8 sudo dnf install -y java-11-openjdk-devel验证安装是否成功java -version环境变量配置也很重要编辑/etc/profile文件在末尾添加export JAVA_HOME/usr/lib/jvm/java-11-openjdk export PATH$PATH:$JAVA_HOME/bin然后执行source /etc/profile使配置生效。我曾经因为忘记执行这一步导致java命令始终找不到排查了半天才发现问题。3.2 MySQL安装与配置MySQL是大多数Web项目的标配安装步骤如下# 添加MySQL Yum源 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # 安装MySQL服务 sudo yum install -y mysql-community-server # 启动服务 sudo systemctl start mysqld # 设置开机启动 sudo systemctl enable mysqld安装完成后需要获取临时密码sudo grep temporary password /var/log/mysqld.log使用临时密码登录后修改密码ALTER USER rootlocalhost IDENTIFIED BY 你的新密码;MySQL 8.0默认密码策略要求包含大小写字母、数字和特殊字符。如果只是测试环境想使用简单密码可以修改密码策略# 查看密码策略 SHOW VARIABLES LIKE validate_password%; # 修改策略测试环境适用 SET GLOBAL validate_password.policyLOW; SET GLOBAL validate_password.length4;最后别忘了设置远程访问权限CREATE USER 用户名% IDENTIFIED BY 密码; GRANT ALL PRIVILEGES ON *.* TO 用户名%; FLUSH PRIVILEGES;4. Spring Boot项目打包与部署4.1 本地项目打包在IDE中确保application.properties或application.yml配置正确# 生产环境配置 spring.profiles.activeprod # 数据库连接 spring.datasource.urljdbc:mysql://服务器IP:3306/数据库名 spring.datasource.username用户名 spring.datasource.password密码 # 服务器端口 server.port8080使用Maven打包mvn clean package -DskipTests打包完成后会在target目录生成一个.jar文件。我第一次打包时遇到了测试失败的问题加上-DskipTests参数跳过了测试。4.2 文件上传与运行推荐使用scp命令上传文件比图形化工具更高效scp target/你的项目.jar 用户名服务器IP:/home/用户名/登录服务器后可以使用nohup让应用在后台运行nohup java -jar 你的项目.jar app.log 21 查看应用日志tail -f app.log如果想在应用崩溃时自动重启可以编写一个简单的shell脚本#!/bin/bash while true do java -jar 你的项目.jar app.log 21 sleep 10 done然后使用nohup运行这个脚本nohup ./restart.sh 5. 服务优化与维护5.1 使用Nginx反向代理直接暴露8080端口不够优雅使用Nginx做反向代理# 安装Nginx sudo yum install -y nginx # 启动服务 sudo systemctl start nginx配置/etc/nginx/conf.d/yourdomain.confserver { listen 80; server_name 你的域名或IP; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }重载Nginx配置sudo nginx -s reload5.2 配置HTTPS申请SSL证书并配置Nginxserver { listen 443 ssl; server_name 你的域名; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:8080; } }5.3 系统监控与维护安装基础监控工具sudo yum install -y htop设置日志轮转防止日志文件过大sudo yum install -y logrotate创建/etc/logrotate.d/yourapp文件/home/用户名/app.log { daily rotate 7 compress missingok notifempty }定期执行系统维护# 清理旧内核 sudo package-cleanup --oldkernels --count1 # 清理缓存 sudo yum clean all