当前位置: 首页 > news >正文

Ruoyi-vue前后端分离系统部署

Ruoyi-vue前后端分离系统部署

源码下载链接:https://gitee.com/y_project/RuoYi-Vue

1、构建前端

#下载到本地
#解压
unzip RuoYi-Vue-master.zip 

#到前端的目录下
cd /root/RuoYi-Vue-master/ruoyi-ui/

#安装 Node.js 的包管理工具
yum -y install npm

#安装前端项目所需要的依赖(--unsafe-perm:不进行权限检查)
npm install --unsafe-perm --registry=https://registry.npmjs.org/

# 打包(打包完成后会在当前的目录下生成一个dist,需要将目录下的内容复制到nginx网页目录)

#❕ 通过在package.json 文件中的 scripts 中定义不同的脚本,如 build:dev(开发环境打包)、build:test(测试环境打包)和 build:prod(生产环境打包),通过执行对应的脚本,会把项目代码进行压缩、合并、编译等操作,生成可在生产环境部署的静态文件,这些文件通常存于 dist 目录

npm run build:prod

#构建完成后会提示
 DONE  Build complete. The dist directory is ready to be deployed.
 INFO  Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html

2、部署前端

#安装nginx
yum -y install nginx

#将打包后的文件复制到网页目录
 cp -a /root/RuoYi-Vue-master/ruoyi-ui/dist/* /usr/share/nginx/html/

#启动nginx访问
systemctl start nginx

#通过curl命令访问
[root@fan ruoyi-ui]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Mon, 24 Mar 2025 02:35:31 GMT
Content-Type: text/html
Content-Length: 12496
Last-Modified: Mon, 24 Mar 2025 02:07:22 GMT
Connection: keep-alive
ETag: "67e0be5a-30d0"
Accept-Ranges: bytes

#用浏览器访问可以看到正常的登录页面,但是会报错404,验证码也无法显示,这是因为我们后端还没有部署

3、安装数据库和缓存

3.1.安装Docker
yum -y install yum-utils

#下载docker源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装并启动
 systemctl enable --now docker.service 
 
#配置镜像加速
cat > /etc/docker/daemon.json << EOF
{
  "dns": ["8.8.8.8", "8.8.4.4"],
  "insecure-registries":["192.168.200.15"],
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://hub.mirrorify.net",
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}
EOF

#重启docker
systemctl daemon-reload && systemctl restart docker.service
3.2.安装Mysql
#创建mysql配置文件后续映射到容器
vim /etc/my.cnf

[client]
default-character-set=utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake = true

[mysql]
default-character-set = utf8mb4


#通过docker映射
docker run -d --name mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /etc/my.cnf:/etc/my.cnf \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=ruoyi123 \
mysql:8.0
#将项目中的sql文件先复制到容器/tmp
cd /root/RuoYi-Vue-master/sql

docker cp quartz.sql mysql:/tmp/quartz.sql
docker cp ry_20240629.sql mysql:/tmp/ry_20240629.sql

#创建数据库
docker exec -it mysql /bin/bash
mysql -u root -p
CREATE DATABASE `ry-vue`;
exit
#执行sql导入命令并退出容器
mysql -u root -pruoyi123 ry-vue < /tmp/ry_20240629.sql
mysql -u root -pruoyi123 ry-vue < /tmp/quartz.sql

exit
3.3.安装Redis
#首先在宿主机安装redis
yum -y install redis

#修改配置文件
vim /etc/redis.conf

daemonize yes
bind *
protected-mode no
requirepass 123456
  • daemonize yes:启用守护进程模式。将 Redis 设置为在后台运行,而不是在前台占用控制台或终端。
  • bind * :允许从任意 IP 地址访问 Redis。将 Redis 绑定地址设置为通配符 *,表示可以接受来自任何 IP 地址的连接请求。
  • protected-mode no:禁用保护模式。允许 Redis 服务器接受来自任何连接而不需要进行身份验证,这在某些环境下(如内部网络或受控环境)可能是合适的选择
  • requirepass 123456:设置连接密码为 123456。强制任何连接到 Redis 的客户端必须提供指定的密码,以增加访问控制和安全性。
#启动redis
docker run -d --name redis -p 6379:6379 -v /etc/redis.conf:/etc/redis/redis.conf --sysctl net.core.somaxconn=511 redis:6.0 

#查看是否为up
[root@fan ~]# docker ps -a
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
b14584bc3ffc   redis:6.0   "docker-entrypoint.s…"   7 seconds ago   Up 6 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis
eb1309b865a2   mysql:8.0   "docker-entrypoint.s…"   3 hours ago     Up 3 hours     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

4、后端项目打包

4.1.修改项目Mysql、Redis连接地址
#配置与redis连接
cd /root/RuoYi-Vue-master/ruoyi-admin/src/main/resources
vim application.yml 

#在配置文件中修改以下两处
profile: /home/ruoyi/uploadPath
password: 123456     #redis密码

#配置mysql连接地址与密码
vim application-druid.yml 

url: jdbc:mysql://localhost:3306/ry-vue
  password: ruoyi123
4.2.安装Maven
#安装maven并打包
yum -y install maven

#配置仓库
cp -a settings.xml{,.bak}
vim /etc/maven/settings.xml 

159   <mirror>
160      <id>aliyunmaven</id>
161      <mirrorOf>central</mirrorOf>
162      <name>aliyun maven</name>
163      <url>https://maven.aliyun.com/repository/public</url>
164    </mirror>
165   </mirrors>
166   <!-- profiles
4.3.构建
#构建
cd ruoyi-admin/
mvn clean package 

[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.590 s
[INFO] Finished at: 2025-03-24T14:19:42+08:00
[INFO] ------------------------------------------------------------------------
。。。。。。。。。。。。


#在当前目录下会生成一个target目录(ruoyi-admin.jar)
[root@fan ruoyi-admin]# ls
pom.xml  src  target

[root@fan ruoyi-admin]# cd target/
[root@fan target]# ls
classes  generated-sources  maven-archiver  maven-status  ruoyi-admin.jar  ruoyi-admin.jar.original


#运行jar包
java -jar ruoyi-admin.jar 



#修改nginx的配置文件(添加location匹配)
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/;
                        }
                        
                     
#用浏览器访问80端口(成功访问)

5、将项目打包成war包在tomcat上运行

ruoyi-admin.jar 打成 war 包的方法

默认情况下,RuoYi-Vueruoyi-admin 是一个 Spring Boot 应用,Maven 的 packaging 类型是 jar。如果你想要打成 war 包,需要进行以下修改:

5.1. 修改 pom.xml

打开 ruoyi-admin 目录下的 pom.xml,找到 <packaging>jar</packaging>修改为 war

<packaging>war</packaging>
5.2. 修改 pom.xml,调整 Spring Boot 依赖

Spring Boot 项目默认是 可执行 JAR,如果改为 WAR,需要:

  • 去掉 spring-boot-starter-web 依赖中的 embedded Tomcat
  • 添加 spring-boot-starter-tomcatprovided
  • 继承 SpringBootServletInitializer 以支持外部容器

修改 pom.xml,找到 dependencies做如下修改

 <!-- 定时任务 -->
        <dependency>

            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-quartz</artifactId>
        </dependency>

        <!-- 代码生成 -->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-generator</artifactId>
        </dependency>

        <!-- 修改点:排除 Spring Boot 内置 Tomcat,并使用 provided 作用域 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
5.3. 修改 RuoYiApplication 以支持外部 Tomcat

找到 ruoyi-admin 里的 src/main/java/com/ruoyi/RuoYiApplication.java,修改:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class RuoYiApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(RuoYiApplication.class, args);
    }
}
5.4. 重新打包 war

修改完 pom.xml 之后,回到 ruoyi-admin 目录,执行:

mvn clean package

成功后,在 target/ 目录下会生成:

ruoyi-admin.war
5.5.安装tomcat
yum -y install tomcat
5.6.将war包放入/webapps/目录下面
cp /root/RuoYi-Vue-master/ruoyi-admin/target/ruoyi-admin.war /usr/share/tomcat/webapps/
5.7.启动tomcat
systemctl start tomcat
5.8.修改nginx的location
        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_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://localhost:8080/ruoyi-admin/;
            proxy_connect_timeout 90;
            proxy_read_timeout 90;
        }

重启nginx,然后浏览器访问

#可能会涉及到权限的问题解决方法
rm -f /home/ruoyi/
mkdir -p /home/ruoyi/logs
chown tomcat:tomcat /home/ruoyi/logs
chmod 755 /home/ruoyi/logs

5、全部使用docker运行

#所有容器在这个网络中运行
docker network create ruoyi-net
5.1.重新打包
#修改mysql的连接地址
vim /root/RuoYi-Vue-master/ruoyi-admin/src/main/resources/application-druid.yml

#localhost修改为容器的名称
 url: jdbc:mysql://mysql:3306
#修改redis的主机名
vim /root/RuoYi-Vue-master/ruoyi-admin/src/main/resources/application.yml

#修改为redis
host: redis
cd /root/RuoYi-Vue-master/ruoyi-admin/
mvn clean packages
5.2.将jar包制作为镜像
vim Dcoekrfile

FROM openjdk:8-jdk
WORKDIR /app
COPY target/ruoyi-admin.jar /app/ruoyi-admin.jar
CMD ["java", "-jar", "ruoyi-admin.jar"]
docker build -t ruoyi-admin:3.8.9 .
docker run -d --name ruoyi-admin \
--network ruoyi-net \
-p 8080:8080 \
ruoyi-admin
5.3.前端使用nginx容器运行
#需要修改/etc/nginx/nginx.conf将127.0.0.1改为后端容器名称ruoyi-admin
proxy_pass http://ruoyi-admin:8080/
docker run -d --name nginx \
--network ruoyi-net \
-p 80:80 \
-v /root/RuoYi-Vue-master/ruoyi-ui/dist:/usr/share/nginx/html \
-v /etc/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
nginx
5.4.启动mysql
docker run -d --name mysql \
--network ruoyi-net \
-v /usr/local/mysql/data:/usr/local/mysql/data \
-v /etc/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=ruoyi123 \
-p 3306:3306 \
mysql:8.0

#将源码中的sql文件导入容器的数据库中
cd /root/RuoYi-Vue-master/sql

[root@fan sql]# ls 
quartz.sql  ry_20240629.sql

#先复制到容器的/tmp目录下
docker cp quartz.sql mysql:/tmp/quartz.sql
docker cp ry_20240629.sql mysql:/tmp/ry_20240629.sql

#创建数据库
docker exec -it mysql /bin/bash
mysql -u root -p
CREATE DATABASE `ry-vue`;

#确保所有主机可以连接,修改root用户的权限
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ruoyi123';
FLUSH PRIVILEGES;


#执行sql导入命令
mysql -u root -p ry-vue < /tmp/ry_20240629.sql
mysql -u root -p ry-vue < /tmp/quartz.sql
5.5.启动redis
docker run -d --name redis \
--network ruoyi-net \
-p 6379:6379 \
-v /usr/local/redis/redis.conf:/usr/local/redis/redis.conf \
redis:6.0

相关文章:

  • 如何在linux中部署dns服务 主备dns (详细全过程)
  • vue中使用threejs的加载纹理没有效果
  • 安卓-关于setOnTouchListener和setOnClickListener冲突的问题
  • 2025_0327_生活记录
  • vue配置.eslintrc、.prettierrc详解
  • 如何让 AI 搜索为您的企业可见性战略助力飞升!
  • 外贸独立站相关知识扫盲
  • 网路传输层UDP/TCP
  • 【YOLOE: Real-Time Seeing Anything】predict_visual_prompt.py视觉推理代码分析(检测版本)
  • 【漏洞修复】为了修复ARM64 Android10系统的第三方库漏洞,将ARM64 Android16的系统库直接拷贝到Android10系统如何?
  • 【HTML】验证与调试工具
  • webpack配置详解+项目实战
  • Mathtype无法插入到Word中
  • 详解Spark executor
  • (C语言)习题练习 (指针与二维数组)的长度计算
  • 基于yolov11的铁路轨道铁轨缺陷检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • RTMP推流服务器nginx在linux上的编译部署
  • RUBY报告系统
  • python将整个txt文件写入excel的一个单元格?
  • VMware Ubuntu 网络配置全攻略:从断网到畅通无阻
  • 百度网站描述/sem营销是什么意思
  • 做黑网站赚钱/百度贴吧怎么发广告
  • 景区网站建设的意义/媒介
  • 统一门户网站/端点seo博客
  • 网页教程网站/百度助手下载
  • 做外单什么网站好/深圳网络推广引流