文章目录
前言
本人小白一枚,第一次摸索部署项目。本文从电脑重装redhat系统开始,在系统中安装了所需环境(并非通过docker方式配置环境),通过jenkins+docker-compose+svn的方式部署springcloud项目,包含超详细的图文教程,适合和我一样的新手部署。
一、设置网络连接
选择有线设置
选择要连接的网络后,点击右下角设置-IPV4后,设置网络连接。
二、Centos的yum源替换原yum源
RHEL是收费的,需要注册才可正常使用。解决办法是用CentOS的yum源替换掉原yum源,CentOS已经被红帽收购,且跟RHEL系统没多大区别,可以免费使用。所以将RHEL的YUM源替换为CentOS即可。
在这里提供两种方式,一种是在终端执行指令,一种是直接执行脚本(推荐),两种方法大体一样。
1.终端执行指令的方式
1、查看Redhat的原yum源
rpm -qa | grep yum
2、进行卸载
3、查看自身redhat版本
cat /etc/redhat-release
4、确保http://mirrors.163.com/centos/可以访问,找到自己所需版本进行下载,下载centos7的相关软件包
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-chardet-2.2.1-3.el7.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-kitchen-1.1.1-5.el7.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-54.el7_8.noarch.rpm
如图所示,则下载成功。
5、安装软件包
rpm -ivh python-*
rpm -ivh yum-*
使用rpm命令升级软件包时,有时候可能会与原来的安装的软件版本冲突。添加参数替换掉已有文件
rpm -Uvh --replacefiles *.rpm
6、新建repo配置文件,如果是其他Redhat版本,将7改为对应的版本数字
vim /etc/yum.repos.d/CenOS-Base.repo
文件内容为:
#CentOS-Base.repo
[base]
name=CentOS-$7 - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$7&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$7 - Updates - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$7&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/7/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$7 - Extras - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$7&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/7/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$7 - Plus - 163.com
baseurl=http://mirrors.163.com/centos/7/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
7、清除缓存
yum clean all
8、将服务器软件包信息缓存至本地,提高搜索安装效率
yum makecache
9、使用yum安装软件包测试
yum -y install vim
2.执行脚本的方式(推荐)
编写脚本可以在win10上用记事本创建后上传到redhat机器上,也可以直接在redhat上通过vim xxx.sh方式创建。
1.创建脚本
编写脚本起名,我起名为yum.sh,注意脚本保存格式为UTF-8
脚本具体内容如下:
#!/bin/bash
#获取资源,某些资源可能因为版本升级不存在,请自行更新地址(在http://mirrors.163.com/centos/7/os/x86_64/Packages/搜索)
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/rpm-4.11.3-45.el7.x86_64.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-10.el7.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-chardet-2.2.1-3.el7.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/python-kitchen-1.1.1-5.el7.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-54.el7_8.noarch.rpm
#卸载系统原有的yum源
rpm -qa|grep yum
rpm -qa|grep yum|xargs rpm -e --nodeps
#安装下载的yum源
rpm -ivh --force *.rpm
cd /etc/yum.repos.d/
#配置源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
sed -i "s/\$releasever/7/g" /etc/yum.repos.d/CentOS7-Base-163.repo
#清除缓存
yum clean all
yum makecache
#更新系统
yum update
2.脚本上传至redhat机器
我在win10上通过记事本创建脚本后,通过xftp工具连接redhat机器,将脚本上传到任意目录下,xftp软件的安装和上传教程可以百度一下非常方便简单。
3.执行脚本
(1)进入脚本所在目录
cd /xx/xx
(2)赋予权限
chmod +x ./yum.sh
(3)执行脚本
sudo ./yum.sh
(4)使用yum安装软件包测试
#若安装成功,则替换yum源成功
yum -y install vim
三、配置java环境
安装java也可以通过指令和脚本安装两种方式,这两种我安装的版本不太一样,但没任何影响,同样推荐脚本安装。
1.终端执行指令的方式
1、下载jdk文件
登录oracle官网下载1.8版本jdk
2、删除自带的java环境
yum remove java
2、新建/usr/java文件夹
将jdk-8u351-linux-x64.tar.gz放到该文件夹中。(我用指令从下载文件夹复制到/usr/java了)
3、将工作目录切换到/usr/java目录下,解压jdk压缩文件
完成后如下图:
4、配置环境变量
使用vi /etc/profile编辑profile文件,在文件末尾处增加环境变量信息:
JAVA_HOME=/usr/java/jdk1.8.0_351
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
(注意自己安装的jdk版本,修改JAVA_HOME)
如下图:
5、使用source /etc/profile让profile文件立即生效,验证jdk是否安装成功
6、使用echo $JAVA_HOME等命令可以查看环境变量
2.执行脚本的方式
编写脚本可以在win10上用记事本创建后上传到redhat机器上,也可以直接在redhat上通过vim xxx.sh方式创建。
1.创建脚本
编写脚本起名,我起名为jdk.sh,注意脚本保存格式为UTF-8
具体内容如下:
#!/bin/bash
yum remove java
if [ ! -d /home/tools/ ];then
mkdir -p /home/tools
else
rm -rf /home/tools && mkdir -p /home/tools
fi
cd /home/tools && 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
if [ $? -eq 0 ];then
rpm -ivh jdk-8u131-linux-x64.rpm
else
exit 1
fi
##Edit Jdk Env
echo "JAVA_HOME=/usr/java/jdk1.8.0_131
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
">> /etc/profile
2.脚本上传至redhat机器
我在win10上通过记事本创建脚本后,通过xftp工具连接redhat机器,将脚本上传到任意目录下,xftp软件的安装和上传教程可以百度一下非常方便简单。
3.执行脚本
(1)进入脚本所在目录
cd /xx/xx
(2)赋予权限
chmod +x ./jdk.sh
(3)执行脚本
sudo ./jdk.sh
(4)测试是否成功
source /etc/profile
echo $JAVA_HOME
#如果有输出如下内容,就完事儿了
#/usr/java/jdk1.8.0_131
四、mysql安装
1、redhat默认安装mariaDB,这个是MySQL的分支,先看看有没有mariaDB。
yum list installed | grep mariadb
如果有,先卸载。
yum remove -y mariadb-libs
卸载完成后,再次查看。
2、下载安装包:http://repo.mysql.com/
我下载的是mysql57-community-release-el7-10.noarch.rpm版本
wget https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
3、安装yum包
yum -y install mysql57-community-release-el7-10.noarch.rpm
4、检验是否启动5.7成功
yum repolist enabled | grep mysql
5、安装 mysql服务器
yum -y install mysql-community-server
我的在安装过程中出现如下报错:
执行如下指令,再次安装成功了。
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-community-server
6、启动mysql服务
systemctl start mysqld.service
7、查看root初始登录密码
grep "password" /var/log/mysqld.log
结尾处为初始密码
8、进入数据库修改密码
mysql -u root -p
在密码处输入初始密码,如我的:JWtOv7yfm&Gj。
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
我在修改密码时出现如下报错:
可通过以下命令设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW,并将密码长度设置为你想要的长度,我设置为了4:
set global validate_password_policy=LOW;
set global validate_password_length=4;
再次修改密码成功!
9、开启MySQL远程访问
grant all privileges on *.* to 'root'@'192.168.x.x' identified by 'password' with grant option;
注意把ip地址和password改成自己的。
10、刷新MySQL的系统权限并退出
flush privileges;
exit
11、为firewalld添加开放端口
添加mysql端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
12、修改mysql语言
在/etc/my.cnf文件下修改以下内容
vim /etc/my.cnf
新增四行代码
[client]
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
如下图中的前两行和最后两行:
13、对数据库进行重启
service mysqld restart
14、测试数据库的远程访问时报错:错误号码1130 host’***’ is not allowed to connect to this mysql server。
登录mysql,修改user表,并刷新权限。
use mysql;
update user set host='%' where host='localhost' and user='root';
flush privileges;
此时,远程访问数据库成功!
五、nacos安装
1.配置java环境
由于java环境已配置,此处省略。
2.准备maven环境
1、官网
我选择的是第一个apache-maven-3.8.6-bin.tar.gz
2、将文件复制到/usr/local中并解压
3、配置maven仓库
首先进入maven安装目录下,新建repository目录,作为存储仓库目录。
cd /usr/local/apache-maven-3.8.6
mkdir repository
进入maven安装目录中的conf目录,修改仓库配置文件settings.xml。
cd conf
vim settings.xml
找到localRepository下面复制一行加上
<localRepository>/usr/local/apache-maven-3.8.6/repository</localRepository>
再找到mirror 加上阿里的仓库配置
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
4、配置路径
打开文件:vi /etc/profile
在文件末尾添加以下配置
export MAVEN_HOME=/usr/local/apache-maven-3.8.6
export PATH=$MAVEN_HOME/bin:$PATH
(注意:MAVEN_HOME后的路径为maven解压文件的位置)
4、刷新,并查看是否安装成功
source /etc/profile
mvn -v
3.安装nacos
1、官网下载文件:https://github.com/alibaba/nacos/releases
我选择的是2.0.4版本,选择第一个nacos-server-2.0.4.tar.gz下载即可。
2、将文件复制到/usr/local路径下,进入/usr/local路径下解压文件(放到其他位置也可以)
cp /home/admin/nacos-server-2.0.4.tar.gz /usr/local
cd /usr/local
tar -zxvf nacos-server-2.0.4.tar.gz
3、修改配置
首先在bin目录下修改startup.sh文件
cd nacos/bin
vim startup.sh
将第一条JAVA_HOME修改为自己安装的jdk路径,如果不确定可以执行whereis java来查看。
文件内容修改如下:
之后进入conf目录,修改application.properties 文件
cd /usr/local/nacos/conf
vim application.properties
将注释放开,并按自己的数据库进行配置,文件内容修改如下:
新建名为nacos的数据库(数据库名与上图配置一致),将nacos中的sql脚本导入数据库中,我的路径为/usr/local/nacos/conf/nacos-mysql.sql
mysql -u root -p
create database nacos;
use nacos;
source /usr/local/nacos/conf/nacos-mysql.sql;
exit
4、启动nacos
进入bin目录,启动nacos
cd /usr/local/nacos/bin
sh startup.sh -m standalone
standalone代表着单机模式运行,非集群模式。
打开网页,格式为http://ip地址:端口/nacos/,账号密码默认为:nacos nacos
如果要关闭nacos,指令为:
cd /usr/local/nacos/bin
sh shutdown.sh
5、开启防火墙端口,设置远程访问
sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9848/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8849/tcp --permanent
#重启防火墙
firewall-cmd --reload
6、设置nacos开机自启动
编写nacos启动文件
vim /lib/systemd/system/nacos.service
新增内容如下:
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
其中/usr/local/nacos/bin 需要修改为个人nacos的实际安装路径。
#重载所有服务
systemctl daemon-reload
#设置开机自启动
systemctl enable nacos.service
六、RabbitMQ安装
因为我的项目里用到了rabbitmq的通信功能,所以再次介绍一下,如果没有这项功能,此步骤请略过。
1、安装依赖包
RabbitMQ是采用 Erlang语言开发的,所以系统环境必须提供 Erlang环境,需要安装 Erlang。在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本。
我选择的rabbitmq为3.9.11版本,所以erlang需要选择23.2-24.2版本的。
erlang下载地址:https://github.com/rabbitmq/erlang-rpm/releases
我选择的是23.3.4.8版本,注意:其中的el7表示Red Hat 7.x,即CentOS 7.x,如果红帽系统为8.x版本,需要选el8。我选择第一项进行下载。
rabbitmq下载地址:https://github.com/rabbitmq/rabbitmq-server/releases
我选择第一项3.9.11版本进行下载。
2、在usr文件夹下新建rabbitmq文件夹放入刚才下载的安装包
cd /usr
mkdir rabbitmq
cp /home/admin/rabbitmq-server-3.9.11-1.el7.noarch.rpm /usr/rabbitmq
cp /home/admin/erlang-23.3.4.8-1.el7.x86_64.rpm /usr/rabbitmq
可以在该目录下看到两个安装包
3、安装erlang
切换到/usr/rabbitmq目录,解压安装erlang并查看版本号
cd rabbitmq
rpm -Uvh erlang-23.3.4.8-1.el7.x86_64.rpm
yum install -y erlang
erl -v
4、安装rabbitmq
RabbitMQ安装过程中需要依赖socat插件,首先安装该插件
yum install -y socat
解压安装RabbitMQ的安装包
rpm -Uvh rabbitmq-server-3.9.11-1.el7.noarch.rpm
yum install -y rabbitmq-server
5、启动RabbitMQ服务
# 启动rabbitmq
systemctl start rabbitmq-server
# 查看rabbitmq状态
systemctl status rabbitmq-server
其他命令
# 设置rabbitmq服务开机自启动
systemctl enable rabbitmq-server
# 关闭rabbitmq服务
systemctl stop rabbitmq-server
# 重启rabbitmq服务
systemctl restart rabbitmq-server
6、安装启动RabbitMQWeb管理界面
默认情况下,rabbitmq没有安装web端的客户端软件,需要安装才可以生效
# 打开RabbitMQWeb管理界面插件
rabbitmq-plugins enable rabbitmq_management
RabbitMQ 服务启动后,还不能进行外部通信,需要将端口添加防火墙
#添加端口
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
#重启防火墙
firewall-cmd --reload
打开浏览器,访问http://ip地址:15672,默认用户及密码:guest guest
7、添加远程用户
rabbitmq有一个默认的账号密码guest,但该情况仅限于本机localhost进行访问,所以需要添加一个远程登录的用户。
# 添加用户
rabbitmqctl add_user 用户名 密码
# 设置用户角色,分配操作权限
rabbitmqctl set_user_tags 用户名 角色
# 为用户添加资源权限(授予所有权限)
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
创建完成后,即可远程访问ip地址:15672进行登录
其他指令:
# 修改密码
rabbitmqctl change_ password 用户名 新密码
# 删除用户
rabbitmqctl delete_user 用户名
# 查看用户清单
rabbitmqctl list_users
七、docker安装
1、查看内核版本(需大于3.10)
uname -a
2、安装基础工具
yum install -y yum-utils device-mapper-persistent-data lvm2
3、为yum源添加docker仓库位置
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
修改 docker-ce.repo 配置文件中的 baseurl 链接地址
sed -i 's/centos\/$releasever/centos\/7/g' /etc/yum.repos.d/docker-ce.repo
将每个baseurl中的$releasever替换为7(如果是8.*版本替换为8)
清除并重新生成缓存
yum clean all
yum makecache
4、安装docker
yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
注意:如果系统为8.*版本,指令为yum -y install docker-ce --allowerasing
不然会报错,是因为centos8中的默认podman和docker冲突不能共存,要先卸载podman才能安装docker,7的版本就不存在这个问题。
5、启动docker并设置为开机自启
systemctl enable docker
6、查看docker版本 yum默认安装是最新版本
docker --version
7、配置阿里镜像加速器
vim /etc/docker/daemon.json
增加如下内容
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
刷新配置,重启
systemctl daemon-reload
systemctl restart docker
八、docker-compose安装
1、下载安装包
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2、添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
3、将启动脚本复制到/usr/bin目录下
cp /usr/local/bin/docker-compose /usr/bin
4、测试安装结果
docker-compose --version
九、subversion安装
1、yum安装
yum -y install subversion
查看svn安装目录
rpm -ql subversion
查看安装版本
svnserve --version
2、创建版本库目录
mkdir /var/svn
cd /var/svn
mkdir svnrepos
3、创建svn版本库
svnadmin create /var/svn/svnrepos/project
cd /var/svn/svnrepos/project
vim conf/authz
在文件最后末尾添加格式为:帐号 = rw
vim conf/passwd
在最后一行添加账户和密码信息,格式为:帐号 = 密码
vim conf/svnserve.conf
如下图,将此四条命令前的注释去掉
4、启动svn服务器
cd /home/admin
svnserve -d -r /var/svn/svnrepos
使用ps -aux查看服务是否启动成功
5、客户端访问svn服务器
防火墙加入端口
firewall-cmd --zone=public --add-port=3690/tcp --permanent
firewall-cmd --reload
访问地址为svn://ip地址:3690/project
十、jenkins安装
1、官网下载:http://mirrors.jenkins-ci.org/redhat/
不同的版本会有不同的java版本依赖(Jenkins在2022年的官网上说,支持新版的jdk,例如jdk11;如果用yum安装一般是最新版jenkins,而我本地是jdk8版本的,很可能不兼容;openjdk跟jdk是两种版本,因为已经装了maven,那就不能装openjdk,而应该装jdk;jdk11这个版本能同时兼容maven和jenkins,鉴于我本地已经装了jdk8,所以采用rpm安装下载合适的jenkins版本。)
2.164或更高版本 | Java 8 or Java 11 |
---|---|
2.54或更高版本 | Java 8 |
1.612或更高版本 | Java 7 |
我下载的是2.350版本
2、安装
rpm -ivh jenkins-2.350-1.1.noarch.rpm
图片版本不对,此处忘记截图,版本为2.350
3、配置修改
修改端口号(默认端口为8080,我修改为了8888端口)
vim /etc/sysconfig/jenkins
/usr/bin/java 是Jenkins配置文件中的默认java路径,需要改为主机上安装的java路径。
查看路径为:
which java
修改/etc/init.d/jenkins文件(添加主机的java路径),并重新加载配置文件
vim /etc/init.d/jenkins
systemctl daemon-reload
4、启动服务
service jenkins start
systemctl enable jenkins.service
5、将端口添加到防火墙
#开放指定端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
#重启防火墙
firewall-cmd --reload
#查看当前所有tcp端口
netstat -ntlp
6、测试访问
访问地址:http://ip地址:8888
踩坑:端口修改不生效。如果jenkins启动之后,访问8888端口找不到网页,而访问8080可以,则需额外修改一处配置
vim /usr/lib/systemd/system/jenkins.service
# 重新加载配置文件
systemctl daemon-reload
service jenkins restart
修改端口号为8888,之后重新启动service jenkins restart
获取管理员密码
cat /var/lib/jenkins/secrets/initialAdminPassword
复制此密码到网页,点击继续,选择安装推荐的插件。
创建账户
选择默认的实例配置即可。
点击保存并完成。
点击开始使用后进入登录页面。
输入帐号密码,登录成功。
7、将jenkins设置为root权限
将 jenkins 账号加入到 root 组中
gpasswd -a jenkins root
修改/etc/sysconfig/jenkins文件,添加如下配置。
vim /etc/sysconfig/jenkins
JENKINS_USER="root"
JENKINS_GROUP="root"
将JENKINS_USER="jenkins"改为JENKINS_USER=“root”,添加JENKINS_GROUP=“root”。
重启 Jenkins
service jenkins restart
十一、后端基于jenkins+docker-compose的自动部署
1.jenkins环境配置
(1)插件安装
1、maven插件安装
选择左侧manage jenkins选项后,选择图片右下角的manage plugins。
选择第二个可选插件,搜索maven,勾选第一个maven integration,点击install without restart按钮后进行下载。
下载完成后,点击返回首页。
2、Deploy to container插件安装
3、publish over ssh插件安装
4、subversion插件安装
(2)jenkins全局工具配置
选择manage jenkins后,点击图片右下角的global tool configuration中设置maven和jdk。
1、在maven配置中,按下图进行配置。
文件路径为下载的maven解压包路径。
2、点击新增jdk,取消Install automatically自动安装勾选,配置jdk名称和安装路径。
如果不确定JAVA_HOME路径,输入$JAVA_HOME查看。
3、之后下拉,点击新增maven按钮,取消Install automatically自动安装勾选,配置maven名称和安装路径。
配置完成后,点击应用后保存。
(3)配置credentials(因为登录svn的时候需要密码认证,所以要创建一个credentials)
点击manage jenkins,选择图片右下角的manage credentials选项。
点击头像右侧的jenkins选项进入。
点击全局凭据选项进入。
点击添加凭据选项。
按下图进行配置,点击create(注意:确定设置的用户名和密码可以访问svn)。
(4)svn自动化部署准备
点击用户列表,选择刚刚创建的root用户
点击设置
在API Token页面,点击添加新Token(我这里因为已经设置过了,所以显示这样)
先填写名称,我写的是root_token,之后点击生成按钮。
如图上标蓝处为生成的token值,复制此token值或点击右侧的复制按钮也可,先把token值记好,待会要用,点击应用后保存。
svn钩子配置
在svn仓库下hooks目录创建post-commit文件
cd /var/svn/svnrepos/project/hooks
vi post-commit
内容如下,其中119105797b169cbb9c36eac3183b1f9d2a为jenkins里设置的token,jinteng是刚才设置的凭据名称,192.168.1.58:8888/job/svn/build是jenkins任务。当svn代码变动时,自动触发jenkins任务。
#!/bin/sh
export LANG=zh_CN.GBK
curl -X POST "http://jinteng:119105797b169cbb9c36eac3183b1f9d2a@192.168.1.58:8888/job/svn/build"
到这里jenkins的准备环境就做好了,接下来进行springcloud项目中关于docker-compose配置。
2.springcloud关于docker的配置
1、创建目录
我的项目中有多个微服务模块,在项目根目录下新建一个docker目录,并在docker目录下根据要启动的微服务设置多个文件夹,用来放置dockfile文件和maven生成的jar包。如下图所示,项目目录像这样。
2、创建脚本文件
先在docker目录下创建一个复制jar包的脚本copy.sh。因为通过maven打包后,生成的jar包在每个微服务的target目录下,需要统一复制到docker目录相应的微服务文件夹下的jar目录里,这样方便之后dockfile文件的执行。
copy.sh内容格式如下
3.dockfile文件配置
每个dockfile配置格式一样,其中挂载目录名称/home/xx自己命名一下,将docker目录下所有微服务的dockerfile文件按此格式补充完整。
4.docker-compose相关配置
在docker目录下创建docker-compose.yml配置文件和docker_compose.sh启动脚本,最终目录如下图。
docker-compose.yml文件可以编排微服务的启动顺序、端口、方式等很多内容。
docker_compose.sh脚本内容如下,大致步骤为先根据多个微服务循环构建docker镜像,循环结束后进行docker-compose启动所有镜像。
#!/bin/bash
services=(xx1 xx2 xx3 xx4)
service_names=(ai-cloud-xx1 ai-cloud-xx2 ai-cloud-xx3 ai-cloud-xx4)
service_prots=(xxx1 xxx2 xxx3 xxx4)
# dockerfile路径
DOCKER_PATH='/docker'
start() {
local service=
local service_name=
local command="$1"
local okCount=0
local service_prot=0
for((i=0;i<${#services[@]};i++))
do
service=${services[$i]}
service_name=${service_names[$i]}
service_prot=${service_prots[$i]}
if [ "$command" == "all" ] || [ "$command" == "$service" ];then
#查看容器id
CID=$(docker ps | grep "$service_name" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
echo "exist $service_name container,CID=$CID"
#停止
docker stop $service_name
#删除容器
docker rm $CID
else
echo "no exist $service_name container"
fi
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
echo "exist $service_name image,IID=$IID"
#删除镜像
docker rmi -f $service_name
echo "delete $service_name image"
#构建
docker build -t $service_name -f ./$DOCKER_PATH/$service_name/dockerfile .
echo "build $service_name image"
else
echo "no exist $service_name image,build docker"
#构建
docker build -t $service_name -f ./$DOCKER_PATH/$service_name/dockerfile .
echo "build $service_name image"
fi
#启动
#docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name
#查看启动日志
#docker logs -f $service_name
fi
done
#启动
echo "开始启动镜像"
#必须先进入docker-compose.yml的目录下,否则启动镜像报错找不到文件
cd docker
docker-compose up -d ai-cloud-xx1 ai-cloud-xx2 ai-cloud-xx3 ai-cloud-xx4
}
case "$1" in
start)
start "$2"
;;
stop)
stop "$2"
;;
restart)
stop "$2"
sleep 3s
start "$2"
;;
*)
echo "第一个参数请输入:start|stop|restart"
exit 1
;;
esac
到此,项目设置完成,接下来在jenkins中进行项目构建。
3.jenkins项目构建
1、首页选择新建item
2、输入任务名称,选择构建一个maven项目,点击确定。
3、进入项目,进行相关配置。
在general页面,添加描述,勾选discard old builds即丢弃旧的构建,选择备份最近的10个,点击应用。
源码管理页面进行如下图设置,选择subversion,输入svn的URL,在credentials处选择刚创建的svn凭据,check-out strategy选择图片所示那项后,点击应用。
构建触发器页面配置如下,默认配置。
构建环境勾选最后一项With Ant,选择jdk。
build页面输入如下配置。
#使用maven命令进行包的清除、打包、安装api等操作
clean install
Post steps页面选择第一项Run onlyif build succeeds,点击add post-build step按钮,选择Execute shell选项,进行shell命令的编写。使jenkins在构建完成后,将构建完成的包发送到指定服务器,并运行启动脚本。
shell脚本内容为(其中/var/lib/jenkins为jenkins默认的安装路径,xxx为新建项目时自己起的名称):
cd /var/lib/jenkins/workspace/xxx
sh docker/copy.sh
sh docker/docker_compose.sh start all
4、构建项目
点击build now。
点击左下角构建进程数字后,选择控制台输出。
我的报错了,通过查看error信息,找不到repository目录。查看repository目录权限
chmod -R 775 /usr/local/apache-maven-3.8.6/repository
使用chmod指令修改为所有权限
chmod -R 777 /usr/local/apache-maven-3.8.6/repository
再次回到项目页面,点击build now并查看控制台输出,成功。
4.查看nacos注册结果
登录nacos后点击服务管理,查看服务列表,可以看到服务都正常注册运行了。