AI全栈开发实战:Ubuntu云服务器部署Spring+Vue+MySQL指南
2025.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 基础环境搭建
# 更新系统软件包
sudo apt update && sudo apt upgrade -y
# 安装必要工具
sudo apt install -y git curl wget unzip
# 配置SSH安全(禁用root登录,修改默认端口)
sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
二、MySQL数据库部署与优化
2.1 数据库安装与配置
# 安装MySQL 8.0
sudo apt install -y mysql-server
# 安全配置(设置root密码,移除匿名用户)
sudo mysql_secure_installation
# 创建专用用户与数据库
sudo mysql -u root -p <<EOF
CREATE DATABASE ai_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ai_user'@'%' IDENTIFIED BY 'SecurePassword123!';
GRANT ALL PRIVILEGES ON ai_platform.* TO 'ai_user'@'%';
FLUSH PRIVILEGES;
EOF
2.2 性能优化配置
修改/etc/mysql/mysql.conf.d/mysqld.cnf
:
[mysqld]
innodb_buffer_pool_size = 1G # 占内存50%-70%
max_connections = 200
query_cache_size = 64M
三、Spring Boot后端部署
3.1 Java环境配置
# 安装OpenJDK 17
sudo apt install -y openjdk-17-jdk
# 配置环境变量
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
3.2 项目构建与部署
# 创建部署目录
sudo mkdir -p /opt/ai-backend
sudo chown -R $USER:$USER /opt/ai-backend
# 使用Maven构建(假设项目已存在)
cd /path/to/spring-project
mvn clean package -DskipTests
# 创建系统服务(使用systemd)
sudo bash -c 'cat > /etc/systemd/system/ai-backend.service <<EOF
[Unit]
Description=AI Platform Backend
After=syslog.target network.target mysql.service
[Service]
User=$USER
WorkingDirectory=/opt/ai-backend
ExecStart=/usr/bin/java -jar /path/to/project/target/app.jar
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target
EOF'
# 启动服务
sudo systemctl daemon-reload
sudo systemctl start ai-backend
sudo systemctl enable ai-backend
四、Vue前端部署方案
4.1 Node.js环境配置
# 使用nvm安装最新LTS版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
nvm install --lts
# 安装Vue CLI
npm install -g @vue/cli
4.2 生产环境构建
# 进入前端项目目录
cd /path/to/vue-project
# 安装依赖
npm install
# 构建生产版本
npm run build
# 配置Nginx反向代理
sudo bash -c 'cat > /etc/nginx/sites-available/ai-frontend <<EOF
server {
listen 80;
server_name your-domain.com;
location / {
root /path/to/vue-project/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://localhost:8080/;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
}
}
EOF'
sudo ln -s /etc/nginx/sites-available/ai-frontend /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
五、安全加固与性能优化
5.1 防火墙配置
# 安装ufw并配置规则
sudo apt install -y ufw
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
5.2 SSL证书配置(Let’s Encrypt)
# 安装Certbot
sudo apt install -y certbot python3-certbot-nginx
# 获取证书(需提前配置好域名解析)
sudo certbot --nginx -d your-domain.com
# 设置自动续期
sudo certbot renew --dry-run
5.3 监控体系搭建
# 安装Prometheus Node Exporter
sudo useradd --no-create-home --shell /bin/false node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.*-amd64.tar.gz
tar xvfz node_exporter-*.*-amd64.tar.gz
sudo mv node_exporter-*.*-amd64 /usr/local/bin/node_exporter
# 创建服务文件
sudo bash -c 'cat > /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
EOF'
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
六、持续集成与自动化部署
6.1 GitHub Actions配置示例
name: AI Platform CI/CD
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Build Spring Boot
run: |
cd backend
mvn clean package -DskipTests
- name: Build Vue
run: |
cd frontend
npm install
npm run build
- name: Deploy to Server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 2222
script: |
# 停止旧服务
sudo systemctl stop ai-backend
# 更新应用
scp -P 2222 -r backend/target/*.jar ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:/opt/ai-backend/
scp -P 2222 -r frontend/dist/* ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:/var/www/html/
# 重启服务
sudo systemctl start ai-backend
七、常见问题解决方案
7.1 数据库连接问题排查
- 检查MySQL服务状态:
sudo systemctl status mysql
- 验证网络连通性:
telnet localhost 3306
- 检查用户权限:
SELECT host, user FROM mysql.user;
7.2 前端路由404问题
在Nginx配置中确保包含:
location / {
try_files $uri $uri/ /index.html;
}
7.3 内存不足优化
- 调整JVM参数:
-Xms512m -Xmx1024m
- 优化MySQL配置:减少
innodb_buffer_pool_size
- 监控内存使用:
free -h
和top
八、进阶优化建议
本指南完整覆盖了从环境搭建到生产部署的全流程,特别针对AI全栈开发特点,强调了数据库性能优化、前后端分离架构实现等关键环节。实际部署时建议先在测试环境验证所有配置,再逐步迁移到生产环境。
发表评论
登录后可评论,请前往 登录 或 注册