若依项目动静分离项目实现
若依(RuoYi)是一款基于 Spring Boot + Spring Security + MyBatis 的快速开发框架,提供了简洁的代码生成、权限管理、用户管理等功能,适用于企业后台管理系统的快速搭建。动静分离是若依项目架构的一部分,旨在提高系统的性能和安全性。
若依动静分离的典型架构
1.前端(RuoYi-Vue)
- 前端使用Vue.js框架进行开发,构建了一个单页面应用程序(SPA)。
- 前端代码通过Vue CLI编译和打包为静态文件(如HTML、CSS、JavaScript)。
2.后端(RuoYi-Admin)
- 后端基于Spring Boot,提供RESTful API服务,处理业务逻辑、数据库操作和权限管理。
- 后端不再直接处理静态资源请求,专注于处理动态请求,如API调用和业务处理。
1、服务需求
主机名称 | IP地址 | 运行服务 | 版本 |
---|---|---|---|
nginx-server | 192.168.29.50 | nginx前端项目 | 1.26.1 |
java-server | 192.168.29.51 | jdk、maven | jdk:1.8 maven:3.8.7 |
mysql-server | 192.168.29.52 | mysql | 5.7 |
redis-server | 192.168.29.53 | redis | 6.2.7 |
gitlab-server | 192.168.29.54 | gitlab | 17.1.1 |
jenkins-server | 192.168.29.55 | jdk、maven、tomcat、jenkins | jdk:11.0.2 maven:3.8.5 tomcat:8.5.45 jenkins:2.414.3 |
2、环境安装
1、Nginx安装与配置
1.配置Nginx安装源
[root@nginx-server ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2.安装Nginx
[root@nginx-server ~]# yum -y install nginx
2、JDK、Maven安装与配置
[root@java-server ~]# ls
apache-maven-3.8.7-bin.tar.gz jdk-8u211-linux-x64.tar.gz
将jdk和maven安装包解压到/usr/local下
[root@java-server ~]# tar -xvzf jdk-8u211-linux-x64.tar.gz -C /usr/local
[root@java-server ~]# tar -xvzf apache-maven-3.8.7-bin.tar.gz -C /usr/local
更改目录名称
[root@java-server ~]# cd /usr/local
[root@java-server local]# mv jdk1.8.0_211/ java
[root@java-server local]# mv apache-maven-3.8.7/ maven
配置环境变量
# 在文件下方添加以下内容
[root@java-server local]# vim /etc/profile
# 指定java安装目录
JAVA_HOME=/usr/local/java
# 指定maven安装目录
MAVEN_HOME=/usr/local/maven/
PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
# 重新加载环境变量
[root@java-server local]# source /etc/profile
测试
# 测试java
[root@java-server local]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
# 测试maven
[root@java-server local]# mvn -v
Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /usr/local/maven
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_211/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.71.1.el7.x86_64", arch: "amd64", family: "unix"
3、MySQL5.7安装与配置
1.安装MySQL5.7
# 卸载旧依赖
[root@mysql-server ~]# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
# 安装wget
[root@mysql-server ~]# yum install -y wget yum-utils git
# 安装MySQL安装源
[root@mysql-server ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@mysql-server ~]# yum install -y mysql80-community-release-el7-3.noarch.rpm
# 启动MySQL5.7安装源
[root@mysql-server ~]# vim /etc/yum.repos.d/mysql-community.repo
# 安装MySQL5.7
[root@mysql-server ~]# yum install -y mysql-community-server
# 启动MySQL
[root@mysql-server ~]# systemctl start mysqld
[root@mysql-server ~]# systemctl enable mysqld
# 查看密码
[root@mysql-server ~]# grep "password" /var/log/mysqld.log
2024-09-16T06:57:22.909747Z 1 [Note] A temporary password is generated for root@localhost: l#spc=wdt13W
2.修改root密码与主机连接地址
修改密码
###方式一:交互式修改
# 登录MySQL
[root@mysql-server ~]# mysql -uroot -p'l#spc=wdt13W'
# 修改root密码为MySQL@123;
mysql> SET PASSWORD = PASSWORD('MySQL@123');
###方式二:非交互式修改
[root@mysql-server ~]# mysqladmin -u'root' -p'l#spc=wdt13W' password 'MySQL@123'
3.修改配置文件
[root@mysql-server ~]# vim /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-time_zone = '+8:00'
# 新建数据库添加的配置信息
lower_case_table_names=1
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
max_connections=10000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
# 重启MySQL
[root@mysql-server ~]# systemctl restart mysqld
创建一个数据库ruoyi,创建用户ruoyi用来管理ruoyi库
[root@mysql-server ~]# mysql -uroot -p'MySQL@123'
mysql> create database ruoyi;
mysql> grant all on ruoyi.* to 'ruoyi'@'%' identified by 'Ruoyi@123';
mysql> flush privileges;
4、Redis安装与配置
1.安装
# 下载安装包
[root@redis-server ~]# wget https://download.redis.io/releases/redis-6.2.7.tar.gz
# 解压安装包
[root@redis-server ~]# tar -xvzf redis-6.2.7.tar.gz -C /usr/local/
[root@redis-server ~]# cd /usr/local/
# 更改目录名称
[root@redis-server local]# mv redis-6.2.7/ redis
# 安装gcc和make工具
[root@redis-server local]# yum -y install gcc make
[root@redis-server local]# cd redis
[root@redis-server redis]# make
2.配置修改
修改配置文件
# 修改以下内容
[root@redis-server redis]# vim redis.conf
bind 0.0.0.0
daemonize yes
logfile "/var/log/redis.log"
requirepass 123456
# 启动redis
[root@redis-server ~]# cd /usr/local/redis/src/
[root@redis-server src]# nohup ./redis-server ../redis.conf &
# 测试redis
[root@redis-server src]# ./redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG
5、Gitlab安装与配置
1、配置gitlab安装源并安装
[root@gitlab-server ~]# vim /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever
gpgcheck=0
enabled=1
# 安装gitlab
[root@gitlab-server ~]# yum -y install gitlab-ce
2、修改gitlab配置文件
[root@gitlab-server ~]# vim /etc/gitlab/gitlab.rb
1.# 添加对外的域名(gitlab.papamk.com请添加A记录指向本服务器的公网IP):将原来的修改为
external_url 'http://192.168.29.54'
2.设置地区
gitlab_rails['time_zone'] = 'Asia/Shanghai'
3.设置数据存放目录
git_data_dirs({
"default" => {
"path" => "/mnt/nfs-01/git-data"
}
})
4.开启ssh端口
gitlab_rails['gitlab_shell_ssh_port'] = 22
3、初始化gitlab
重新加载,时间比较长,大概需要10分钟左右
[root@gitlab-server ~]# gitlab-ctl reconfigure
4、启动gitlab服务
[root@gitlab-server ~]# gitlab-ctl start
ok: run: alertmanager: (pid 3191) 189s
ok: run: gitaly: (pid 3155) 192s
ok: run: gitlab-exporter: (pid 3168) 191s
ok: run: gitlab-kas: (pid 2699) 349s
ok: run: gitlab-workhorse: (pid 3139) 192s
ok: run: logrotate: (pid 2425) 373s
ok: run: nginx: (pid 3149) 192s
ok: run: node-exporter: (pid 3163) 191s
ok: run: postgres-exporter: (pid 3199) 188s
ok: run: postgresql: (pid 2536) 355s
ok: run: prometheus: (pid 3177) 190s
ok: run: puma: (pid 2762) 298s
ok: run: redis: (pid 2456) 367s
ok: run: redis-exporter: (pid 3170) 190s
ok: run: sidekiq: (pid 2783) 292s
5、登录gitlab服务并修改密码
查看初始密码
[root@gitlab-server ~]# cat /etc/gitlab/initial_root_password
修改密码之后会自动退出,需要使用新密码重新登录
6、Jenkins安装与部署
我们要用2.414.3版本的jenkins,所以我们选择war包安装方式
nodejs安装与部署
因为我们要对前端代码进行打包,所以需要安装nodejs。
[root@jenkins-server ~]# tar -xvf node-v16.13.0-linux-x64.tar.xz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv node-v16.13.0-linux-x64/ node
配置环境变量
# 在文件下方添加以下内容
[root@jenkins-server local]# vim /etc/profile
NODE_HOME=/usr/local/node
NODE_PATH=$NODE_HOME/bin/node_modules
PATH=$NODE_HOME/bin:$PATH
[root@jenkins-server local]# source /etc/profile
验证
[root@jenkins-server local]# node -v
v16.13.0
[root@jenkins-server local]# npm -v
8.1.0
jdk安装与部署
将jdk安装包解压到/usr/local下
[root@jenkins-server ~]# tar -xvzf jdk-11.0.2_linux-x64_bin.tar.gz -C /usr/local/
更改目录名称
[root@jenkins-server ~]# cd /usr/local
[root@jenkins-server local]# mv jdk-11.0.2/ java
配置环境变量
[root@java-server local]# vim /etc/profile
NODE_HOME=/usr/local/node
NODE_PATH=$NODE_HOME/bin/node_modules
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$NODE_HOME/bin:$PATH
[root@java-server local]# source /etc/profile
验证
[root@jenkins-server local]# java -version
java version "11.0.2" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+7-LTS, mixed mode)
maven安装与部署
因为我们要对后端代码进行打包,所以安装maven。
将maven安装包解压到/usr/local下
[root@jenkins-server ~]# tar -xvzf apache-maven-3.8.5-bin.tar.gz -C /usr/local/
更改目录名称
[root@jenkins-server ~]# cd /usr/local
[root@jenkins-server local]# mv apache-maven-3.8.5/ maven
配置环境变量
[root@java-server local]# vim /etc/profile
NODE_HOME=/usr/local/node
NODE_PATH=$NODE_HOME/bin/node_modules
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/maven
PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$NODE_HOME/bin:$PATH
[root@java-server local]# source /etc/profile
修改maven插件拉取地址
[root@jenkins-server local]# vim maven/conf/settings.xml
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
验证
[root@jenkins-server local]# mvn -v
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /usr/local/maven
Java version: 11.0.2, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.71.1.el7.x86_64", arch: "amd64", family: "unix"
Tomcat安装与部署
将tomcat安装包解压到/usr/local下
[root@jenkins-server ~]# tar -xvzf apache-tomcat-8.5.45.tar.gz -C /usr/local/
更改目录名称
[root@jenkins-server ~]# cd /usr/local
[root@jenkins-server local]# mv apache-tomcat-8.5.45/ tomcat
验证
# 启动tomcat
[root@jenkins-server local]# tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
浏览器访问http://192.168.29.55:8080
# 关闭tomcat服务
[root@jenkins-server local]# tomcat/bin/shutdown.sh
# 删除tomcat默认访问资源
[root@jenkins-server local]# rm -rf tomcat/webapps/*
jenkins安装与配置
将jenkins2.414.3的war包上传到webapp目录下
[root@jenkins-server local]# ls tomcat/webapps/
jenkins.war
启动tomcat
# 启动tomcat
[root@jenkins-server local]# tomcat/bin/startup.sh
浏览器访问http://192.168.29.55:8080/jenkins
如果显示的是这个错误页面,是因为缺少一些包
[root@jenkins-server local]# yum -y install libXrender libXext libXtst fontconfig
重启tomcat,再次访问,出现这个页面
jenkins默认用户为admin,查看初始密码
[root@jenkins-server local]# cat /root/.jenkins/secrets/initialAdminPassword
f1536f668da24346955bac33136da413
如果这些插件安装失败的话,点击继续即可,不用重新尝试下载
若依项目
拉取若依源码
[root@jenkins-server ~]# yum -y install git
[root@jenkins-server ~]# git config --global user.name "talon"
[root@jenkins-server ~]# git config --global user.email "XXXXX@example.com"
[root@jenkins-server ~]# git config --list
user.name=talon
user.email=XXXXX@example.com
[root@jenkins-server ~]# git clone https://gitee.com/y_project/RuoYi-Vue.git
Cloning into 'RuoYi-Vue'...
remote: Enumerating objects: 16815, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 16815 (delta 1), reused 1 (delta 0), pack-reused 16800
Receiving objects: 100% (16815/16815), 3.95 MiB | 1.82 MiB/s, done.
Resolving deltas: 100% (8547/8547), done.
[root@jenkins-server ~]# ls
apache-tomcat-8.5.45.tar.gz jenkins.war RuoYi-Vue
apache-maven-3.8.5-bin.tar.gz jdk-11.0.2_linux-x64_bin.tar.gz node-v16.13.0-linux-x64.tar.xz
将数据导入到数据库中
sql文件存储在拉取的RuoYi-Vue中
[root@jenkins-server ~]# ls /root/RuoYi-Vue/sql/
quartz.sql ry_20240629.sql
MySQL服务器创建sql文件存放目录
[root@mysql-server ~]# mkdir -p /ruoyi/
将sql文件发送到MySQL服务器上指定目录
[root@jenkins-server ~]# scp -r /root/RuoYi-Vue/sql/ 192.168.29.52:/ruoyi
在MySQL服务器上将数据导入数据库
[root@mysql-server ~]# mysql -uroot -p'MySQL@123' ruoyi < /ruoyi/sql/quartz.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@mysql-server ~]# mysql -uroot -p'MySQL@123' ruoyi < /ruoyi/sql/ry_20240629.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
登录数据库查看是否导入成功
更改项目配置信息
更改MySQL配置信息
[root@jenkins-server ~]# vim RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml
更改Redis配置信息
[root@jenkins-server ~]# vim RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml
打包前端项目
[root@jenkins-server ~]# cd /root/RuoYi-Vue/ruoyi-ui/
安装插件
[root@jenkins-server ruoyi-ui]# npm install -registry=http://registry.npmmirror.com
备注:如果此步失败,先执行以下步骤
# 安装cnpm [root@jenkins-server ruoyi-ui]# npm install -g cnpm -registry=http://registry.npmmirror.com # 安装vue3 [root@jenkins-server ruoyi-ui]# cnpm init vue@3.0.0 # 安装插件 [root@jenkins-server ruoyi-ui]# cnpm install
编译前端代码
[root@jenkins-server ruoyi-ui]# npm run build:prod
查看当前目录
[root@jenkins-server ruoyi-ui]# ls
dist
前端项目部署
nginx服务器创建前端项目存放目录
[root@nginx-server ~]# mkdir -p /ruoyi/ruoyi-ui
将前端项目从jenkins服务器拷贝到到nginx服务器指定目录
[root@jenkins-server ruoyi-ui]# scp -r /root/RuoYi-Vue/ruoyi-ui/dist 192.168.29.50:/ruoyi/ruoyi-ui
编辑nginx配置文件
[root@nginx-server ~]# vim /etc/nginx/conf.d/default.conf
server {
location / {
root /ruoyi/ruoyi-ui/dist;
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://192.168.29.51:8080/;
}
}
检查配置文件语法格式
[root@nginx-server ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新加载nginx服务
[root@nginx-server ~]# systemctl reload nginx
检查nginx启动情况
[root@nginx-server ~]# systemctl status nginx
访问http://192.168.29.50
现在虽然可以访问登录页面,但是不可以登录。
打包后端项目
[root@jenkins-server ~]# cd /root/RuoYi-Vue/ruoyi-admin
安装插件
[root@jenkins-server ruoyi-admin]# mvn install
安装插件是根据pom.xml文件来安装的,所以工作目录下需要有项目对应的pom.xml文件
编译代码
# clean 清理删除已有target目录
# package 对项目进行打包
[root@jenkins-server ruoyi-admin]# mvn clean package
或
[root@jenkins-server ruoyi-admin]# mvn clean
[root@jenkins-server ruoyi-admin]# mvn package
查看打包的项目
[root@jenkins-server ruoyi-admin]# ls
pom.xml src target
[root@jenkins-server ruoyi-admin]# ls target/
classes generated-sources maven-archiver maven-status ruoyi-admin.jar ruoyi-admin.jar.original
后端项目部署
后端服务器创建后端项目存放目录
[root@java-server ~]# mkdir -p /ruoyi/ruoyi-admin
将后端jar包从jenkins服务器拷贝到到后端服务器指定目录
[root@jenkins-server ruoyi-admin]# scp -r /root/RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar 192.168.29.51:/ruoyi/ruoyi-admin
启动jar包
[root@java-server ruoyi-admin]# nohup java -jar ruoyi-admin.jar &
# 查看运行日志
[root@java-server ruoyi-admin]# tail -f nohup.out
浏览器访问
http://192.168.29.50
Gitlab准备项目
Jenkins配置密钥对
jenkins服务器配置密钥对,将公钥配置在gitlab服务上
[root@jenkins-server ~]# ssh-keygen
[root@jenkins-server ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGTI+auW3n00cAi4puLLh1nRLh7y8xa4SBhcsobxtGdtPOfZYY8tefcJaP3OSHzGkz0YI7MRaz5I42syTsWB1J03AgQ122VkwUgNuuLppOQ0vAFioaVt5tbvxsRS4gLJEFbv5isWmq3enhQjiSNeaJ1KIrizqsPNoabeKGvOXn8XjJquTEJZH3MpbkZ0OZe8ZUEjotswsoArYFU6rA0vaX8RBnmRZxbTcW05N7YA5VO87zLbZ/ivm0JDZNWB/wQylcZv9ToBeiCarBWROCjRfK/j7jkfBXehGUg5e/QxN0EUcgIrFdSTFx48ONiJJk1aGVABuUg2JWekhAIqNvQbw7 root@jenkins-server
复制gitlab项目地址
将ruoyi-web项目拉取到jenkins服务器指定目录
[root@jenkins-server ~]# cd /tmp/
[root@jenkins-server tmp]# git clone git@192.168.29.54:root/ruoyi-vue.git
[root@jenkins-server tmp]# ls
ruoyi-vue
[root@jenkins-server tmp]# ls ruoyi-vue/
README.md
将前端源码拷贝到代码目录
[root@jenkins-server tmp]# cp -r /root/RuoYi-Vue/* ruoyi-vue/
[root@jenkins-server tmp]# cd ruoyi-vue/
[root@jenkins-server ruoyi-vue]# ls
bin LICENSE README.md ruoyi-common ruoyi-generator ruoyi-system ry.bat sql
doc pom.xml ruoyi-admin ruoyi-framework ruoyi-quartz ruoyi-ui ry.sh
将代码推送到gitlab仓库
[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "RuoYi前端源码第一版"
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 887, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (780/780), done.
Writing objects: 100% (885/885), 73.21 MiB | 11.01 MiB/s, done.
Total 885 (delta 100), reused 0 (delta 0)
remote: Resolving deltas: 100% (100/100), done.
To git@192.168.29.54:root/ruoyi-vue.git
b8150e0..1f23afc main -> main
Jenkins服务配置
Jenkins安装插件
插件搜索git、ssh、maven、nodejs
安装完成之后最好重启一下jenkins
等待重启完成。
Jenkins配置Node工具&JDK工具
经常点击“应用”按钮
Jenkins构建前端项目
源码仓库配置&配置公钥私钥
[root@jenkins-server ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxkyPmrlt59NHAIuKbiy4dZ0S4e8vMWuEgYXLKG8bRnbTzn2W
GPLXn3CWj9zkh8xpM9GCOzEWs+SONrMk7FgdSdNwIENdtlZMFIDbri6aTkNLwBYq
GlbebW78bEUuICyRBW7+YrFpqt3p4UI4kjXmidSiK4s6rDzaGm3ihrzl5/F4yark
xCWR9zKW5GdDmXvGVBI6LbMLKAK2BVOqwNL2l/EQZ5kWcW03FtOTe2AOVTvO8y22
f4r5tCQ2TVgf8EMpXGb/U6AXogmqwVkTgo0Xyv4+45HwV3oRlIOXv0MTdBFHICKx
XUkxcePDjYiSZNWhlQAblINiVnpIQCKjb0G8OwIDAQABAoIBAHytJFj+nyhzwR+J
nIa63VstX/LnxH9I/23EJkCM4tRB39fjRBz5ijJ3wmI/Wvw6vCZVYpE+wuxmFjg0
GFH08K07IDNYx7HdvkXh4r04FdKBIz5pcR1QYtbhQhn8wQx/mMqWx6BbtXk1v1fe
n9zlwMYGB9Ri3IfwVpzpW9SlLdPO9hiHu41jsn2pu8BDa0HuIZCeBclxSMLp5WAE
zhf0VIPqxe4QkOhBSyDAhrrZL4+JM/NEwNIVWDhd9GtrpW7WSpmDLQLplh+NIjOY
IL6YRNMWKtFaC2ubg0tpQhHdUMclJlcSnFfGwnpePNieaET053oZHOCu/1hLLd9K
foU6UDkCgYEA7P5w2sCxQ4Fky+Aqzbhqe1CEX1jZQWwxKPJKOPc+/IyDKsSnmJMO
gLy/myweDQ+4l+n6R2l9lcos3QRLyMrgLO2x+eQ9P79laBYpX/AlTZXVeqCl0voz
GZsHOdSCxwAF5cWP9tZpGOhZTYgC8nhiMJyZzT1Z55JvC3NjO0bkvy8CgYEA1jOz
7zqsJ4jVGMUuV3cUkGmwhRqTtLh6agprJzD887/fh+ErBDqEfX3fUCtSw8D0+BJ1
uwbUb3DHCgBAgRrDsUCKePMptB+U71TVARwefpICmg3r5HgnhRZUHfrb0UmBbwIb
3kRUOxk26mhV6SoeVcubjNlfGJ6qCV+K11m+cLUCgYEAukBpDvIbHdNmFPfyi8Sg
IpOvxIM+ErVlmSl5fXWKUc5YE1eD41vHLROpfdjZMSimyPUAVfko0nyWb4g9yurt
7UFM+vgNzririHbKQ3SmzGex43K3f6xUVo5IyoEh2iVBfUebkcEFzaZk8JKwxkAn
4s5f7TWHH4AstxIS7XYUtc8CgYAJdXMGp2KexE4Ur/Bh8GI6FlCzL/9BxbuyHw+o
RWOGJ/zo9Sp/H05mdD5+PcuD1Wt74OTOA3kyCprfeC9hBBuMIjt7J9G5oINlJivZ
xrIaCLyQrPizuBKWr+u6/y7hyQssKb2tTPsjOPPR2hWhHDkGtN0DlT27ypXboBpz
dAUS2QKBgEKHw6oJ8+IqYlA4TlyDoyT6lXiR+iQdURVxY9VL1tArtAO3c+meW8E5
LVNV+SLxTNEPeCfYClE7QDYEwn8oVi2yXgazvKF8blBEjYnHn7PWBLoa072UifQL
oyAdEQaKx4l7gMkvXKNnSxxfHP19AbOVcJACheGW0fQuSQVccEBq
-----END RSA PRIVATE KEY-----
尝试ssh拉取
Jenkins服务器查看代码是否拉取成功
[root@jenkins-server ~]# cd /root/.jenkins/workspace/ruoyi-web
[root@jenkins-server ruoyi-web]# ls
bin LICENSE README.md ruoyi-common ruoyi-generator ruoyi-system ry.bat sql
doc pom.xml ruoyi-admin ruoyi-framework ruoyi-quartz ruoyi-ui ry.sh
配置node工具
Jenkins配置Publish Over SSH
[root@jenkins-server ~]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxkyPmrlt59NHAIuKbiy4dZ0S4e8vMWuEgYXLKG8bRnbTzn2W
GPLXn3CWj9zkh8xpM9GCOzEWs+SONrMk7FgdSdNwIENdtlZMFIDbri6aTkNLwBYq
GlbebW78bEUuICyRBW7+YrFpqt3p4UI4kjXmidSiK4s6rDzaGm3ihrzl5/F4yark
xCWR9zKW5GdDmXvGVBI6LbMLKAK2BVOqwNL2l/EQZ5kWcW03FtOTe2AOVTvO8y22
f4r5tCQ2TVgf8EMpXGb/U6AXogmqwVkTgo0Xyv4+45HwV3oRlIOXv0MTdBFHICKx
XUkxcePDjYiSZNWhlQAblINiVnpIQCKjb0G8OwIDAQABAoIBAHytJFj+nyhzwR+J
nIa63VstX/LnxH9I/23EJkCM4tRB39fjRBz5ijJ3wmI/Wvw6vCZVYpE+wuxmFjg0
GFH08K07IDNYx7HdvkXh4r04FdKBIz5pcR1QYtbhQhn8wQx/mMqWx6BbtXk1v1fe
n9zlwMYGB9Ri3IfwVpzpW9SlLdPO9hiHu41jsn2pu8BDa0HuIZCeBclxSMLp5WAE
zhf0VIPqxe4QkOhBSyDAhrrZL4+JM/NEwNIVWDhd9GtrpW7WSpmDLQLplh+NIjOY
IL6YRNMWKtFaC2ubg0tpQhHdUMclJlcSnFfGwnpePNieaET053oZHOCu/1hLLd9K
foU6UDkCgYEA7P5w2sCxQ4Fky+Aqzbhqe1CEX1jZQWwxKPJKOPc+/IyDKsSnmJMO
gLy/myweDQ+4l+n6R2l9lcos3QRLyMrgLO2x+eQ9P79laBYpX/AlTZXVeqCl0voz
GZsHOdSCxwAF5cWP9tZpGOhZTYgC8nhiMJyZzT1Z55JvC3NjO0bkvy8CgYEA1jOz
7zqsJ4jVGMUuV3cUkGmwhRqTtLh6agprJzD887/fh+ErBDqEfX3fUCtSw8D0+BJ1
uwbUb3DHCgBAgRrDsUCKePMptB+U71TVARwefpICmg3r5HgnhRZUHfrb0UmBbwIb
3kRUOxk26mhV6SoeVcubjNlfGJ6qCV+K11m+cLUCgYEAukBpDvIbHdNmFPfyi8Sg
IpOvxIM+ErVlmSl5fXWKUc5YE1eD41vHLROpfdjZMSimyPUAVfko0nyWb4g9yurt
7UFM+vgNzririHbKQ3SmzGex43K3f6xUVo5IyoEh2iVBfUebkcEFzaZk8JKwxkAn
4s5f7TWHH4AstxIS7XYUtc8CgYAJdXMGp2KexE4Ur/Bh8GI6FlCzL/9BxbuyHw+o
RWOGJ/zo9Sp/H05mdD5+PcuD1Wt74OTOA3kyCprfeC9hBBuMIjt7J9G5oINlJivZ
xrIaCLyQrPizuBKWr+u6/y7hyQssKb2tTPsjOPPR2hWhHDkGtN0DlT27ypXboBpz
dAUS2QKBgEKHw6oJ8+IqYlA4TlyDoyT6lXiR+iQdURVxY9VL1tArtAO3c+meW8E5
LVNV+SLxTNEPeCfYClE7QDYEwn8oVi2yXgazvKF8blBEjYnHn7PWBLoa072UifQL
oyAdEQaKx4l7gMkvXKNnSxxfHP19AbOVcJACheGW0fQuSQVccEBq
-----END RSA PRIVATE KEY-----
将Jenkins服务器root用户生成的公钥发送给nginx服务器的root用户
[root@jenkins-server ~]# ssh-copy-id root@192.168.29.50
配置构建步骤
Jenkins配置发送到nginx服务器
构建前端项目
在Jenkins服务器上查看是否打包成功
在Nginx服务器上查看项目目录时间是否更新
[root@nginx-server ruoyi-ui]# pwd
/ruoyi/ruoyi-ui
[root@nginx-server ruoyi-ui]# ll
total 3388
drwxr-xr-x 4 root root 108 Sep 17 16:21 dist
-rw-r--r-- 1 root root 3465701 Sep 17 16:21 dist.tar.gz
模拟代码更新尝试构建
模拟前端开发人员修改页面
[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue
推送代码
[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "阿里云9999优惠券"
[main 60d5f35] 阿里云9999优惠券
1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 497 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
1f23afc..60d5f35 main -> main
Jenkins再次构建
Jenkins构建后端项目
源码仓库配置&配置公钥私钥
添加后端SSH Server
将Jenkins服务器root用户生成的公钥发送给后端服务器的root用户
[root@jenkins-server ~]# ssh-copy-id root@192.168.29.51
配置构建步骤
Jenkins配置发送到后端服务器
后端服务器准备脚本
[root@java-server ruoyi-java]# pwd
/ruoyi/ruoyi-java
[root@java-server ruoyi-java]# vim java1.sh
#!/bin/bash
ruoyi_pid=`ps -ef|grep "ruoyi-admin"|grep -v "grep"|awk '{print $2}'`
if [[ $ruoyi_pid != "" ]];then
echo "若依后端服务PID: $ruoyi_pid"
kill -15 $ruoyi_pid && echo "若依后端服务已关闭"
nohup java -jar /ruoyi/ruoyi-java/ruoyi-admin.jar &
if [ $? -eq 0 ];then
echo "若依后端服务重新启动成功"
else
echo "若依后端服务重新启动失败"
fi
else
nohup java -jar /ruoyi/ruoyi-java/ruoyi-admin.jar &
if [ $? -eq 0 ];then
echo "若依后端服务启动成功"
else
echo "若依后端服务启动失败"
fi
fi
构建后端项目
在Jenkins服务器上查看是否打包成功
在后端服务器上查看项目目录时间是否更新
[root@java-server ruoyi-java]# pwd
/ruoyi/ruoyi-java
[root@java-server ruoyi-java]# ll
total 81580
-rwxr-xr-x 1 root root 624 Sep 17 17:06 java1.sh
-rw------- 1 root root 6370 Sep 17 17:08 nohup.out
-rw-r--r-- 1 root root 83532942 Sep 17 17:08 ruoyi-admin.jar
参数化构建前端项目
安装Git Parameter插件
参数化构建前端项目(commit号)
配置Git参数选项
版本切换构建
当前版本为“阿里云9999优惠券”,我们切换到最初版本
查看构建结果
参数化构建前端项目(tag标签)
模拟前端开发人员更新代码
[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue
推送代码
[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "阿里云6666优惠券"
[main b26c040] 阿里云6666优惠券
1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git tag -a "v1.0" -m "阿里云6666优惠券"
[root@jenkins-server ruoyi-vue]# git tag
v1.0
[root@jenkins-server ruoyi-vue]# git push origin v1.0
Counting objects: 12, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 642 bytes | 0 bytes/s, done.
Total 7 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
* [new tag] v1.0 -> v1.0
配置Git参数选项
标签切换构建
查看构建结果
自动化触发构建
Jenkins安装插件
Jenkins配置webhook
本次未采用参数化构建,还是克隆所有代码,操作的仍是main分支最新版本代码
其他配置不变
Gitlab配置webhook钩子
开启允许本地添加webhook操作
添加仓库webhook钩子
测试自动推送
点击之后,去Jenkins服务查看是否会自动构建
模拟前端开发人员更新代码
[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue
推送代码
[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "webhook自动构建"
[main 9c2d702] webhook自动构建
1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 522 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
60d5f35..9c2d702 main -> main
git参数化自动构建(commit修订号)
测试
[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue
[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "webhook自动触发构建(commit修订号)"
[main 9cba997] webhook自动触发构建(commit修订号)
1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 550 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
9c2d702..9cba997 main -> main
Jenkins配置钉钉机器人通知
Jenkins安装插件
配置钉钉机器人
钉钉群添加机器人
Jenkins添加机器人
钉钉机器人在最下面配置
Jenkins配置机器人
模拟前端开发人员更新代码
[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue
推送代码
[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "webhook自动触发构建(commit修订号)+钉钉机器人通知"
[main 97e9484] webhook自动触发构建(commit修订号)+钉钉机器人通知
1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 580 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
9cba997..97e9484 main -> main
Jenkins多节点配置
在企业里面使用Jenkins自动部署+测试平台时,每天更新发布几个网站版本,很频繁,但是对于一些大型的企业来讲,Jenkins就需要同时处理很多的任务,这时候就需要借助Jenkins多个node或者我们所说的Jenkins分布式SLAVE。
添加Linux平台Jenkins SLAVE配置:
1、由于Jenkins是Java程序,添加的SLAVE客户端服务器必须安装Java JDK环境;
2、创建远程执行Jenkins任务的用户,一般为jenkins用户,工作目录为/home/jenkins;
3、Jenkins服务器免密钥登录Slave服务器或者通过用户名和密码登录;
添加从节点
参数详解
名字:节点的名字
描述:说明这个节点的用途等
Number of executors:并发构件数量
远程工作目录:用于存放jenkins的工作空间
标签:分配job会以标签的名称去分配
用法:节点的使用策略
启动方法:windows的话就不要给自己添堵了,选择Java web start
测试从节点
项目指定到哪个节点运行。