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
提交代码
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/