开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情
架构图
大家好,我是Java步兵营的二排长,之前我们已经看过这个架构图了,那么本篇我们通过VMware这个软件来模拟上图的整个架构环境,我们需要创建出三台虚拟机(操作系统我用的Centos7)分别作为以下用途:
注意:用自己笔记本电脑虚拟三台服务器对内存还是消耗很大的,建议各位小伙伴电脑内存最好>=16g,每台服务器分配以下内存我觉得是比较合适,不至于卡的动不了....
- Gitlab服务器(IP:192.168.188.21):建议分配6g内存
- Jenkins服务器(IP:192.168.188.22):建议分配2g内存
- Runtime服务器(IP:192.168.188.23):建议分配2g内存
如果不会使用VMware创建虚拟机的同学可以参照我之前写的文章。
服务器配置
一、配置Gitlab服务器:
注意:Gitlab服务器所在的虚拟机的内存分配一定要分配6G以上,这个软件比较吃内存,免得安装到最后启动不起来就尴尬了!
1、更新yum源
这一步需要耗费点时间,请耐心等待
yum update
2、安装依赖
yum install -y yum-utils device-mapper-persisten-data lvm2
3、添加镜像
//国外镜像
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//阿里镜像
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、查看源中可用版本
yum list docker-ce --showduplicates | sort -r
5、安装指定版本的docker
这里可以选择自己想要安装的,我一般安装次新的。
yum install docker-ce-20.10.9-3.el7
6、配置开机启动项
systemctl start docker
systemctl enable docker
docker version
7、使用Docker安装Gitlab
这里的hostname要注意记得填写自己的虚拟机的IP地址哦!
docker run --detach \
--hostname 192.168.188.21 \
--publish 443:443 --publish 80:80 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab:Z \
--volume $GITLAB_HOME/logs:/var/log/gitlab:Z \
--volume $GITLAB_HOME/data:/var/opt/gitlab:Z \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest
等待漫长的启动时间后访问浏览器输入地址:http://192.168.188.21/ 然后按回车进入登录界面
8、查找初始密码
进入容器内部,输入如下命令即可看到一个有效期为24小时的临时密码
然后回到登录界面输入用户名:root,输入刚刚查看到的容器内的密码,即可登录进入主页。进入主页后记得主动修改登录密码哦!
9、新建项目
点击新建项目按钮
选择新建空白项目
填好项目名称,选择public,然后点击创建项目。创建完毕后在自己电脑的idea上创建一个springboot项目与gitlab上的java-project做关联,验证能否上传就行。
二、配置Jenkins服务器:
注意:之前我在《大军压境Jenkins,破晓!》一文中已经介绍过如何用Docker部署Jenkins,今天我要给大家介绍另一种部署方式,相对来说较为简单一点,仅需在服务器上安装JDK、Git、Maven和部署Jenkins的war包的即可。
1、下载Jenkins
首先访问Jenkins的官网:Jenkins 的安装和设置 点击下载Jenkins稳定版的war,然后上传到虚拟机上你自己定义的位置。
2、安装JDK
首先我们使用yum命令搜索一下有哪些jdk
yum search java|greo jdk
这里我们选择jdk8安装即可,不要选高版本的11,避免war包启动报错(我就是选了高版本启动不了)
yum install -y java-1.8.0-openjdk
yum install -y java-devel
3、启动Jenkins
将Jenkins的war上传到服务器上的自己熟悉的位置,然后运行Java命令启动该项目,启动完成后浏览器输入地址 http://192.168.188.22:8080/ ,这里各位小伙伴要记得把IP改成自己虚拟机的实际IP,然后等待3~5分钟初始化过程。
hohup java -jar jenkins.war &
然后还是一样哈,填入初始化的密码
接下来的过程和我之前写过的另一篇文章Docker方式部署的一模一样,不再向大家展示了
4、安装插件
为了方便后面自动化构建,这里大家先安装几个插件:
- Maven Integration:用于构建maven项目
- Publish Over SSH:用于远程连接Runtime服务器,传输文件
搜索 Maven Integration,点击左下角安装
搜索 Publish Over SSH,点击左下角安装
如果下载插件的过程中出现错误的话,可以尝试升级站点源,插件安装完毕后不要忘记重启Jenkins!
http://mirror.esuni.jp/jenkins/updates/update-center.json
5、安装maven
前往maven官网下载maven插件,地址我贴出来 dlcdn.apache.org/maven/maven… 下载完成后上传服务器,进行解压缩。命令我也发出来
tar xzvf apache-maven-3.8.7-bin.tar.gz
然后将maven移动到/usr/local/maven目录下
mv apache-maven-3.8.7 /usr/local/maven
6、安装Git
在宿主机上执行以下命令安装git插件
yum install git
7、小试牛刀
新建一个item
输入任务名称first,构建方式选择构建一个maven项目
定位到源码管理,选择我们上面部署好的Gitlab中托管的代码,这里我们选择HTTP形式
粘贴到URL上,由于我们的项目是设置的公开的,所以这里的Credentials不需要填写,如果是机密的项目的话这里需要填写凭证。
由于我的代码是提交到master分支的,故这里我不需要改动,如果大家上传的不是master分支的,需要填写你的分支名称。
这里都可以保持默认即可
虽然之前安装了maven,但是Jenkins是不知道的,所以这里需要我们手动去配置一下安装路径,点击 the tool configuration 进入配置页面。
下拉到底部,选择新增maven
给maven起个名字,输入maven的安装目录,如果按照我上面的命令执行的话,这里输入下面路径即可,然后点击保存。
返回之前的页面,点击保存。
点击build可以试下构建
可以通过console查看执行过程
由于maven没有配置国内私服地址,所以下载速度很慢,我们可以配置maven为阿里云私服地址,可以加速依赖包的下载速度,首先去服务器上的/usr/local/maven/conf目录下找到settings.xml,先下载到本地然后用本文编辑器打开,找到这里添加一下阿里云的镜像。然后再传回/usr/local/maven/conf目录下选择替换。
三、配置Runtime服务器:
Runtime服务器只需要安装JDK即可,安装方式参考上面yum安装JDK的方式就行。
四、开始实验
下面我们做下最后的调整即可将整个环境链路串通起来,实现一键点击构建+部署的操作
1、配置SSH
在Jenkins目录按如下步骤操作
下拉到底部,新增一个 SSH Server(我们这里的远程服务器就是Runtime服务器)
添加Runtime服务器的相关信息
配置完毕后,下拉底部点击Test Configuration,只要你的密码没错、项目运行服务器正常启动、网络通畅的情况下,就会出现success
2、修改项目配置
我们这里改下之前在Jenkins上新建的first项目的配置,下拉到 Post Steps(构建后步骤)区域配置构建后要执行的操作。
下拉选择 Send files or execute commands over SSH 选项
这里配置通配符传输jar文件到代码运行服务器,然后执行我们期望执行的命令,这里我们就演示以下传输完成后启动我们的java演示案例
保存后构建,然后进入Runtime服务器的/root/first目录下,就会发现我们刚刚传输过来的jar文件了,这时候我们利用jps命令查看,我们的demo服务已经成功启动了
页面也能正常访问
如果页面访问不了有可能是防火墙阻拦了端口,可以手动输入命令释放,命令我也贴出来
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
小结
至此我们已经完成了利用VMware虚拟三台服务器,分别模拟了Gitlab、Jenkins、Runtime服务器的配置以及运行流程。感谢各位小伙伴的支持!