logo

AI全栈开发实战:Ubuntu云服务器部署Spring+Vue+MySQL指南

作者:Nicky2025.09.16 19:06浏览量:0

简介:本文详细阐述在Ubuntu云服务器上部署Spring Boot后端、Vue前端与MySQL数据库的全栈开发流程,涵盖环境配置、依赖安装、项目构建及安全优化等关键步骤,为AI全栈开发者提供一站式技术指南。

一、环境准备与服务器初始化

1.1 云服务器选择与基础配置

推荐使用Ubuntu 22.04 LTS作为操作系统,其长期支持特性可保障环境稳定性。服务器配置建议:2核4G内存起步,带宽根据实际访问量选择(初期5Mbps足够)。创建实例时需开放22(SSH)、80(HTTP)、443(HTTPS)、3306(MySQL)等关键端口。

1.2 基础环境搭建

  1. # 更新系统软件包
  2. sudo apt update && sudo apt upgrade -y
  3. # 安装必要工具
  4. sudo apt install -y git curl wget unzip
  5. # 配置SSH安全(禁用root登录,修改默认端口)
  6. sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
  7. sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
  8. sudo systemctl restart sshd

二、MySQL数据库部署与优化

2.1 数据库安装与配置

  1. # 安装MySQL 8.0
  2. sudo apt install -y mysql-server
  3. # 安全配置(设置root密码,移除匿名用户)
  4. sudo mysql_secure_installation
  5. # 创建专用用户与数据库
  6. sudo mysql -u root -p <<EOF
  7. CREATE DATABASE ai_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  8. CREATE USER 'ai_user'@'%' IDENTIFIED BY 'SecurePassword123!';
  9. GRANT ALL PRIVILEGES ON ai_platform.* TO 'ai_user'@'%';
  10. FLUSH PRIVILEGES;
  11. EOF

2.2 性能优化配置

修改/etc/mysql/mysql.conf.d/mysqld.cnf

  1. [mysqld]
  2. innodb_buffer_pool_size = 1G # 占内存50%-70%
  3. max_connections = 200
  4. query_cache_size = 64M

三、Spring Boot后端部署

3.1 Java环境配置

  1. # 安装OpenJDK 17
  2. sudo apt install -y openjdk-17-jdk
  3. # 配置环境变量
  4. echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
  5. echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
  6. source ~/.bashrc

3.2 项目构建与部署

  1. # 创建部署目录
  2. sudo mkdir -p /opt/ai-backend
  3. sudo chown -R $USER:$USER /opt/ai-backend
  4. # 使用Maven构建(假设项目已存在)
  5. cd /path/to/spring-project
  6. mvn clean package -DskipTests
  7. # 创建系统服务(使用systemd)
  8. sudo bash -c 'cat > /etc/systemd/system/ai-backend.service <<EOF
  9. [Unit]
  10. Description=AI Platform Backend
  11. After=syslog.target network.target mysql.service
  12. [Service]
  13. User=$USER
  14. WorkingDirectory=/opt/ai-backend
  15. ExecStart=/usr/bin/java -jar /path/to/project/target/app.jar
  16. SuccessExitStatus=143
  17. Restart=always
  18. [Install]
  19. WantedBy=multi-user.target
  20. EOF'
  21. # 启动服务
  22. sudo systemctl daemon-reload
  23. sudo systemctl start ai-backend
  24. sudo systemctl enable ai-backend

四、Vue前端部署方案

4.1 Node.js环境配置

  1. # 使用nvm安装最新LTS版本
  2. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
  3. source ~/.bashrc
  4. nvm install --lts
  5. # 安装Vue CLI
  6. npm install -g @vue/cli

4.2 生产环境构建

  1. # 进入前端项目目录
  2. cd /path/to/vue-project
  3. # 安装依赖
  4. npm install
  5. # 构建生产版本
  6. npm run build
  7. # 配置Nginx反向代理
  8. sudo bash -c 'cat > /etc/nginx/sites-available/ai-frontend <<EOF
  9. server {
  10. listen 80;
  11. server_name your-domain.com;
  12. location / {
  13. root /path/to/vue-project/dist;
  14. index index.html;
  15. try_files $uri $uri/ /index.html;
  16. }
  17. location /api/ {
  18. proxy_pass http://localhost:8080/;
  19. proxy_set_header Host \$host;
  20. proxy_set_header X-Real-IP \$remote_addr;
  21. }
  22. }
  23. EOF'
  24. sudo ln -s /etc/nginx/sites-available/ai-frontend /etc/nginx/sites-enabled/
  25. sudo nginx -t
  26. sudo systemctl restart nginx

五、安全加固与性能优化

5.1 防火墙配置

  1. # 安装ufw并配置规则
  2. sudo apt install -y ufw
  3. sudo ufw allow 2222/tcp
  4. sudo ufw allow 80/tcp
  5. sudo ufw allow 443/tcp
  6. sudo ufw enable

5.2 SSL证书配置(Let’s Encrypt)

  1. # 安装Certbot
  2. sudo apt install -y certbot python3-certbot-nginx
  3. # 获取证书(需提前配置好域名解析
  4. sudo certbot --nginx -d your-domain.com
  5. # 设置自动续期
  6. sudo certbot renew --dry-run

5.3 监控体系搭建

  1. # 安装Prometheus Node Exporter
  2. sudo useradd --no-create-home --shell /bin/false node_exporter
  3. wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.*-amd64.tar.gz
  4. tar xvfz node_exporter-*.*-amd64.tar.gz
  5. sudo mv node_exporter-*.*-amd64 /usr/local/bin/node_exporter
  6. # 创建服务文件
  7. sudo bash -c 'cat > /etc/systemd/system/node_exporter.service <<EOF
  8. [Unit]
  9. Description=Node Exporter
  10. After=network.target
  11. [Service]
  12. User=node_exporter
  13. Group=node_exporter
  14. Type=simple
  15. ExecStart=/usr/local/bin/node_exporter
  16. [Install]
  17. WantedBy=multi-user.target
  18. EOF'
  19. sudo systemctl daemon-reload
  20. sudo systemctl start node_exporter
  21. sudo systemctl enable node_exporter

六、持续集成与自动化部署

6.1 GitHub Actions配置示例

  1. name: AI Platform CI/CD
  2. on:
  3. push:
  4. branches: [ main ]
  5. jobs:
  6. build-and-deploy:
  7. runs-on: ubuntu-latest
  8. steps:
  9. - uses: actions/checkout@v3
  10. - name: Set up JDK
  11. uses: actions/setup-java@v3
  12. with:
  13. java-version: '17'
  14. distribution: 'temurin'
  15. - name: Build Spring Boot
  16. run: |
  17. cd backend
  18. mvn clean package -DskipTests
  19. - name: Build Vue
  20. run: |
  21. cd frontend
  22. npm install
  23. npm run build
  24. - name: Deploy to Server
  25. uses: appleboy/ssh-action@master
  26. with:
  27. host: ${{ secrets.SERVER_IP }}
  28. username: ${{ secrets.SERVER_USER }}
  29. key: ${{ secrets.SSH_PRIVATE_KEY }}
  30. port: 2222
  31. script: |
  32. # 停止旧服务
  33. sudo systemctl stop ai-backend
  34. # 更新应用
  35. scp -P 2222 -r backend/target/*.jar ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:/opt/ai-backend/
  36. scp -P 2222 -r frontend/dist/* ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:/var/www/html/
  37. # 重启服务
  38. sudo systemctl start ai-backend

七、常见问题解决方案

7.1 数据库连接问题排查

  1. 检查MySQL服务状态:sudo systemctl status mysql
  2. 验证网络连通性:telnet localhost 3306
  3. 检查用户权限:SELECT host, user FROM mysql.user;

7.2 前端路由404问题

在Nginx配置中确保包含:

  1. location / {
  2. try_files $uri $uri/ /index.html;
  3. }

7.3 内存不足优化

  1. 调整JVM参数:-Xms512m -Xmx1024m
  2. 优化MySQL配置:减少innodb_buffer_pool_size
  3. 监控内存使用:free -htop

八、进阶优化建议

  1. 数据库分库分表:当数据量超过500万条时考虑
  2. CDN加速:静态资源使用CDN分发
  3. 读写分离:配置MySQL主从复制
  4. 缓存层:引入Redis缓存热点数据
  5. 容器化部署:考虑使用Docker和Kubernetes

本指南完整覆盖了从环境搭建到生产部署的全流程,特别针对AI全栈开发特点,强调了数据库性能优化、前后端分离架构实现等关键环节。实际部署时建议先在测试环境验证所有配置,再逐步迁移到生产环境。

相关文章推荐

发表评论