外观
说明
因为本项目是前后端完全分离的,所以需要前后端都单独启动好,才能进行访问。
后端部署
一、环境准备与项目获取
1.1 环境要求清单
| 组件 | 要求 | 验证命令 | 作用 |
|---|---|---|---|
| Java | JDK 1.8+ | java -version | 打包&部署时使用 |
| Maven | 3.5+ | mvn -v | 打包时使用 |
| Git | 最新版 | git --version | 下载源码时使用 |
| MySQL | 5.7+ | mysql --version | 项目运行时使用 |
| Redis | 5.0+ | redis-server --version | 项目运行时使用 |
提示
本项目依赖MySQL及Redis,如果采用JAR包或者WAR包的部署方式,需要手动部署MySQL及Redis,关于MySQL及Redis的部署流程请自行查阅网络上的教程,这里就不再赘述了。
1.2 获取项目代码
bash
# 克隆项目(Gitee镜像)
git clone https://gitee.com/panweilei/ruoyi-radius.git
# 进入项目目录
cd ruoyi-radius1.3 初始化数据库
- 创建数据库ruoyi_radius并导入数据脚本(项目根目录/sql/ruoyiradius-init.sql)
提示
如果提示表不存在,设置大小写敏感配置在/etc/my.cnf添加lower_case_table_names=1,重启MYSQL服务
二、JAR包部署
2.1 项目编译打包
bash
# 1. 清理并打包(跳过测试)
mvn clean package -DskipTests
# 2. 只打包后端管理模块
mvn clean package -DskipTests -pl ruoyi-admin -am
# 打包后的JAR位置:
# ruoyi-modules/ruoyi-admin/target/ruoyi-admin.jar2.2 生产环境配置
- 修改 application-prod.yml相关参数(服务器端口号、数据库连接信息、Redis缓存连接信息等)
yaml
# 生产环境配置
server:
port: 8080
servlet:
context-path: /ruoyi-radius
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/ruoyi_radius?useUnicode=true&characterEncoding=utf8
username: \${DB_USER:root}
password: \${DB_PASS:123456}
initial-size: 10
max-active: 50
redis:
host: \${REDIS_HOST:localhost}
port: \${REDIS_PORT:6379}
database: 0
# 日志配置
logging:
file:
name: logs/ruoyi-radius.log
level:
com.ruoyi: info2.3 启动脚本
- 创建 `start.sh`(Linux/Mac):
bash
#!/bin/bash
APP_NAME="ruoyi-radius"
JAR_NAME="ruoyi-admin.jar"
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
# 创建日志目录
mkdir -p logs
echo "启动 $APP_NAME ..."
nohup java $JAVA_OPTS -jar $JAR_NAME --spring.profiles.active=prod > logs/app.log 2>&1 &
echo "启动完成!PID: $!"
echo "查看日志: tail -f logs/app.log"- 创建 `start.bat`(Windows):
batch
@echo off
set APP_NAME=ruoyi-radius
set JAR_NAME=ruoyi-admin.jar
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC
echo 启动 %APP_NAME% ...
java %JAVA_OPTS% -jar %JAR_NAME% --spring.profiles.active=prod
pause2.4 部署验证
bash
# 1. 检查进程
ps aux | grep ruoyi-admin
# 2. 检查端口
netstat -tlnp | grep 8080
# 3. 健康检查
curl http://localhost:8080/ruoyi-radius/actuator/health
# 4. 查看日志
tail -f logs/ruoyi-radius.log提示
后端运行成功可以通过(http://localhost:8080)访问,但是不会出现静态页面,可以继续参考下面步骤部署ruoyi-ui前端,然后通过前端地址来访问。
三、WAR包部署
3.1 修改打包方式
- 修改 `ruoyi-admin/pom.xml`:
xml
<!-- 将打包方式改为war -->
<packaging>war</packaging>
<!-- 排除内置Tomcat(使用外部Tomcat) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>3.2 打包部署
bash
# 打包WAR文件
mvn clean package -DskipTests
# 将WAR包复制到Tomcat的webapps目录
cp ruoyi-admin/target/ruoyi-admin.war /opt/tomcat/webapps/注意
WAR包部署的方式依赖于Tomcat,或者其它Webe服务器,需要额外部署Webe服务器才能正常使用。后端运行成功可以通过(http://localhost:8080)访问,但是不会出现静态页面,可以继续参考下面步骤部署ruoyi-ui前端,然后通过前端地址来访问。
四、Docker部署(推荐)
4.1 单容器部署
创建 Dockerfile:
dockerfile
# 构建阶段
FROM maven:3.8.4-openjdk-8 AS builder
WORKDIR /app
COPY . .
RUN mvn clean package -DskipTests
# 运行阶段
FROM openjdk:8-jre-alpine
WORKDIR /app
# 设置时区
RUN apk add --no-cache tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
# 复制JAR包
COPY --from=builder /app/ruoyi-admin/target/ruoyi-admin.jar app.jar
# 暴露端口
EXPOSE 8080
# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=prod"]4.2 Docker Compose完整部署
创建 docker-compose.yml:
yaml
version: '3.8'
services:
mysql:
image: mysql:5.7
container_name: ruoyi-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ruoyi123
MYSQL_DATABASE: ruoyi_radius
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
redis:
image: redis:6-alpine
container_name: ruoyi-redis
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: redis-server --appendonly yes
backend:
build: .
container_name: ruoyi-backend
restart: always
depends_on:
- mysql
- redis
ports:
- "8080:8080"
environment:
SPRING_PROFILES_ACTIVE: prod
DB_HOST: mysql
DB_PORT: 3306
DB_NAME: ruoyi_radius
DB_USER: root
DB_PASS: ruoyi123
REDIS_HOST: redis
REDIS_PORT: 6379
volumes:
- ./logs:/app/logs
- ./config:/app/config
volumes:
mysql_data:
redis_data:4.3 使用说明
bash
# 1. 构建并启动所有服务
docker-compose up -d
# 2. 查看服务状态
docker-compose ps
# 3. 查看日志
docker-compose logs -f backend
# 4. 停止服务
docker-compose down
# 5. 停止并清理数据
docker-compose down -v五、部署方式对比
| 部署方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| JAR包 | 部署简单,独立运行 | 依赖JDK环境 | 云服务器、虚拟机 |
| WAR包 | 兼容传统Web服务器 | 需要安装Tomcat | 企业已有Tomcat环境 |
| Docker | 环境隔离,易于扩展 | 学习成本较高 | 容器化、微服务架构 |
六、常见问题解决
6.1 数据库连接失败
bash
# 检查MySQL服务
systemctl status mysql
# 检查端口
netstat -tlnp | grep 3306
# 检查用户权限
mysql -u root -p -e "SHOW GRANTS FOR 'ruoyi'@'%';"6.2 端口冲突
bash
# 查看端口占用
netstat -tlnp | grep 8080
# 停止占用进程
kill -9 <PID>
# 或修改应用端口
# 在application.yml中修改 server.port6.3 内存不足
bash
# 调整JVM参数
JAVA_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC"
# 查看内存使用
top -p $(pgrep -f ruoyi-admin)七、最佳实践建议
7.1 安全建议
- 修改默认密码:生产环境务必修改数据库和Redis默认密码
- 配置防火墙:只开放必要的端口(80, 443, 8080)
- 启用HTTPS:使用Nginx反向代理并配置SSL证书
7.2 监控建议
- 启用Actuator端点:监控应用健康状态
- 配置日志轮转:避免日志文件过大
- 设置告警:监控关键指标(CPU、内存、响应时间)
7.3 备份策略
- 数据库备份:每日自动备份MySQL数据
- 配置文件备份:版本化管理所有配置文件
- 部署脚本备份:保存所有部署和运维脚本
总结
本指南提供了三种主流的RuoYi-Radius后端部署方式:
- JAR包部署:适合大多数云服务器场景,简单直接
- WAR包部署:适合已有Tomcat环境的传统部署
- Docker部署:适合现代化容器化部署,易于扩展和维护
建议根据实际环境和团队技术栈选择合适的部署方式。对于新项目,推荐使用Docker部署,便于环境统一和持续集成。
前端部署
一、前端打包
- 当项目开发完毕,只需要运行一行命令就可以打包你的应用
bash
# 进入前端根目录
cd ruoyi-ui
# 打包正式环境
npm run build:prod
# 打包预发布环境
npm run build:stage- 构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 .js 、.css、index.html 等静态文件。
- 通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。
- 如果需要自定义构建,比如指定 dist 目录等,则需要通过 config (opens new window)的 outputDir 进行配置。
- 部署时改变页面js 和 css 静态引入路径 ,只需修改 vue.config.js 文件资源路径即可。
js
publicPath: './' //请根据自己路径来配置更改
export default new Router({
mode: 'hash', // hash模式
})二、Tomcat配置
- 修改server.xml,Host节点下添加
xml
<Context docBase="" path="/" reloadable="true" source=""/>- dist目录的文件夹下新建WEB-INF文件夹,并在里面添加web.xml文件
xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" metadata-complete="true">
<display-name>Router for Tomcat</display-name>
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
</web-app>三、Nginx配置
- 修改Nginx配置文件(Nginx安装目录/conf/nginx.conf)
config
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root /home/ruoyi/projects/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
# springdoc proxy
location ~ ^/v3/api-docs/(.*) {
proxy_pass http://localhost:8080/v3/api-docs/$1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}总结
- 前端部署相对简单,只需要把打包好的静态文件(dist目录下所有文件)放到Tomcat或者Nginx对应位置即可。
- 可以通过(http://localhost:80)访问验证系统是否部署成功,注意部署时配置的端口号,能正常访问则说明部署成功。
- 如遇到无法解决的问题请到Issues反馈,或者加入技术交流群,会不定时进行解答。
