话不多说直接上干货

部署对象:

ruoyi-vue springboot+vue

需要的环境:

jdk

docker 

mysql 

redis

nginx

 

1 docker

对于不熟悉docker或者没有安装docker的可以看 02-Docker安装 里面说的很详细

2 jdk的安装

一、在线下载JDK
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

二、 添加执行权限:
chmod +x jdk-8u131-linux-x64.rpm
三、执行rpm进行安装
rpm -ivh jdk-8u131-linux-x64.rpm
四、查看此时JDK是否安装成功
java -version
五、查看JDK的安装路径
命令:cd /usr/java
ls查看是否存在jdk1.8.0_131
六、配置JDK环境变量
1、编辑 /etc/profile
命令:vim /etc/profile
2、进行环境配置
命令:i进入编辑模式
3、编辑环境变量
//在文件末尾追加如下信息:
jexport JAVA_HOME=/usr/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
4、强制保存并退出
命令::wq!
5、使资源文件生效
命令:source /etc/profile
最后:查看JDK安装情况
1、使用javac命令,不会出现command not found

 

3 MySQL的安装(本次基于docker安装的,不用docker也行,只是docker要方便一些,不用就删除,比较方便)

docker 安装mysql5.7版本
docker pull mysql:5.7

docker run -d -p 3306:3306 \
           --privileged=true \
           -v /app/mysql/log:/var/log/mysql \
           -v /app/mysql/data:/var/lib/mysql \
           -v /app/mysql/conf:/etc/mysql/conf.d \
           -e MYSQL_ROOT_PASSWORD=root \
           --name mysql \
           mysql:5.7/app/mysql/conf下新建 my.cnf,通过容器卷同步给mysql实例,解决中文乱码问题:

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

重启mysql容器,使得容器重新加载配置文件:

docker restart mysql

 

4 redis安装就用单节点了 后面集群部署有时间再写,

实际应用版Redis
配置文件、数据文件都和容器卷进行映射。
步骤:
 宿主机创建目录/app/redis 
 在/app/redis下创建文件redis.conf,主要修改以下几项配置 

# 开启密码验证(可选)
requirepass 123

# 允许redis外地连接,需要注释掉绑定的IP
# bind 127.0.0.1

# 关闭保护模式(可选)
protected-mode no

# 注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败
daemonize no

# 开启redis数据持久化, (可选)
appendonly yes

即最后的配置文件为:  
 启动docker容器:(因为要使用自定义的配置文件,所以需要指定容器运行的命令为redis-server 容器内配置文件路径) 

docker run -p 6379:6379 --name redis6.2.6 --privileged=true \
-v /data/dockerData/redis/conf/redis.config:/etc/redis/redis.config \
-v /data/dockerData/redis/data:/var/lib/redis \
-v /data/dockerData/redis/logs:/logs \
-d redis:6.2.6 redis-server /etc/redis/redis.config

验证Redis的安装情况
docker exec -it 容器id /bin/bash
redis-cli -p 6379
auth 123

5 nginx的安装

1、下载nginx 镜像
docker pull nginx

1.1、查看镜像
docker images

# 创建挂载目录
mkdir -p /app/nginx/conf
mkdir -p /app/nginx/log
mkdir -p /app/nginx/html

# 生成容器
docker run --name nginx -p 9001:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /app/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /app/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /app/nginx


# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
 
# 删除正在运行的nginx容器
docker rm -f nginx


docker run \
-p 9003:80 \
--name nginx \
-v /app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /app/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /app/nginx/log:/var/log/nginx \
-v /app/nginx/html:/usr/share/nginx/html \
-d nginx:latest

 

基本的环境安装就到这里了后续就是项目的打包运行

ruoyi-vue 地址 RuoYi: 🎉 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用

git拉取代码  git clone https://gitee.com/y_project/RuoYi.git 前后端代码都在 这里就不多说课有问题可以看官网的说明

 

下载到本地打包 

会得到 dist.zip  ruoyi-admin.jar  上传到liunx中

修改nginx的配置

主要就是修改 nginx.conf default.conf

在nginx.conf 加上

upstream ruoyi-server {
# upstream是关键字必须有,后面的server_pools是upstream集群组的名字,可自定义名称,调用时就用这个名字。
server 192.168.200.129:9222 weight=5;
server 192.168.200.129:9111 weight=10;
# server关键字是固定的,后面可以接域名或IP。如果不指定端口,默认是80端口。weight代表权重,数值越大被分配的请求越多。
}

完整的:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    upstream ruoyi-server {
    # upstream是关键字必须有,后面的server_pools是upstream集群组的名字,可自定义名称,调用时就用这个名字。
      server 192.168.200.129:9222 weight=10;
      server 192.168.200.129:9111 weight=20;
    # server关键字是固定的,后面可以接域名或IP。如果不指定端口,默认是80端口。weight代表权重,数值越大被分配的请求越多。
    }

    include /etc/nginx/conf.d/*.conf;
}

 

在default.conf加上

server {
        listen 8099;
        server_name 110.41.42.252;  # 替换为你的域名或IP地址

        # 前端配置
        location / {
            root /home/nicong/ng/html/dist;
            index index.html;
            try_files $uri $uri/ /index.html;
        }

        # 后端配置
        location /prod-api/ {
            proxy_pass http://ruoyi-server/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

完整的:

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;
    
    location / {
        root   /usr/share/nginx/html/dist;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    # 后端配置
    location /prod-api/ {
        proxy_pass http://ruoyi-server/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

 

要重启nginx配置才会生效

docker ps

docker restart nginx容器id

docker ps 查看nginx情动情况

 

部署2个后台服务

随便建2个目录

mkdir server1

mkdir server2

将jar包cp到新建的目录

分别运行命令:(jvm 的哪些启动参数后续再有时间单独说明吧)

java -Dname=ruoyi9111  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -jar ruoyi-admin.jar --server.port=9111 > ruo.log 2>&1 &

java -Dname=ruoyi9222  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -jar ruoyi-admin.jar --server.port=9222 > ruo.log 2>&1 &

查看jar包启动情况

ps -ef|grep ruoyi

 

在页面访问: 你的liunx端口加上nginx开放的端口

我的是http://192.168.200.129:9003/

 

 

 然后看看负载均衡 两边都有日志

本次的部署顺利完成了