JeecgBoot采用微服务方式,生产环境部署详细文档

原创
2024/11/20 18:13
阅读数 490

环境依赖

Oracle JDK8 可以直接使用的,但是 Oracle JDK8 之后的所有版本,是需要付费商用的,而 jeecg 目前常常会用的是这两个版本,所以我们需要在使用 JDK 8 时正常下载 oracle 版本,而 JDK 17 时,则只能下载 Open JDK。由于 JDK 8 版本过于陈旧,本文档将基于 JDK 17 进行讲解。

# 创建java文件夹
mkdir /usr/local/java
# 解压
tar -zxvf openjdk-17_linux-x64_bin.tar.gz
# 将解压文件移动至java文件夹
mv jdk-17/* /usr/local/java/

# 添加环境变量
vi /etc/profile
# 按 i 键可转为输入模式
# 在文件的export PATH=**** 后新增以下内容
export PATH=$PATH:/usr/local/java/bin
# 按esc键后保存并退出
:x

# 刷新环境变量
source /etc/profiles

# 打印java版本号
java -version
# 如果一切正常,会输入以下内容
openjdk version "17" 2021-09-14
OpenJDK Runtime Environment (build 17+35-2724)                             
OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing) 

# 如果发现版本号不对,那是因为服务器可能默认安装了jdk,可使用以下命令进行卸载
yum -y remove java
# 再次执行以下命令后,再使用java -version检查
source /etc/profile

Apache maven 是 java 工程最受欢迎的打包工具,绝大多数 java 工程都是使用 maven 规范进行构建的,如果我们想将 java 工程转成可执行文件,需要安装 maven。保险起见,maven 版本最好选择在 3.5.0 并且往上,避免版本不支持,本文档使用 3.8.6 版本进行讲解。

# 创建maven安装文件夹
mkdir /usr/local/maven
# 解压
tar -zxvf apache-maven-3.8.6-bin.tar.gz 
# 将解压文件移动至maven文件夹
mv apache-maven-3.8.6/* /usr/local/maven/

# 添加环境变量
vi /etc/profile
# 按 i 键可转为输入模式
# 在文件的export PATH=**** 后新增以下内容
export PATH=$PATH:/usr/local/maven/bin
# 按esc键后保存并退出
:x

# 刷新环境变量
source /etc/profiles

# 打印maven版本号
mvn -version
# 正常将会打印以下内容
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /usr/local/maven  
Java version: 17, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: en_US, platform encoding: UTF-8  
OS name: "linux", version: "5.4.119-19.0009.44", arch: "amd64", family: "unix" 

这时我们只是完成了对 maven 的安装,与 JDK 不同的是,我还需要对 maven 进行配置。maven 默认下载的依赖是使用国外的地址,这时为了减少网络耗时,我们可以换成 jeecg 的 maven 私服地址。为了方便大家更好操作,我写好了一份配置文件,大家可直接进行替换。

# 删除原有配置文件
rm -rf /usr/local/maven/conf/settings.xml

# 新增文件
vi /usr/local/maven/conf/settings.xml
# 将以下内容进行复制按esc键后再使用 :x 进行保存并退出
 <?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <localRepository>/usr/local/maven/repo</localRepository>


  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>

  <mirrors>
       <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>*,!jeecg,!jeecg-snapshots,!getui-nexus</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
  </mirrors>
<profiles>
</profiles>

</settings>

Node.js 是 jeecg 前端工程所依赖的打包工具,作用与 maven 一样,是将前端代码文件打包成可被浏览器运行的前端文件,Node.js 安装的版本推荐为 18 / 20+,本文档以 node 18 进行讲解。

# 创建node安装文件夹
mkdir /usr/local/node
# 解压文件
tar -xf node-v18.16.0-linux-x64.tar.xz
# 将解压文件移动至node安装文件夹
mv node-v18.16.0-linux-x64/* /usr/local/node/

# 添加环境变量
vi /etc/profile
# 按 i 键可转为输入模式
# 在文件的export PATH=**** 后新增以下内容
export PATH=$PATH:/usr/local/node/bin
# 按esc键后保存并退出
:x

# 刷新环境变量
source /etc/profiles

# 打印node 版本号
node -v
# 正常会显示以下内容
v18.16.0

提示:

安装完成 node.js 后,会自动安装 npm 工具,前端工程主要使用该命令进行运行打包,不过该命令效率较慢,建议再安装一个 yarn 提高打包效率,pnpm 工具与 yarn 工具同等作用,不过 pnpm 比较吃配置。

yarn 安装命令:npm install yarn -g

MySQL

jeecg 后端工程使用的 mysql 数据库,本文使用 mysql 8 版本进行讲解

# 下载MySQL Yum存储库
wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
# 安装存储库
yum install mysql80-community-release-el7-3.noarch.rpm
# 安装mysql server
yum -y install mysql-server
# 启动MySQL服务
systemctl start mysqld
# 设置MySQL服务开机自启
systemctl enable mysqld

# 修改root用户密码,安装mysql ,初始化root没有密码
mysql -uroot -p 
# 两次回车
# mysql 要求密码需要含大小写数字特殊字符
alter user 'root'@'localhost' identified by 'rooT1234#';

# 退出mysql
mysql> exit;

jeecg 后端工程使用 Redis 作为分布式缓存数据,本文使用 redis 5 版本进行讲解

# 安装redis
yum -y install redis
# 启动redis服务
systemctl start redis
# 设置redis服务开机自启
systemctl enable redis

Jeecg 工程使用 git 进行版本管理

# 安装git
yum -y install git
# 显示git 版本号
git -v
# 显示以下内容即安装成功
git version 2.43.5
工程初始化
# 拉取代码,如果网络不好可拉取 https://gitee.com/jeecg/JeecgBoot.git
cd ~
git clone https://github.com/jeecgboot/JeecgBoot.git

# 初始化数据库
mysql -uroot -p
#输入前面设置的mysql root账户的密码
rooT1234#
# 在mysql 命令行中,使用source命令执行jeecg提供的sql脚本
mysql> source /root/JeecgBoot/jeecg-boot/db/jeecgboot-mysql-5.7.sql
mysql> source /root/JeecgBoot/jeecg-boot/db/table_nacos.sql
mysql> source /root/JeecgBoot/jeecg-boot/db/tables_xxl_job.sql
# 全部完成后,检查数据库
mysql> show databases;
# 显示以下数据库列表,即初始化成功
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jeecg-boot         |
| mysql              |
| nacos              |
| performance_schema |
| sys                |
| xxl_job            |
+--------------------+

# 后端打包
cd JeecgBoot/jeecg-boot
# 修改nacos数据库连接用户名密码
vi jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application-mysql.yml
# 将以下数据库连接信息的密码修改为前端设置的密码
db:
  num: 1
  password:
    '0': ${MYSQL-PWD:rooT1234#}
# 按esc键后输入以下命令保存并关闭
:x
# 执行后端工程打包命令
mvn clean install -P dev,SpringCloud

# 前端打包
cd JeecgBoot/jeecgboot-vue3
yarn install

为本机添加 hosts

# 打开系统host 文件
vi /etc/hosts
# 按 i 转为编辑模式
#输入以下内容
27.0.0.1 jeecg-boot-mysql
127.0.0.1 jeecg-boot-redis
127.0.0.1 jeecg-boot-nacos
127.0.0.1 jeecg-boot-gateway
127.0.0.1 jeecg-boot-system

# 按ESC键后输入以下命令保存并退出
:x

启动 nacos

cd ~
# 启动nacos 服务
nohup java -jar JeecgBoot/jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos/target/jeecg-cloud-nacos-3.7.1.jar > nacos.log 2>&1 &

# 可通过以下命令查看nacos启动日志,按ctrl+c键退出
tail -f nacos.log

nacos 启动后,需要对其余服务的数据库用户名密码进行修改,默认设置为 root root

http://119.45.196.21:8848/nacos

编辑 public 命名空间的 jeecg-dev.yaml,将以下内容进行修改即可

spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
        allow:
      web-stat-filter:
        enabled: true
    dynamic:
      druid:
        initial-size: 5
        min-idle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        filters: stat,wall,slf4j
        wall:
          selectWhereAlwayTrueCheck: false
        stat:
          merge-sql: true
          slow-sql-millis: 5000
      datasource:
        master:
          url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
          username: root
          # 修改这一行
          password: rooT1234#
          driver-class-name: com.mysql.cj.jdbc.Driver
# 启动system,因为system会加载动态路由信息至redis,gateway服务需要读取该内容
nohup java -jar JeecgBoot/jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start/target/jeecg-system-cloud-start-3.7.1.jar > system.log 2>&1 &
# 查看system启动日志
tail -f system.log

# 启动gateway
nohup java -jar JeecgBoot/jeecg-boot/jeecg-server-cloud/jeecg-cloud-gateway/target/jeecg-cloud-gateway-3.7.1.jar > gateway.log 2>&1 &
# 查看gateway启动日志
tail -f gateway.log

# 启动demo
nohup java -jar JeecgBoot/jeecg-boot/jeecg-server-cloud/jeecg-demo-cloud-start/target/jeecg-demo-cloud-start-3.7.1.jar > demo.log 2>&1 &
# 查看demo启动日志
tail -f demo.log

# 查看日志时,均可按ctrl+c 退出查看
# 可使用 jps -l 查看所有进程
# 使用 kill -9 [进程号] 可关闭对应进程

nginx 主要可用于前端打包后的静态文件代理,同时也可用于服务器对外的屏障,只需要开放 nginx 监听的端口,屏蔽其它端口对外访问,有效提高服务器的安全防护。

# 安装nginx
yum -y install nginx
# 启动nginx 
systemctl start nginx
# 开机启动nginx
systemctl enable nginx

安装成功后,nginx 的配置文件,默认存储在 /etc/nginx/nginx.conf

# 修改前端配置文件
vi JeecgBoot/jeecgboot-vue3/.env.production

# 将 http://jeecg-boot-system:8080/jeecg-boot 
# 修改成 http://jeecg-boot-gateway:9999

配置修改完成后,可使用以下命令进行构建,可生成 h5 静态文件的目录 /dist

cd JeecgBoot/jeecgboot-vue3
yarn run build
rm -rf /etc/nginx/nginx.conf

vi /etc/nginx/nginx.conf

添加以下内容

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

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

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html/dist;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                 # 用于配合 browserHistory使用
                 try_files $uri $uri/ /index.html;
        }

        location  /jeecgboot/ {
                #后台接口地址(我们部署去掉了/jeecg-boot项目名,如果你有请加上)
                proxy_pass         http://jeecg-boot-gateway:9999/;
                proxy_redirect off;
                #真实IP获取
                proxy_set_header  Host             $host;
                proxy_set_header  X-Real-IP        $remote_addr;
                set $my_proxy_add_x_forwarded_for $proxy_add_x_forwarded_for;
                if ($proxy_add_x_forwarded_for ~* "127.0.0.1"){
                   set $my_proxy_add_x_forwarded_for $remote_addr;
                }
                proxy_set_header   X-Forwarded-For $my_proxy_add_x_forwarded_for;
    }
        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

}

配置完成后,使用以下命令对配置进行热加载

# 检查配置是否完善
nginx -t
# 热加载配置变更
nginx -s reload

可在浏览器输入 http://119.45.196.21, 即可进入系统

用户名密码为:admin/123456

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部