gitlab,Jenkins安装与部署后台web

1、gitlab的安装

1.1 系统为乌班图18.04版本
设置apt源
vi /etc/apt/sources.list   删除其他内容,改为下面
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

1.2 下载安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/gitlab-ce_12.2.5-ce.0_amd64.deb
dpkg -i gitlab-ce_12.2.5-ce.0_amd64.deb   安装

出现下面这个图代表安装成功

在这里插入图片描述
1.3 配置访问
gitlab是通过邮箱注册账户的,所以需要开启POP3/SMTP服务
QQ授权码生成方式:QQ授权码教程

vi /etc/gitlab/gitlab.rb    修改这行,把访问地址设置为本机IP

external_url 'http://192.168.116.161'

#下面是管理员账户邮箱配置,收到授权码后,修改qq号和qq邮箱授权码这2个就行,其他不用变
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "qq号@qq.com"
gitlab_rails['smtp_password'] = "qq邮箱授权码"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "qq号@qq.com"
user["git_user_email"] = "qq号@qq.com"

gitlab-ctl reconfigure  初始化配置并启动,等到出现下面这个界面表示初始化成功

在这里插入图片描述
1.4 输入地址访问

http://192.168.116.161/
默认会直接让你输入密码,账户为root

在这里插入图片描述
设置密码后跳转到登录界面,输入账户root,密码为上面设置的密码即可登录
注意:默认有register自动注册账户功能,也就是图上的register
在这里插入图片描述
1.5 将自动注册账户功能关闭
选择红色箭头位置
在这里插入图片描述
左边列表栏找到这个
在这里插入图片描述
这里默认是enabled,将打钩取消,关闭自动注册账户
在这里插入图片描述
下面有保存选项,点击Save changes
在这里插入图片描述

重新登录,确认关闭成功
在这里插入图片描述
1.6 开启中文显示
右上角选择设置
在这里插入图片描述
左边列表找到这个
在这里插入图片描述
在最下面选择中文,然后保存退出,重新登录下网站
在这里插入图片描述
在这里插入图片描述

2、gitlab命令使用总结

gitlab-psql    进入gitlab数据库终端
\db            查看数据库
\q             退出数据库

gitlab-ctl status         查看gitlab服务器组件状态
gitlab-ctl tail redis     指定redis或其他组件查看组件日志
gitlab-ctl stop           关闭gitlab
gitlab-ctl start          启动gitlab
gitlab-ctl restart        重启gitlab
gitlab-ctl start unicorn  开启gitlab数据上传功能
gitlab-ctl stop unicorn   关闭gitlab数据上传功能
gitlab-ctl start sidekiq  开启数据写入功能
gitlab-ctl stop sidekiq   关闭数据写入功能
gitlab-rake gitlab:backup:create  手动创建备份文件
备份默认保存在这个目录下/var/opt/gitlab/backups/

3、gitlab数据备份及恢复

3.1 创建gitlab账户

选择设置
在这里插入图片描述
选择New user 创建账户
在这里插入图片描述
输入账户名字和邮箱地址,邮箱地址必须为真实的邮箱地址,密码配置会发送邮件进行配置
在这里插入图片描述
权限配置
在这里插入图片描述
在这里插入图片描述
在邮件中点击设置账户密码
Click here to set your password 点击这个
在这里插入图片描述

3.2 创建账户组

在这里插入图片描述
选择New group
在这里插入图片描述
设置群组名字my_group
在这里插入图片描述
其他默认
在这里插入图片描述
将账户添加到群组
在这里插入图片描述
设置成员权限
在这里插入图片描述
确认添加成功
在这里插入图片描述

3.3 选择群组,在群组里面创建项目

找到群组
在这里插入图片描述
在这里插入图片描述

新建项目,设置名字my_project
在这里插入图片描述
在这里插入图片描述
可以看到下载项目的方式
在这里插入图片描述

3.4 创建文件,输入一些代码作为数据

在这里插入图片描述
设置文件名project_test
输入 hello!world!v1
在这里插入图片描述
在这里插入图片描述
提交代码
在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 14266221 查看本文章

3.5 在gitlab服务器端备份数据

gitlab-ctl stop unicorn           关闭上传服务
gitlab-ctl stop sidekiq           关闭写入服务
gitlab-rake gitlab:backup:create  手动创建备份文件
ls /var/opt/gitlab/backups/   会在这个目录下生成文件

下面这个警告就是要自动手动用cp备份这2个文件
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data 
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.

下面这2个文件需要用cp备份,这2个是记录账户等信息的
ls /etc/gitlab/gitlab.rb
ls /etc/gitlab/gitlab-secrets.json 

备份完成后,重新启动服务
gitlab-ctl restart

在这里插入图片描述

3.6 备份完成后,删除文件测试能否恢复

找到项目,删除文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在gitlab服务器上指定备份文件恢复

gitlab-ctl stop unicorn           关闭上传服务
gitlab-ctl stop sidekiq           关闭写入服务
ls /var/opt/gitlab/backups/       查看备份文件名字

开始恢复,有要输入yes输入即可
gitlab-rake gitlab:backup:restore BACKUP=1644399092_2022_02_09_12.2.5 

新节点需要先把这2个文件替换为节点的文件
cp /etc/gitlab/gitlab.rb /etc/gitlab/
cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/

gitlab-ctl reconfigure       然后初始化,最后指定文件恢复
gitlab-ctl stop unicorn           关闭上传服务
gitlab-ctl stop sidekiq           关闭写入服务
cp 1644399092_2022_02_09_12.2.5_gitlab_backup.tar /var/opt/gitlab/backups/
cd /var/opt/gitlab/backups/
chown git.git 1644399092_2022_02_09_12.2.5_gitlab_backup.tar
gitlab-rake gitlab:backup:restore BACKUP=1644399092_2022_02_09_12.2.5 

最后重新启动服务
gitlab-ctl restart

在这里插入图片描述
登录网站,确认文件恢复成功
在这里插入图片描述

4、jenkins通过自由风格及pipeline实现代码自动部署

代码部署拓扑
在这里插入图片描述

4.1 jenkins的安装

系统为乌班图 18.04
设置apt源
vi /etc/hosts      修改hosts
192.168.116.162 jenkins.test.io.aa
192.168.116.161 gitlab.test.io.aa
192.168.116.132 web1.test.io.aa

hostnamectl set-hostname jenkins.test.io.aa

vi /etc/apt/sources.list   修改文件内容为下面
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

安装java 8
apt update
apt install openjdk-8-jdk -y
apt update
apt install daemon -y

下载Jenkins包,安装Jenkins
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/jenkins_2.277.2_all.deb

dpkg -i jenkins_2.277.2_all.deb

修改文件中的网址,加速插件下载
vi /var/lib/jenkins/hudson.model.UpdateCenter.xml

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

systemctl start jenkins
systemctl enable jenkins

访问网站http://192.168.116.162:8080
第一次启动会比较慢,等待即可
在这里插入图片描述

在服务器上查看密码,把密码复制到网页上登录
cat /var/lib/jenkins/secrets/initialAdminPassword
在这里插入图片描述

安装推荐的插件
在这里插入图片描述
等待插件安装完成
在这里插入图片描述
创建管理账户
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.2 Jenkins安装gitlab插件和用户管理插件

选择左边列表这个
在这里插入图片描述
选择这个
在这里插入图片描述
搜索gitlab,GitLab Authentication,Role-based Authorization Strategy这些插件进行安装
在这里插入图片描述

最下面选择自动重启Jenkins或者手动重启服务
在这里插入图片描述
默认可以登录Jenkins的账户都有查看所有任务权限
所以需要点击这里关闭普通用户查看权限
在这里插入图片描述
在这里插入图片描述
选择这个,保存退出
在这里插入图片描述

4.3 搭建web服务器,将Jenkins和web服务器用公钥连接起来

web服务器搭建

配置hosts
vi /etc/hosts
192.168.116.162 jenkins.test.io.aa
192.168.116.161 gitlab.test.io.aa
192.168.116.132 web1.test.io.aa

hostnamectl set-hostname web1.test.io.aa

yum install -y httpd
systemctl start httpd
systemctl enable httpd

创建账户,这个是用来部署网站的,需要对网站目录有权限
useradd httpd
passwd httpd
setfacl -R -m u:httpd:rwx /var/www/html/

修改sudo权限
vi /etc/sudoers.d/httpd
httpd    ALL=(ALL)       NOPASSWD: ALL

Jenkins配置公钥

su - jenkins
ssh-keygen    生成公钥
ssh-copy-id [email protected]

ssh [email protected]   测试能否连接

4.4 按照上面安装gitlab服务器,在gitlab服务器上配置Jenkins的公钥

在Jenkins服务器查看公钥信息

修改Jenkins服务器的启动账户为root账户
vi /etc/default/jenkins   把默认的$NAME改为root
JENKINS_USER=root
JENKINS_GROUP=root

systemctl restart jenkins   重启服务

上面root账户已经创建好公钥
cat /root/.ssh/id_rsa.pub  查看公钥信息

gitla服务器上配置hosts

vi /etc/hosts
192.168.116.162 jenkins.test.io.aa
192.168.116.161 gitlab.test.io.aa
192.168.116.132 web1.test.io.aa

hostnamectl set-hostname gitlab.test.io.aa

在gitlab的网页上将Jenkins的公钥复制到gitlab
在这里插入图片描述
左边列表找到
在这里插入图片描述
输入公钥信息和ssh地址
在这里插入图片描述
在这里插入图片描述

要下载代码需要gitlab已经创建好项目,在项目这里可以看到git的网址
在Jenkins测试能否用git下载代码
在这里插入图片描述

apt install -y git    安装工具
git clone [email protected]:my_group/my_project.git   下载代码,可以看到项目目录

在这里插入图片描述

4.5 在Jenkins 网页上新建pipline任务,用来将gitlab拉取的代码部署到web服务器

在这里插入图片描述
输入名字,选择流水线,也就是pipline
在这里插入图片描述
点击流水线语法,会弹出新的窗口
在这里插入图片描述
选择git:Git,点击添加凭据Jenkins,这个是用来将Jenkins的私钥绑定到服务上
在这里插入图片描述
在Jenkins服务器上查看私钥

cat /root/.ssh/id_rsa 

在这里插入图片描述
选择ssh模式
在这里插入图片描述
输入账户root,点击add添加私钥
在这里插入图片描述
在这里插入图片描述
输入gitlab项目的网址,点击生成脚本信息
[email protected]:my_group/my_project.git
在这里插入图片描述
在流水线界面选择GitHub+Maven,输入内容,保存

node {
    
    
        stage("下载代码"){
    
    
        git credentialsId: '95cfc5b3-d999-4f49-8a8c-6c0f39cae506', url: '[email protected]:my_group/my_project.git'
        }
}

在这里插入图片描述
在项目左边列表可以点击立即构建,开始测试Jenkins能否下载代码
在这里插入图片描述

在下面点击这个查看构建信息,得到下载的代码目录
在这里插入图片描述
可以看到下载代码存放的目录
在这里插入图片描述
返回Jenkins服务器查看代码是否下载成功

cd /var/lib/jenkins/workspace/my_project_web
cat project_test

在这里插入图片描述
再次返回Jenkins网页,将流水线任务添加完整
在这里插入图片描述

在这里插入图片描述
添加代码

node {
    
    
        stage("下载代码"){
    
    
        git credentialsId: '95cfc5b3-d999-4f49-8a8c-6c0f39cae506', url: '[email protected]:my_group/my_project.git'
        }
        stage("停止httpd"){
    
    
        sh 'ssh [email protected] "sudo systemctl stop httpd"'
        }
        stage("删除旧代码"){
    
    
        sh 'ssh [email protected] "cd /var/www/html/ && rm -rf *"'
        }
        stage("上传新代码"){
    
    
        sh 'scp /var/lib/jenkins/workspace/my_project_web/* [email protected]:/var/www/html/'
        }
        stage("启动httpd"){
    
    
        sh 'ssh [email protected] "sudo systemctl start httpd"'
        }
}

在这里插入图片描述
默认访问web的界面时这个默认界面
http://192.168.116.132/
在这里插入图片描述
在Jenkins的任务点击立即构建,测试代码是否部署到web上
在这里插入图片描述
访问网址:http://192.168.116.132/project_test
在这里插入图片描述

4.6 在客户端192.168.116.130修改代码,然后重新部署web测试

客户端配置

yum install -y git
git clone http://192.168.116.161/my_group/my_project.git  输入gitlab的账户信息
cd my_project/   进入代码目录
echo web1-192.168.116.132 >index.html  创建网页代码
git add index.html      保存代码文件到本地缓存区
git commit -m "v1"      将代码放到本地仓库

在这里插入图片描述

git status   可以看到刚才放了一个文件到本地仓库
git push     将本地仓库的代码上传到gitlab的仓库分支上,默认是master

在这里插入图片描述

在这里插入图片描述
返回gitlab网页上,可以看到代码被提交了
在这里插入图片描述
在Jenkins任务上再次构建,确认代码部署到web
在这里插入图片描述

访问web测试代码是否部署完成
http://192.168.116.132/
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/DLWH_HWLD/article/details/122177047