話不多說直接上干貨

部署對象:

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/

 

 

 然后看看負載均衡 兩邊都有日志

本次的部署順利完成了