1. 项目背景与环境准备
若依(RuoYi)是一套基于Spring Boot和Vue.js的前后端分离权限管理系统,在企业级应用开发中广受欢迎。阿里云轻量应用服务器因其性价比高、配置简单,成为个人开发者和小型团队部署测试环境的首选方案。本文将详细记录从零开始在阿里云轻量服务器上部署若依前后端分离项目的完整过程。
提示:本文操作基于阿里云轻量应用服务器(CentOS 7.6系统),若依版本为4.7.5,所有命令均经过实测验证。
1.1 服务器基础配置
首次登录阿里云轻量服务器后,建议先完成以下基础配置:
bash复制# 更新系统软件包
yum update -y
# 安装常用工具
yum install -y wget curl vim git unzip
# 关闭防火墙(测试环境建议关闭,生产环境需配置规则)
systemctl stop firewalld
systemctl disable firewalld
# 设置时区为上海
timedatectl set-timezone Asia/Shanghai
1.2 必要环境安装
若依系统运行需要Java、MySQL、Nginx和Node.js环境:
bash复制# 安装Java 1.8
yum install -y java-1.8.0-openjdk-devel
java -version # 验证安装
# 安装MySQL 5.7
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
systemctl start mysqld
systemctl enable mysqld
# 获取MySQL初始密码
grep 'temporary password' /var/log/mysqld.log
# 安全设置MySQL(交互式)
mysql_secure_installation
# 安装Nginx
yum install -y epel-release
yum install -y nginx
systemctl start nginx
systemctl enable nginx
# 安装Node.js 16.x
curl -sL https://rpm.nodesource.com/setup_16.x | bash -
yum install -y nodejs
npm install -g cnpm --registry=https://registry.npmmirror.com # 使用淘宝镜像
2. 数据库配置与初始化
2.1 创建若依数据库
登录MySQL后执行以下操作:
sql复制CREATE DATABASE IF NOT EXISTS `ry` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'ry'@'%' IDENTIFIED BY 'RuoYi@123';
GRANT ALL PRIVILEGES ON `ry`.* TO 'ry'@'%';
FLUSH PRIVILEGES;
2.2 导入初始数据
从若依Git仓库获取SQL文件并导入:
bash复制# 下载SQL文件
wget https://gitee.com/y_project/RuoYi/raw/master/sql/ry_20230223.sql
wget https://gitee.com/y_project/RuoYi/raw/master/sql/quartz.sql
# 导入数据库
mysql -u root -p ry < ry_20230223.sql
mysql -u root -p ry < quartz.sql
注意:默认密码可能不符合安全要求,生产环境务必修改为复杂密码并限制访问IP。
3. 后端项目部署
3.1 获取项目代码
bash复制cd /opt
git clone https://gitee.com/y_project/RuoYi.git
cd RuoYi/ruoyi-admin
3.2 修改配置文件
编辑src/main/resources/application.yml:
yaml复制# 数据源配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ry
password: RuoYi@123
# Redis配置(如未安装可暂时关闭)
# redis:
# host: localhost
# port: 6379
# password:
3.3 构建与运行
bash复制# 使用Maven Wrapper构建
./mvnw clean package -Dmaven.test.skip=true
# 启动项目(后台运行)
nohup java -jar target/ruoyi-admin.jar > admin.log 2>&1 &
# 查看日志
tail -f admin.log
验证后端是否启动成功:
bash复制curl http://localhost:8080
4. 前端项目部署
4.1 安装依赖
bash复制cd /opt/RuoYi/ruoyi-ui
cnpm install --force # 强制安装解决依赖冲突
4.2 修改配置
编辑.env.production文件:
ini复制# 后端API地址
VUE_APP_BASE_API = 'http://your-server-ip:8080'
编辑vue.config.js中的publicPath:
javascript复制publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
4.3 构建项目
bash复制cnpm run build:prod
构建完成后,生成的静态文件位于dist目录。
5. Nginx配置与优化
5.1 配置反向代理
编辑/etc/nginx/nginx.conf,在http块内添加:
nginx复制server {
listen 80;
server_name your-domain.com; # 替换为你的域名或IP
location / {
root /opt/RuoYi/ruoyi-ui/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /prod-api/ {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
access_log off;
}
}
5.2 重启Nginx
bash复制nginx -t # 测试配置
systemctl restart nginx
6. 系统验证与常见问题
6.1 访问验证
在浏览器访问服务器IP或域名:
- 默认管理员账号:admin/admin123
- 验证码可在
ruoyi-admin的application.yml中关闭:
yaml复制# 验证码开关
captcha:
enabled: false
6.2 常见问题排查
问题1:前端访问显示空白页
- 检查Nginx配置中的root路径是否正确
- 查看浏览器控制台是否有404错误
- 确保
dist目录权限正确:chmod -R 755 /opt/RuoYi/ruoyi-ui/dist
问题2:后端接口404
- 确认后端服务是否正常运行:
ps -ef | grep java - 检查Nginx的
/prod-api/代理配置 - 查看后端日志:
tail -f /opt/RuoYi/ruoyi-admin/admin.log
问题3:静态资源加载慢
- 确认开启了Nginx的静态资源缓存
- 检查服务器带宽是否充足
- 考虑使用CDN加速静态资源
7. 安全加固建议
-
修改默认密码:
- MySQL的root和ry账号密码
- 若依后台管理员密码
- 服务器root密码
-
配置防火墙:
bash复制# 仅开放必要端口 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=22/tcp firewall-cmd --reload -
定期备份:
bash复制# 数据库备份 mysqldump -u root -p ry > /backup/ry_$(date +%Y%m%d).sql # 项目备份 tar -czvf /backup/ruoyi_$(date +%Y%m%d).tar.gz /opt/RuoYi -
考虑使用HTTPS:
申请免费SSL证书(如Let's Encrypt)并配置到Nginx
在实际部署中,我发现阿里云轻量服务器的磁盘IO性能有限,当并发量较大时,可以考虑以下优化:
- 将MySQL数据目录挂载到高效云盘
- 增加Redis缓存减轻数据库压力
- 对频繁访问的接口添加本地缓存
