从零到一:在腾讯云服务器上全栈部署Spring Boot后端与Vue前端
·
1. 腾讯云服务器选购与基础配置
第一次部署全栈项目到云服务器时,我踩过不少坑。记得当时为了省几十块钱选了1核1G的配置,结果项目一跑就崩。后来才明白,2核4G是最适合新手起步的配置,既能流畅运行Spring Boot和Vue,又不会造成资源浪费。
在腾讯云控制台选购时,注意这几个关键点:
- 地域选择:优先选离你用户群体最近的机房,比如华南地区选广州
- 镜像版本:CentOS 7.6/7.9最稳定,实测与各类开发工具兼容性最好
- 安全组设置:提前放行80(HTTP)、443(HTTPS)、22(SSH)、8080(Spring Boot常用端口)
拿到服务器后第一件事不是急着部署,而是做好基础防护:
# 修改默认SSH端口(降低暴力破解风险)
vim /etc/ssh/sshd_config
# 找到Port 22改为其他端口如5822
systemctl restart sshd
# 添加新用户并赋予sudo权限(避免直接使用root)
adduser deployer
passwd deployer
usermod -aG wheel deployer
2. 开发环境高效配置指南
很多教程会教你一个个手动安装环境,其实有更高效的做法。我推荐使用自动化脚本完成基础环境搭建,这是我积累的万能环境初始化脚本:
#!/bin/bash
# JDK安装(自动识别最新版本)
JDK_VERSION="jdk-8u381-linux-x64"
wget https://repo.huaweicloud.com/java/jdk/8u381-b09/$JDK_VERSION.tar.gz
tar -zxvf $JDK_VERSION.tar.gz -C /usr/local/
echo "export JAVA_HOME=/usr/local/${JDK_VERSION%-linux-x64}" >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
# Maven安装
MAVEN_VERSION="3.9.6"
wget https://dlcdn.apache.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz
tar -zxvf apache-maven-*.tar.gz -C /usr/local/
ln -s /usr/local/apache-maven-$MAVEN_VERSION /usr/local/maven
echo 'export MAVEN_HOME=/usr/local/maven' >> /etc/profile
echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> /etc/profile
# Node.js安装(包含npm)
curl -fsSL https://rpm.nodesource.com/setup_18.x | bash -
yum install -y nodejs
传输文件时,比起Xftp我更推荐用rsync命令,它能自动同步差异文件:
# 本地到服务器的增量同步(忽略node_modules)
rsync -avz --exclude='node_modules' ./vue-project root@your-server-ip:/home/deployer/
3. Spring Boot项目生产级部署
直接java -jar运行虽然简单,但在生产环境远远不够。分享几个实战经验:
1. 日志管理方案
# 使用logrotate自动分割日志
sudo vim /etc/logrotate.d/myapp
写入以下配置:
/home/deployer/app/logs/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
copytruncate
}
2. 服务化部署(Systemd)
sudo vim /etc/systemd/system/myapp.service
服务文件配置示例:
[Unit]
Description=My Spring Boot App
After=syslog.target
[Service]
User=deployer
ExecStart=/usr/bin/java -jar /home/deployer/app/myapp.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
EnvironmentFile=/home/deployer/app/config.env
[Install]
WantedBy=multi-user.target
3. 健康检查与监控 在application.properties中添加:
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=health,metrics,info
4. Vue项目性能优化部署
Vue项目部署不只是npm run build那么简单,我总结出三个优化层级:
1. 构建阶段优化
// vue.config.js
module.exports = {
chainWebpack: config => {
config.optimization.splitChunks({
chunks: 'all',
maxSize: 244 * 1024, // 拆分包大小
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
}
}
})
}
}
2. Nginx深度配置
server {
listen 80;
server_name your-domain.com;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
location / {
root /home/deployer/app/dist;
index index.html;
try_files $uri $uri/ /index.html;
# 缓存控制
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 1y;
add_header Cache-Control "public, no-transform";
}
}
# API反向代理
location /api {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. CDN加速实践 将静态资源上传至腾讯云COS并配置CDN,修改vue.config.js:
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? 'https://your-cdn-domain.com/'
: '/'
}
5. 全链路监控与排错
部署完成后,这套监控组合拳能帮你快速定位问题:
1. 实时日志查看
# 同时监控Spring Boot和Nginx日志
multitail -cS java /var/log/nginx/access.log -cS apache /var/log/nginx/error.log -cS spring /home/deployer/app/logs/application.log
2. 端口检测脚本
#!/bin/bash
check_port() {
netstat -tlnp | grep ":$1"
}
check_port 80 # Nginx
check_port 8080 # Spring Boot
check_port 22 # SSH
3. 性能瓶颈分析
# 查看CPU占用最高的Java线程
top -H -p $(pgrep -f java)
# 生成线程转储
jstack -l $(pgrep -f java) > thread_dump.log
记得第一次成功部署时,我在Nginx配置里漏了个分号,排查了整整三小时。现在养成了配置检查清单:
- [ ] Nginx语法检查:
nginx -t - [ ] Spring Boot启动参数:
java -jar --debug app.jar - [ ] 文件权限检查:
ls -l /home/deployer/app - [ ] 防火墙状态:
firewall-cmd --list-all
更多推荐
所有评论(0)