# 部署图示

# 目录说明

  服务器的文件目录说明:

home 目录类似于 window 上的 D 盘

# 存放软件临时安装包(也可以放在root目录下)
# mkdir -p /home/local_hub

# 存放软件环境(也可以安装在默认的/usr/local目录下)
# mkdir -p /data/local_service

# ----------

# 临时存放Git项目代码
mkdir -p /home/app_code

# 存放已部署上线的项目
mkdir -p /data/app

# 1、代码拉取

cd /home/app_code
git clone [email protected]:y_project/RuoYi-Vue.git

# 2、SQL 导入

  • 方式 1

在服务器的 mysqld 中操作

mysql -u root -p
> create database ry-vue;
> Show databases;
> use ry-vue;
> source /home/app_code/RuoYi-Vue/quartz.sql;
> show tables;
> source /home/app_code/RuoYi-Vue/ry_20230706.sql;
> show tables;
  • 方式 2

使用 Navicat

# 3、后端打包

  以下演示的是在服务端进行打包(优点是不需要配置 jdk 为 1.8)

为了项目的正常运行,建议先在本地修改文件配置文件、并运行项目以验证项目是否能够正常运行

本地运行测试

本地 Maven3.8.6、jdk1.8、ip 地址(服务器公网 ip)

# Maven打包
cd /home/app_code/RuoYi-vue
mvn clean install -pl com.ruoyi:ruoyi-admin -am  # 为非模块可以直接执行mvn package命令

# jar包迁移
mkdir /data/app/ruoyi-vue
mv /home/app_code/RuoYi-vue/ruoyi-admin/target/ruoyi-admin.jar /data/app/ruoyi-vue/ruoyi-admin.jar

# 启动jar包(&代表后台运行)
cd data/app/ruoyi-vue
nohup java -jar ruoyi.jar &

# 检查是否启动成功
tail -100f nohup.out

# 4、前端打包

# webpack打包
cd /home/app_code/RuoYi-Vue/ruoyi-ui
npm install --unsafe-perm --registry=https://registry.npm.taobao.org
npm run build:prod

# jar包迁移
mkdir /data/app/ruoyi-ui
mv /home/app_code/RuoYi-Vue/ruoyi-ui/dist/* /data/app/ruoyi-ui/

# Nginx代理
vim /usr/local/nginx/conf/nginx.conf
Nginx 配置
user root

http{
  # 项目一
  server {
    listen 80;
    server_name  localhost;

    location / {
      root  /data/app/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:5151/;
    }
  }
}

# 拓展:偷懒技巧

  上面部署的的每一个部署操作都在服务端进行,这样可以极大的放防止部署发生错误。但是我们得在服务器中安装 Maven、node、jdk 环境,并且采用命令的方式上传 SQL,部署效率会大大受到影响。

  如果想要最快的方式部署,选择以下方式对前端的部署:

  • SQL 数据导入使用 可视化工具(如:Navicat)
  • 前后端打包操作在本地进行(但要注意服务器和本地的 Maven、Node 版本差异)
  • 前后端项目代码的直接使用或暴露 服务器 ip 地址(这样就不用进行 nginx 代理了)
更新于 : 8/7/2024, 2:16:31 PM