logo

前后端分离项目部署到云服务器、宝塔(前端vue、后端springboot)详细教程

作者:狼烟四起2025.09.26 21:40浏览量:2

简介:本文详细介绍如何将前后端分离项目(前端Vue、后端Spring Boot)部署到云服务器,并使用宝塔面板进行高效管理,涵盖环境准备、代码上传、依赖安装、服务启动等关键步骤。

一、前期准备与云服务器选择

1.1 云服务器选购建议

选择云服务器时需关注以下核心参数:

  • CPU与内存:中小型项目建议2核4G配置,高并发场景需4核8G以上
  • 带宽配置:初期1-2Mbps足够,流量增长后建议升级至5Mbps
  • 操作系统:推荐CentOS 7.x/8.x或Ubuntu 20.04 LTS,稳定性最佳
  • 安全组配置:开放80(HTTP)、443(HTTPS)、22(SSH)、8080(后端端口)等必要端口

1.2 服务器环境初始化

通过SSH连接服务器后执行:

  1. # 更新系统包
  2. sudo yum update -y # CentOS
  3. sudo apt update -y # Ubuntu
  4. # 安装基础工具
  5. sudo yum install -y wget curl unzip # CentOS
  6. sudo apt install -y wget curl unzip # Ubuntu

二、宝塔面板安装与基础配置

2.1 宝塔安装流程

  1. # CentOS安装命令
  2. yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
  3. # Ubuntu安装命令
  4. wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

安装完成后记录面板地址、用户名和密码。

2.2 面板环境配置

登录宝塔后:

  1. 软件商店安装:

    • Nginx 1.20+(前端服务)
    • MySQL 5.7+/MariaDB 10.5+(数据库
    • Java JDK 1.8/11(后端环境)
    • Node.js 14.x+(前端构建)
    • Redis 6.0+(缓存服务,可选)
  2. 安全设置

    • 修改默认SSH端口(建议2222)
    • 配置防火墙规则
    • 安装宝塔防火墙插件

三、项目部署实施

3.1 前端Vue项目部署

  1. 构建生产包

    1. # 在项目根目录执行
    2. npm install
    3. npm run build

    生成dist目录,包含静态资源文件。

  2. Nginx配置

    1. server {
    2. listen 80;
    3. server_name yourdomain.com;
    4. root /www/wwwroot/your-frontend;
    5. index index.html;
    6. location / {
    7. try_files $uri $uri/ /index.html;
    8. }
    9. # API代理配置
    10. location /api {
    11. proxy_pass http://127.0.0.1:8080;
    12. proxy_set_header Host $host;
    13. proxy_set_header X-Real-IP $remote_addr;
    14. }
    15. }
  3. 文件上传

  • 通过宝塔文件管理将dist内容上传至/www/wwwroot/your-frontend
  • 设置目录权限:chown -R www:www /www/wwwroot/your-frontend

3.2 后端Spring Boot部署

  1. 打包应用

    1. <!-- Maven配置示例 -->
    2. <build>
    3. <plugins>
    4. <plugin>
    5. <groupId>org.springframework.boot</groupId>
    6. <artifactId>spring-boot-maven-plugin</artifactId>
    7. <configuration>
    8. <executable>true</executable>
    9. </configuration>
    10. </plugin>
    11. </plugins>
    12. </build>

    执行mvn clean package生成target/your-app.jar

  2. Java环境优化

    1. # 设置JVM参数
    2. echo "JAVA_OPTS=\"-Xms512m -Xmx1024m -XX:+UseG1GC\"" >> /etc/profile
    3. source /etc/profile
  3. 服务管理配置
    创建/etc/systemd/system/springboot.service
    ```ini
    [Unit]
    Description=Spring Boot Application
    After=syslog.target network.target

[Service]
User=root
ExecStart=/usr/bin/java -jar /path/to/your-app.jar
SuccessExitStatus=143
Restart=always

[Install]
WantedBy=multi-user.target

  1. 4. **数据库配置**:
  2. ```sql
  3. -- MySQL示例
  4. CREATE DATABASE yourdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  5. CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
  6. GRANT ALL PRIVILEGES ON yourdb.* TO 'appuser'@'localhost';
  7. FLUSH PRIVILEGES;

四、高级配置与优化

4.1 HTTPS配置

  1. 通过宝塔申请Let’s Encrypt证书
  2. 修改Nginx配置:
    1. server {
    2. listen 443 ssl;
    3. ssl_certificate /path/to/cert.pem;
    4. ssl_certificate_key /path/to/key.pem;
    5. # ...其他配置
    6. }

4.2 性能优化方案

  • 前端优化

    • 启用Gzip压缩
    • 配置CDN加速
    • 实施路由懒加载
  • 后端优化

    • 连接池配置(HikariCP示例):
      1. spring:
      2. datasource:
      3. hikari:
      4. maximum-pool-size: 20
      5. connection-timeout: 30000
    • 缓存策略(Redis集成)

五、运维监控体系

5.1 日志管理方案

  1. Spring Boot日志配置

    1. # application.properties
    2. logging.file.name=/var/log/springboot/app.log
    3. logging.level.root=INFO
  2. Nginx日志轮转

    1. # /etc/logrotate.d/nginx
    2. /var/log/nginx/*.log {
    3. daily
    4. missingok
    5. rotate 14
    6. compress
    7. delaycompress
    8. notifempty
    9. create 0640 www www
    10. sharedscripts
    11. postrotate
    12. [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
    13. endscript
    14. }

5.2 监控告警设置

  1. 宝塔监控插件

    • 配置CPU/内存阈值告警
    • 设置磁盘空间预警
  2. Prometheus+Grafana方案(进阶):

    • 配置Micrometer暴露指标
    • 设置关键业务指标看板

六、常见问题解决方案

6.1 跨域问题处理

后端配置示例:

  1. @Configuration
  2. public class CorsConfig implements WebMvcConfigurer {
  3. @Override
  4. public void addCorsMappings(CorsRegistry registry) {
  5. registry.addMapping("/**")
  6. .allowedOrigins("*")
  7. .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
  8. .allowedHeaders("*")
  9. .allowCredentials(true)
  10. .maxAge(3600);
  11. }
  12. }

6.2 端口冲突解决

  1. 检查占用端口:

    1. netstat -tulnp | grep :8080
  2. 修改Spring Boot默认端口:

    1. server.port=8081

七、持续集成建议

  1. GitLab CI/CD配置示例
    ```yaml
    stages:
    • build
    • deploy

frontend_build:
stage: build
image: node:14
script:

  1. - cd frontend
  2. - npm install
  3. - npm run build

artifacts:
paths:

  1. - frontend/dist

backend_deploy:
stage: deploy
image: maven:3.6-jdk-11
script:

  1. - cd backend
  2. - mvn clean package
  3. - scp target/app.jar root@your-server:/opt/app/

only:

  1. - master

```

  1. Jenkins自动化部署
    • 配置SSH凭据
    • 创建Pipeline项目
    • 设置构建后操作(重启服务)

八、安全加固措施

  1. 服务器安全

    • 禁用root远程登录
    • 配置Fail2Ban防暴力破解
    • 定期更新系统补丁
  2. 应用安全

    • 启用CSRF保护
    • 实施JWT鉴权
    • 敏感数据加密存储

九、性能测试方案

  1. JMeter测试示例

    • 创建线程组(100用户,5秒启动)
    • 添加HTTP请求采样器
    • 配置监听器(聚合报告)
  2. 压测指标参考

    • 平均响应时间<500ms
    • 错误率<0.1%
    • 吞吐量达标计算:TPS = 并发数 / 平均响应时间

十、扩展性设计建议

  1. 微服务架构演进

    • 服务拆分原则(按业务能力)
    • API网关选型(Spring Cloud Gateway)
    • 服务注册发现(Nacos/Eureka)
  2. 容器化部署方案

    • Dockerfile编写规范
    • Kubernetes部署策略
    • 服务网格(Istio)实施路径

通过以上完整部署方案,开发者可以系统化地完成从开发环境到生产环境的迁移。建议首次部署后进行全链路压测,根据监控数据持续优化配置参数。对于中大型项目,建议逐步引入CI/CD流水线和容器编排技术,提升运维效率。

相关文章推荐

发表评论

活动