从零到一:Spring Boot + Vue 全栈应用云端部署实战指南
1. 云服务器选购与环境初始化第一次部署全栈项目时我对着五花八门的云服务器配置看花了眼。其实对于中小型项目2核4G配置就足够跑Spring Boot和Vue应用了。建议选择Ubuntu 20.04 LTS系统长期支持版本更稳定。记得开通80(http)、443(https)和你的后端端口比如8282的安全组规则这个坑我踩过三次。登录服务器后先做两件基础事# 更新软件包列表 sudo apt update # 安装常用工具 sudo apt install -y vim git net-tools2. 后端环境搭建JDK与Redis2.1 JDK安装避坑指南Spring Boot需要JDK环境推荐安装OpenJDK 11sudo apt install -y openjdk-11-jdk验证安装时我发现个细节问题java -version如果显示Permission denied需要给/usr/lib/jvm目录赋权。安装后建议设置JAVA_HOME环境变量很多工具链依赖这个echo export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 ~/.bashrc2.2 Redis配置实战Redis作为缓存服务安装很简单sudo apt install -y redis-server但默认配置有两个隐患需要修改取消绑定127.0.0.1才能让外部访问设置requirepass增加安全性修改/etc/redis/redis.confbind 0.0.0.0 requirepass your_strong_password重启服务后记得测试连接redis-cli -h your_ip -a your_password3. 前端环境部署Node.js与Nginx3.1 Node.js版本管理Vue项目对Node版本敏感推荐用nvm管理curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm install 16.14.0安装后检查npm版本我遇到过镜像源问题npm config set registry https://registry.npmmirror.com3.2 Nginx编译安装技巧虽然apt能安装Nginx但自己编译更灵活。先安装依赖sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev下载最新稳定版解压后编译参数很关键./configure --prefix/usr/local/nginx --with-http_ssl_module --with-http_v2_module make sudo make install启动前建议把nginx加入系统服务否则每次重启都要手动启动sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx4. 前端项目打包与部署4.1 Vue项目打包优化在vue.config.js中要注意三个配置module.exports { publicPath: process.env.NODE_ENV production ? / : /, outputDir: dist, devServer: { proxy: { /api: { target: http://your_server_ip:8282, changeOrigin: true } } } }打包时使用生产模式npm run build生成的dist目录建议压缩后上传速度更快tar -czvf dist.tar.gz dist4.2 Nginx配置详解这是我的生产环境配置模板解决了Vue路由刷新404问题server { listen 80; server_name your_domain.com; location / { root /usr/local/src/myLibrary/dist; index index.html; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:8282/; proxy_set_header Host $host; proxy_connect_timeout 60s; proxy_read_timeout 60s; } }配置检查命令很有用nginx -t5. 后端Spring Boot部署实战5.1 项目打包注意事项在application-prod.yml中要确认spring: datasource: url: jdbc:mysql://localhost:3306/your_db?useSSLfalse username: your_username password: your_password redis: host: 127.0.0.1 password: your_redis_password打包时指定生产环境配置mvn clean package -Pprod5.2 服务守护与管理用systemd管理Spring Boot服务更可靠创建/etc/systemd/system/your_app.service[Unit] DescriptionYour Spring Boot App Aftersyslog.target [Service] Userroot ExecStart/usr/bin/java -jar /path/to/your/app.jar SuccessExitStatus143 [Install] WantedBymulti-user.target管理命令sudo systemctl daemon-reload sudo systemctl start your_app6. 全链路测试与排错部署完成后建议按这个顺序验证直接访问后端接口http://ip:8282/api/test测试静态文件http://ip/static/js/app.js检查代理转发浏览器F12查看/api请求是否转发到8282端口常见问题排查502错误检查后端是否启动404错误确认Nginx root路径正确跨域问题确保代理配置了changeOrigin日志查看技巧# Nginx访问日志 tail -f /usr/local/nginx/logs/access.log # Spring Boot日志 journalctl -u your_app -f7. 安全加固与性能调优生产环境必须做的安全措施配置HTTPS证书Lets Encrypt免费禁用Nginx版本信息显示设置Redis密码并限制IP访问配置MySQL远程访问白名单性能优化建议Nginx启用gzip压缩调整Tomcat连接池参数Redis配置合理的淘汰策略前端资源添加长期缓存最后提醒所有密码不要写在代码里可以用环境变量管理。我在第一次部署时因为把数据库密码硬编码在配置文件中导致服务器被入侵这个教训值得大家警惕