从零到一:CentOS 7实战部署RuoYi-Vue前后端分离项目全流程
在当今企业级应用开发中,前后端分离架构已成为主流选择。RuoYi-Vue作为基于Spring Boot和Vue.js的权限管理系统,凭借其丰富的功能组件和清晰的代码结构,深受开发者喜爱。但对于刚接触Linux环境部署的新手来说,从零开始搭建完整的运行环境仍是一个不小的挑战。本文将手把手带你完成从系统准备到服务上线的全流程,不仅告诉你"怎么做",更会解释"为什么这么做"。
1. 环境准备与基础服务安装
1.1 系统初始化配置
全新的CentOS 7系统需要先进行基础优化。以root身份登录后,执行以下操作:
bash复制# 更新系统软件包
yum update -y
# 安装常用工具
yum install -y vim wget curl net-tools lsof unzip
# 关闭防火墙(生产环境建议配置规则而非关闭)
systemctl stop firewalld
systemctl disable firewalld
# 禁用SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
提示:生产环境中关闭防火墙和SELinux可能存在安全风险,建议根据实际需求配置精确的放行规则。
1.2 JDK 8安装与配置
RuoYi-Vue需要Java 8环境,推荐使用OpenJDK:
bash复制yum install -y java-1.8.0-openjdk-devel
# 验证安装
java -version
若需要特定版本的JDK,可手动下载并配置环境变量:
bash复制# 下载JDK(示例版本)
wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
# 解压到/usr/local
tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -C /usr/local/
# 配置环境变量
echo 'export JAVA_HOME=/usr/local/java-se-8u41-ri' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
1.3 MySQL 8.0安装与优化
RuoYi使用MySQL作为数据库存储,以下是安装步骤:
bash复制# 添加MySQL官方Yum源
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
# 安装MySQL服务
yum install -y mysql-community-server
# 启动服务并设置开机自启
systemctl start mysqld
systemctl enable mysqld
安装完成后需要获取临时密码并进行安全配置:
bash复制# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 运行安全配置向导
mysql_secure_installation
为RuoYi创建专用数据库和用户:
sql复制CREATE DATABASE `ry-vue` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'ruoyi'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON `ry-vue`.* TO 'ruoyi'@'%';
FLUSH PRIVILEGES;
1.4 Redis安装与配置
Redis作为缓存服务,安装配置如下:
bash复制# 安装EPEL源
yum install -y epel-release
# 安装Redis
yum install -y redis
# 修改配置文件
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
echo 'requirepass YourRedisPassword' >> /etc/redis.conf
# 启动服务
systemctl start redis
systemctl enable redis
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 中间件安装与配置
2.1 Tomcat 10部署
Tomcat作为Java Web容器,安装步骤如下:
bash复制# 下载Tomcat 10
wget https://downloads.apache.org/tomcat/tomcat-10/v10.0.23/bin/apache-tomcat-10.0.23.tar.gz
# 解压到/usr/local
tar -zxvf apache-tomcat-10.0.23.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-10.0.23 /usr/local/tomcat
# 创建系统服务
cat > /etc/systemd/system/tomcat.service <<EOF
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/java-se-8u41-ri
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=CATALINA_BASE=/usr/local/tomcat
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
User=root
Group=root
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 重载服务配置
systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat
2.2 Nginx安装与基础配置
Nginx作为反向代理和静态资源服务器:
bash复制# 添加Nginx官方源
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
# 安装Nginx
yum install -y nginx
# 启动服务
systemctl start nginx
systemctl enable nginx
3. RuoYi-Vue项目部署
3.1 获取项目代码
bash复制# 安装Git
yum install -y git
# 克隆项目
git clone https://gitee.com/y_project/RuoYi-Vue.git
cd RuoYi-Vue
3.2 后端配置与打包
修改数据库连接配置(ruoyi-admin/src/main/resources/application-druid.yml):
yaml复制# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ruoyi
password: StrongPassword123!
修改Redis配置(ruoyi-admin/src/main/resources/application.yml):
yaml复制# Redis配置
redis:
host: localhost
port: 6379
password: YourRedisPassword
database: 0
执行Maven打包:
bash复制# 进入后端目录
cd ruoyi-admin
# 清理并打包
mvn clean package -Dmaven.test.skip=true
打包完成后,war文件会生成在target/ruoyi-admin.war。
3.3 前端配置与构建
进入前端目录并安装依赖:
bash复制cd ../ruoyi-ui
# 使用淘宝镜像源加速
npm install --registry=https://registry.npmmirror.com
修改生产环境配置(.env.production):
properties复制# 生产环境配置
ENV = 'production'
# 接口地址
VUE_APP_BASE_API = '/prod-api'
执行构建命令:
bash复制npm run build:prod
构建完成后,静态资源会生成在dist目录。
4. 服务部署与整合
4.1 后端部署到Tomcat
bash复制# 停止Tomcat服务
systemctl stop tomcat
# 清理webapps目录
rm -rf /usr/local/tomcat/webapps/*
# 部署war包
cp ruoyi-admin/target/ruoyi-admin.war /usr/local/tomcat/webapps/ROOT.war
# 启动Tomcat
systemctl start tomcat
4.2 前端部署与Nginx配置
创建前端目录并部署静态资源:
bash复制mkdir -p /app/ruoyi-ui
cp -r ruoyi-ui/dist/* /app/ruoyi-ui/
配置Nginx(/etc/nginx/conf.d/ruoyi.conf):
nginx复制server {
listen 80;
server_name your-domain.com;
# 前端静态资源
location / {
root /app/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# 后端API代理
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
# 错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
测试并重载Nginx配置:
bash复制nginx -t
systemctl reload nginx
5. 系统初始化与验证
5.1 数据库初始化
导入RuoYi的SQL脚本:
bash复制mysql -u ruoyi -p ry-vue < sql/ry_20210908.sql
mysql -u ruoyi -p ry-vue < sql/quartz.sql
5.2 服务启动验证
确保所有服务正常运行:
bash复制# 检查服务状态
systemctl status mysqld
systemctl status redis
systemctl status tomcat
systemctl status nginx
# 检查端口监听
netstat -tunlp | grep -E '3306|6379|8080|80'
5.3 访问系统
打开浏览器访问服务器IP或域名,默认登录账号密码:
- 用户名:admin
- 密码:admin123
6. 生产环境优化建议
6.1 性能调优
Tomcat优化(/usr/local/tomcat/conf/server.xml):
xml复制<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="500"
minSpareThreads="30"
acceptCount="100"
enableLookups="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"/>
MySQL优化(/etc/my.cnf):
ini复制[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
skip-name-resolve
max_connections = 500
6.2 安全加固
-
修改默认密码和密钥
- 修改admin用户密码
- 更新
application.yml中的加密密钥
-
配置HTTPS
- 使用Let's Encrypt获取免费证书
- 配置Nginx SSL
-
定期备份策略
- 数据库定时备份
- 代码和配置文件备份
6.3 监控与日志
配置日志轮转和监控:
bash复制# 配置logrotate
cat > /etc/logrotate.d/ruoyi <<EOF
/app/ruoyi/logs/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
copytruncate
}
EOF
7. 常见问题排查
7.1 前端访问空白页
可能原因及解决方案:
- Nginx配置错误,检查root路径是否正确
- 静态资源未正确构建,重新执行
npm run build:prod - 路由模式不匹配,确保使用history模式
7.2 后端接口404
排查步骤:
- 确认Tomcat服务正常运行
- 检查Nginx代理配置,特别是
/prod-api/规则 - 查看Tomcat日志
catalina.out是否有异常
7.3 数据库连接失败
检查要点:
- MySQL服务状态和端口监听
- 数据库用户名密码是否正确
- 用户是否有远程连接权限(如果使用远程数据库)
7.4 Redis连接超时
常见解决方法:
- 检查Redis服务是否启动
- 确认防火墙已关闭或端口放行
- 验证密码配置是否一致
8. 自动化部署进阶
对于频繁部署的场景,可以考虑使用自动化脚本:
bash复制#!/bin/bash
# 定义变量
PROJECT_DIR="/opt/ruoyi"
TOMCAT_HOME="/usr/local/tomcat"
NGINX_ROOT="/app/ruoyi-ui"
# 停止服务
systemctl stop tomcat
# 清理旧部署
rm -rf $TOMCAT_HOME/webapps/*
rm -rf $NGINX_ROOT/*
# 部署后端
cd $PROJECT_DIR/RuoYi-Vue/ruoyi-admin
git pull
mvn clean package -Dmaven.test.skip=true
cp target/ruoyi-admin.war $TOMCAT_HOME/webapps/ROOT.war
# 部署前端
cd $PROJECT_DIR/RuoYi-Vue/ruoyi-ui
git pull
npm install --registry=https://registry.npmmirror.com
npm run build:prod
cp -r dist/* $NGINX_ROOT/
# 启动服务
systemctl start tomcat
nginx -s reload
echo "Deployment completed at $(date)"
将此脚本保存为deploy.sh并添加执行权限,即可实现一键部署。
