logo

从零搭建AI全栈环境:Ubuntu云服务器部署Spring+Vue+MySQL全流程指南

作者:热心市民鹿先生2025.09.16 19:36浏览量:0

简介:本文详细介绍在Ubuntu云服务器上部署Spring Boot后端、Vue前端与MySQL数据库的全栈开发环境搭建过程,涵盖环境准备、依赖安装、项目部署及安全优化等关键步骤,适合全栈开发者与AI应用开发者参考。

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

1.1 云服务器基础配置

选择Ubuntu 22.04 LTS作为操作系统,确保服务器配置满足以下要求:

  • CPU:2核及以上(AI应用建议4核)
  • 内存:4GB(开发环境)/8GB+(生产环境)
  • 磁盘:50GB SSD(含20GB Swap分区)
  • 带宽:5Mbps+(根据访问量调整)

通过SSH连接服务器后,执行基础安全配置:

  1. # 更新系统包
  2. sudo apt update && sudo apt upgrade -y
  3. # 创建专用用户(避免直接使用root)
  4. sudo adduser ai-developer
  5. sudo usermod -aG sudo ai-developer
  6. # 配置UFW防火墙
  7. sudo ufw allow 22/tcp # SSH
  8. sudo ufw allow 80/tcp # HTTP
  9. sudo ufw allow 443/tcp # HTTPS
  10. sudo ufw enable

1.2 开发工具链安装

安装Java开发环境(JDK 17+):

  1. sudo apt install openjdk-17-jdk -y
  2. java -version # 验证安装

配置Node.js环境(LTS版本):

  1. curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
  2. sudo apt install nodejs -y
  3. node -v && npm -v # 验证版本

安装MySQL 8.0数据库

  1. sudo apt install mysql-server -y
  2. sudo mysql_secure_installation # 执行安全配置

二、数据库部署与优化

2.1 MySQL初始化配置

登录MySQL后执行:

  1. CREATE DATABASE ai_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. CREATE USER 'ai_admin'@'localhost' IDENTIFIED BY 'StrongPassword123!';
  3. GRANT ALL PRIVILEGES ON ai_platform.* TO 'ai_admin'@'localhost';
  4. FLUSH PRIVILEGES;

优化配置参数(修改/etc/mysql/mysql.conf.d/mysqld.cnf):

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

2.2 数据库连接测试

使用Spring Boot项目配置示例:

  1. # application.yml
  2. spring:
  3. datasource:
  4. url: jdbc:mysql://localhost:3306/ai_platform?useSSL=false&serverTimezone=UTC
  5. username: ai_admin
  6. password: StrongPassword123!
  7. driver-class-name: com.mysql.cj.jdbc.Driver

三、Spring Boot后端部署

3.1 项目构建与依赖管理

使用Maven构建项目,核心依赖示例:

  1. <dependencies>
  2. <!-- Spring Web -->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <!-- MySQL驱动 -->
  8. <dependency>
  9. <groupId>mysql</groupId>
  10. <artifactId>mysql-connector-java</artifactId>
  11. <scope>runtime</scope>
  12. </dependency>
  13. <!-- AI相关库(示例) -->
  14. <dependency>
  15. <groupId>org.deeplearning4j</groupId>
  16. <artifactId>deeplearning4j-core</artifactId>
  17. <version>1.0.0-M2.1</version>
  18. </dependency>
  19. </dependencies>

3.2 生产环境部署方案

方案一:JAR包直接运行

  1. # 构建项目
  2. mvn clean package
  3. # 后台运行(使用systemd)
  4. sudo nano /etc/systemd/system/ai-backend.service

服务文件内容:

  1. [Unit]
  2. Description=AI Platform Backend
  3. After=syslog.target
  4. [Service]
  5. User=ai-developer
  6. ExecStart=/usr/bin/java -jar /path/to/ai-platform.jar
  7. SuccessExitStatus=143
  8. [Install]
  9. WantedBy=multi-user.target

启动服务:

  1. sudo systemctl daemon-reload
  2. sudo systemctl start ai-backend
  3. sudo systemctl enable ai-backend

方案二:Docker容器化部署

Dockerfile示例:

  1. FROM openjdk:17-jdk-slim
  2. VOLUME /tmp
  3. ARG JAR_FILE=target/*.jar
  4. COPY ${JAR_FILE} app.jar
  5. ENTRYPOINT ["java","-jar","/app.jar"]

构建并运行:

  1. docker build -t ai-backend .
  2. docker run -d -p 8080:8080 --name ai-service ai-backend

四、Vue前端部署与优化

4.1 项目构建配置

修改vue.config.js适配生产环境:

  1. module.exports = {
  2. publicPath: process.env.NODE_ENV === 'production' ? '/ai-dashboard/' : '/',
  3. productionSourceMap: false, // 禁用source map
  4. configureWebpack: {
  5. performance: {
  6. hints: false,
  7. maxEntrypointSize: 512000,
  8. maxAssetSize: 512000
  9. }
  10. }
  11. }

4.2 Nginx反向代理配置

安装Nginx并配置:

  1. sudo apt install nginx -y
  2. sudo nano /etc/nginx/sites-available/ai-frontend

配置文件内容:

  1. server {
  2. listen 80;
  3. server_name your-domain.com;
  4. root /var/www/ai-dashboard;
  5. index index.html;
  6. location / {
  7. try_files $uri $uri/ /index.html;
  8. }
  9. location /api {
  10. proxy_pass http://localhost:8080;
  11. proxy_set_header Host $host;
  12. proxy_set_header X-Real-IP $remote_addr;
  13. }
  14. }

启用配置并重启:

  1. sudo ln -s /etc/nginx/sites-available/ai-frontend /etc/nginx/sites-enabled
  2. sudo nginx -t
  3. sudo systemctl restart nginx

五、全栈系统集成与测试

5.1 跨域问题解决方案

在Spring Boot中配置CORS:

  1. @Configuration
  2. public class WebConfig implements WebMvcConfigurer {
  3. @Override
  4. public void addCorsMappings(CorsRegistry registry) {
  5. registry.addMapping("/**")
  6. .allowedOrigins("https://your-domain.com")
  7. .allowedMethods("*")
  8. .allowedHeaders("*")
  9. .allowCredentials(true);
  10. }
  11. }

5.2 性能测试与调优

使用JMeter进行压力测试:

  1. 创建线程组(100用户,持续1分钟)
  2. 添加HTTP请求采样器(/api/data)
  3. 添加监听器查看结果

关键优化点:

  • 启用G1垃圾回收器(-XX:+UseG1GC
  • 调整Spring Boot线程池:
    1. server:
    2. tomcat:
    3. threads:
    4. max: 200
    5. min-spare: 10

六、安全加固与运维监控

6.1 安全防护措施

  1. 启用Fail2Ban防止暴力破解:

    1. sudo apt install fail2ban -y
    2. sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  2. 配置SSL证书(Let’s Encrypt):

    1. sudo apt install certbot python3-certbot-nginx -y
    2. sudo certbot --nginx -d your-domain.com

6.2 监控系统搭建

安装Prometheus和Grafana:

  1. # Prometheus
  2. wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
  3. tar xvfz prometheus-*.tar.gz
  4. cd prometheus-*
  5. ./prometheus --config.file=prometheus.yml
  6. # Grafana
  7. sudo apt-get install -y adduser libfontconfig1
  8. wget https://dl.grafana.com/oss/release/grafana_10.2.0_amd64.deb
  9. sudo dpkg -i grafana_*.deb

七、常见问题解决方案

7.1 数据库连接失败排查

  1. 检查MySQL服务状态:

    1. sudo systemctl status mysql
  2. 验证网络连通性:

    1. telnet localhost 3306
  3. 检查用户权限:

    1. SELECT host, user FROM mysql.user;

7.2 前端资源加载404错误

  1. 检查Nginx配置中的root路径
  2. 验证Vue构建后的dist目录结构
  3. 检查浏览器开发者工具中的Network标签

通过以上步骤,您可以在Ubuntu云服务器上构建一个完整的AI全栈开发环境,涵盖从数据库部署到前后端集成的完整流程。建议定期备份数据(使用mysqldump和项目版本控制),并持续监控系统资源使用情况。对于AI应用特有的计算需求,可考虑添加GPU支持或使用分布式计算框架如Spark进行扩展。

相关文章推荐

发表评论