自动化部署springboot项目
0.简介
如果没有Linux基础请仔细看好每一个步骤,避免出错,从0到1带你搭建自动化部署环境,包括服务器安装,自动化部署所需各类软件安装配置,详细贴出每一步,不断步骤,让你一次搭建部署完成,希望这篇文章能给大家带来一定的帮助,话不多说开始整
1.自动化部署所需软件安装
1. jdk,分别为1.8和17,根据自身项目决定,如果项目已经使用17则可以只安装17
1.8是项目使用,17是Jenkins使用
2.git选择2.X
3.maven3.6
4.gitlab12.0.2
5.Jenkins选择2.389
6.服务器centos7
2.软件安装
2.0 CentOs安装
2.0.1 下载VM虚拟机
我直接电脑管家下载,也可以官网下载,懒的麻烦直接电脑管家下载,至于想永久免费使用,可以直接百度爸爸,这里不过多赘述,傻瓜式安装无限下一步即可
2.0.2 下载CentOs镜像
直接阿里云下载: https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/
直接选择最小化镜像: CentOS-7-x86_64-Minimal-2009.iso
2.0.3 开始安装CentOs
打开VM软件
安装三个软件
net-tools以及wget
yum install net-tools -y 方便使用ifconfig 查看服务器ip
yum install wget -y 方便后续直接wget下载软件
yum install vim -y 文本编辑器
Linux连接工具,可以使用 xShell,我使用的是electerm
electerm下载地址: https://github.com/electerm/electerm/releases/tag/v1.25.41
GitHub下载,对网络有一定要求
下载完成傻瓜式安装,无限下一步即可
至此服务器准备完毕
2.1 安装jdk
配置jdk环境变量时,选择项目版本的jdk配置环境变量,注意jdk解压位置,路径别写错,更别写我的路径你的路径可能和我的不一样
1.下载jdk wget下载或直接下载ftps上传到服务器,此处直接下载后上传到服务器
没有安装wget直接使用
yum install -y wget 安装确保服务器有网 wget 软件下载路径
2.解压jdk压缩包
创建一个目录存放jdk
mkdir /usr/local/java
将jdk解压到该目录
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/java/
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java/
进入jdk解压目录
cd /usr/local/java/
ll 指令查看当前目录下文件
3.配置环境变量,此处配置jdk8
vim /etc/profile
进入文件按 i 进入编辑模式
#文件末尾添加以下内容
export JAVA_HOME=/usr/local/java/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
编辑完按 esc 退出编辑模式 按 : 输入 wq 保存退出
4.从新读取profile文件
source /etc/profile
2.2 安装git
0. 如果已安装git,此步骤可以直接跳过,如果想更换git版本也可以跟着一起从新安装
1.卸载git
yum remove git
2.安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
3.下载git,wget默认将文件下载在当前所处目录,或者直接下载tar包sftp传入Linux
cd ~ 进入当前用户家目录或者 cd /root ,即/root目录,因为当前登陆用户是root
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz --no-check-certificate
4.解压到当前目录
tar -zxvf git-2.9.3.tar.gz
5.配置安装路径
cd git-2.9.3
./configure prefix=/usr/local/git/
6.编译安装
make && make install
7.配置环境变量
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
刷新配置
source /etc/profile
或者
vi /etc/profile
export PATH=$PATH:/usr/local/git/bin
source /etc/profile
8.查看git版本
git --version
9.初始化git信息,此处配置的邮箱都是后续gitlab用户的邮箱
git config --global user.name "xkcyyds"
git config --global user.email "2057353320@qq.com"
生成秘钥,直接一路回车即可
ssh-keygen -t rsa -C "2057353320@qq.com"
查看公钥
cat ~/.ssh/id_rsa.pub
2.3 安装maven
1.下载maven
wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz --no-check-certificate
该路径无效情况下可以直接去官网下载,或者拿到下载地址在服务器使用wget下载,目前我这个是有效的地址
--no-check-certificate用于去掉证书验证 因为https所以需要去掉
2.解压
创建目录
mkdir /usr/local/maven 存放maven
mkdir /usr/local/maven/repo 用于存放maven下载的依赖包
解压指定文件夹
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/maven/
3.修改配置文件 设置本地仓库以及阿里云仓库以及指定jdk版本
vim /usr/local/maven/apache-maven-3.6.3/conf/settings.xml
<localRepository>/usr/local/maven/repo</localRepository>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
4.配置maven环境变量
vim /etc/profile
文件最后添加如下内容
export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
5.刷新配置文件
source /etc/profile
查看maven版本,成功输出信息则maven环境变量配置成功
mvn --version
2.4 安装gitlab
1. 安装gitlab需要的组件
yum install -y curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python
2. postfix启动邮件服务以及设置自启 根据需要选择是否开启 我没有开启 不开启可以跳到第三步
systemctl start postfix
systemctl enable postfix
当启动时报:
Job for postfix.service failed because the control process exited with error code. See "systemctl status postfix.service" and "journalctl -xe" for details.
2.1 先修改postfix中/etc/postfix/main.cf配置文件
inet_protocols = ipv4
inet_interfaces = all
postfix check 检测文件,检测报错则安装下面依赖
2.2 修改完毕后依然报错,此时需要安装依赖,MySQL5.5使用该方式,5.7使用下面的方式
wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
从新启动依然报错则是因为数据库版本问题,5.7MySQL自带libmysqlclient.so.20,而我们需要的是libmysqlclient.so.18
2.3 下载安装mysql依赖
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community
2.4再次启动可以成功
3. 下载gitlab
回到用户家目录 cd ~
下载软件
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm --no-check-certificate
不加--no-check-certificate 可能会导致下载失败
4. 本地yum安装
yum -y localinstall gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
5. 配置gitlab访问地址 http://192.168.56.137为你自身服务器ip, 查看ip指令 ifconfig
sed -i "/^external_url/cexternal_url 'http://192.168.56.137'" /etc/gitlab/gitlab.rb
6. 修改gitlab访问端口,默认端口可能其他服务占用,可以自己指定访问端口
vim /etc/gitlab/gitlab.rb
修改 nginx['listen_port'] = 6868 (指定端口)
重置:gitlab-ctl reconfigure 重置会有点慢,耐心等一下
重置以后该文件监听端口也会改变,未改变需要手动改变一下
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
listen *: 6868 (指定端口是上面的端口)
gitlab-ctl restart 重启
gitlab-ctl tail 指令可以查看gitlab启动信息
7.访问
关闭防火墙或者放行端口6868,为了方便此处直接关闭防火墙
阿里云服务器需要登陆管理界面添加规则放行6868端口,此处不做演示
systemctl stop firewalld
查看防火墙状态
systemctl status firewalld
ip:port
http://192.168.56.137:6868/
访问成功以后需要先设置密码
设置完密码后使用root账号加刚刚设置的密码登陆
2.4.1 配置gitlab以及项目创建
进入目录后直接右键打开git bash界面
拉取仓库,注意地址后一定跟上端口否则拉取不了
git clone http://192.168.56.137:6868/root/demo.git
8. 配置邮件报警 可以不配置 根据情况自己选择 我没有配置,需要配置的需要进行步骤2操作
vim /etc/gitlab/gitlab.rb 57行以后
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.qq.com'
# SMTP 服务器
gitlab_rails['smtp_port'] = 465
# SMTP 服务器端口号
gitlab_rails['smtp_user_name'] = '123456@qq.com'
# 邮件账号
gitlab_rails['smtp_password'] = ''
# 邮件授权码
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '123456@qq.com'
阿里云服务器访问gitlab的502问题,阿里云服务器默认开启交换分区
开启交换分区即可
dd if=/dev/zero of=/mnt/swap bs=512 count=8388616
mkswap /mnt/swap
vim /etc/sysctl.conf
修改vm.swappiness = 60 默认数值是0
swapon /mnt/swap
echo "/data/swap swap swap defaults 0 0" >> /etc/fstab
cat /proc/swaps 查看是否成功挂载
free 再次查看交换分区是否开启成功
2.5 安装Jenkins
0.rpm包下载位置,请注意版本,版本太低会导致后续安装不了插件
此处选择的版本没有问题,但是需要jdk11及以上,所以上述安装了两个jdk版本
https://mirrors.jenkins-ci.org/redhat/
1.下载Jenkins的RPM包,速度根据自身有快慢
wget https://mirrors.jenkins-ci.org/redhat/jenkins-2.389-1.1.noarch.rpm --no-check-certificate
2.安装
rpm -ivh jenkins-2.389-1.1.noarch.rpm
3.修改配置
vim /etc/sysconfig/jenkins
JENKINS_USER="root" #这里改为root
JENKINS_PORT="9898" #配置访问端口
4.关闭防火墙或者开启8088端口
5.配置jdk
vim /etc/init.d/jenkins
在 candidates 内容最后添加本地安装jdk,必须11版本以上,该处选择17版本
该路径是你自己安装jdk的路径,如果路径和我一样可以直接复制
/usr/local/java/jdk-17.0.7
6.从新读取配置文件
systemctl daemon-reload
7.启动Jenkins
systemctl start jenkins
从新启动Jenkins指令:
systemctl restart jenkins
配置完启动不起来,报如下错误:
Job for jenkins.service failed because the control process exited with
error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
可以不使用systemctl的方式去启动暂停Jenkins,直接用Jenkins自带的服务启动
其实systemctl最终也是执行的这个命令
cd /etc/init.d
# 从新启动
./jenkins restart
# 停止
./jenkins stop
# 状态
./jenkins status
9.访问
ip:port
192.168.56.137:9898
访问报如下错误:
AWT is not properly configured on this server. Perhaps you need to run
your container with “-Djava.awt.headless=true”? See also:
https://jenkins.io/redirect/troubleshooting/java.awt.headless
解决方案:
yum install -y dejavu-sans-fonts
yum install -y fontconfig
yum install -y xorg-x11-server-Xvfb
从新读取配置文件
systemctl daemon-reload
从新启动,确保在 /etc/init.d 执行该指令 从新启动后再次刷新访问
./jenkins restart
10.查看Jenkins密码
cat /var/lib/jenkins/secrets/initialAdminPassword
11.修改插件下载地址
sed -i 's/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json
12.进入 Manage Jenkins -> Manage Plugin -> Advanced 最下面有 Update Site 设置为:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
13.重启Jenkins
ip:8088/restart
14.汉化Jenkins
Manage Jenkins -> Manage Plugin -> available
输入 Localization: Chinese (Simplified)
点击:install without restart
15.安装自动化部署所需插件
// git插件
Git client
// gitlab插件
GitLab
// ssh插件
SSH Credentials
// maven插件
Maven Integration
直接点击 安装完成后… 几个字即可
http的git地址一定加上端口
注意修改jar包的名称,可以直接将该脚本放在服务器,使用 bash /root/脚本名称 该处直接运行脚本
jarPath=/var/lib/jenkins/workspace/demo/target/ 是Jenkins构建后jar生成的位置
脚本这里自己注意修改一下
#!/bin/bash
workPath=/usr/local/project/test/
jarPath=/var/lib/jenkins/workspace/test/target/
jarName=test-0.0.1-SNAPSHOT.jar
mkdir -vp $workPath
echo "==========创建工作空间=========="
chmod 755 $workPath
pid=`ps -ef | grep test-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
echo "==========杀死存在进程=========="
fi
echo $workPath$jarName
echo $jarPath$jarName
if [ -e $workPath$jarName ]; then
echo "==========启动文件存在, 执行删除启动文件=========="
rm -rf $workPath$jarName
else
echo "==========启动文件不存在=========="
fi
if [ -e $jarPath$jarName ]; then
cp $jarPath$jarName $workPath
echo "==========目标文件存在, 执行拷贝启动文件=========="
else
echo "==========目标文件不存在=========="
fi
cd $workPath
export BUILD_ID=dontKillMe
echo "==========执行启动demo服务=========="
nohup java -jar test-0.0.1-SNAPSHOT.jar > test-logs.log 2>&1 &
echo "==========启动成功demo服务=========="
16.如何卸载Jenkins
rpm -e jenkins
rpm -ql jenkins
find / -iname jenkins | xargs -n 1000 rm -rf
17.升级Jenkins
17.0关闭Jenkins服务
systemctl stop jenkins
systemctl status jenkins
17.1下载war包
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war
17.2查找服务器Jenkinswar位置
find / -name jenkins.war
17.3进入war所在位置
cd /usr/lib/jenkins/
17.4将war移动到其他目录
mkdir /root/jenkins
17.5将下载的war包放入该文件
mv /root/jenkins.war ./
17.6启动服务
systemctl start jenkins
17.7注意Jenkins版本与jdk对应版本,否则启动失败
文章来源:https://www.toymoban.com/news/detail-715772.html
我码的累你看的也累,一键三连支持一下,谢谢大家了,不好的地方也欢迎大家指出,码字不易转载请注明出处文章来源地址https://www.toymoban.com/news/detail-715772.html
到了这里,关于2023全网最细最全保姆级gitlab+Jenkins+maven自动化部署springboot项目教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!