一、gitlab部署与使用
一、Gitlab简介
Gitlab 是一个基于Git实现的WEB代码仓库托管软件,你可以用Gitlab自己搭建一个类似于Github一样的代码仓库,一般使用gitlab搭建私有代码仓库主要是用在公司的内部代码管理。
Gitlab 功能是能够对代码的提交审核和问题跟踪,这个对于软件工程(代码)质量的管理是至关重要的。
Gitlab分为社区版(CE)和企业版(EE)。大多数的公司还是会选择社区版。部署Gitlab是对服务器有配置要求的建议是CPU两核,内存4G以上
二、Gitlab的工作原理
gitlab的原理其实就是git的工作原理,GitHub也是基于git实现的
工作图示:
三、Gitlab的服务构成
1.Nginx:静态Web服务器 2.gitlab-shell:用于处理Git命令和修改authorized keys列表 3.gitlab-workhorse:轻量级的反向代理服务器(这个是个敏捷的反向代理,它会处理一些大的HTTP请求,比如文件的上传下载,其他的请求会反向代理给Gitlab Rails应用) 4.logrotate:日志文件管理工具 5.postgresql:数据库 6.redis:缓存数据库 7.sidekiq:用于在后台执行队列的任务 8.unicorn:Gitlab Rails应用是托管在这个服务器上面的
一.项目实验拓扑图
二.项目实验思路及重点内容(步骤及重难知识点)
主机名 | OS | IP地址 | 软件 | 服务器配置 | 说明概述 |
gitlab-01 | Centos7 | 10.10.10.11 | gitlab | 4c,4G,100G | 部署gitlab服务 |
GitLab 主要目录
/var/opt/gitlab:数据目录 /opt/gitlab: 安装目录 /etc/gitlab: 配置文件目录 /etc/gitlab/gitlab.rb gitlab配置文件 /var/log/gitlab:此目录下存放了 gitlab 各个组件产生的日志 /var/opt/gitlab/backups/:备份文件生成的目录
1. gitlab下载与部署
官网:https://about.gitlab.com/ 清华大学镜像站:https://mirrors.tuna.tsinghua.edu.cn/
- 访问清华大学镜像站,找到 gitlab-ce
- 选择yum
- 选择centos对应的版本
- 选择需要的版本
2. 安装对应的依赖
yum -y install curl openssh-server openssh-clients postfix cronie policycoreutils-python
3. 启动postfix,并设置开机自启
[root@gitlab ~]# systemctl start postfix [root@gitlab ~]# systemctl enable postfix
报错提示:
解决方法:
vi /etc/postfix/main.cf 发现配置为: inet_interfaces = localhost inet_protocols = all 改成: inet_interfaces = all inet_protocols = all 重新启动 systemctl start postfix
4. 关闭防火墙或者设置对应的防火墙策略
iptables -F setenforce 0 systemctl stop firewalld firewall-cmd --add-service=http --permanent firewall-cmd --reload
5. 安装并修改配置文件/etc/gitlab/gitlab.rb,生产环境下可以跟据需求修改
[root@gitlab ~]# rpm -ivh gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm [root@gitlab ~]# vim /etc/gitlab/gitlab.rb 13 external_url 'http://192.168.200.111'
6. 重新加载配置文件
[root@gitlab ~]# gitlab-ctl reconfigure [root@gitlab ~]# gitlab-ctl restart [root@gitlab ~]# netstat -lnpt | grep :80
7. 管理命令
启动:gitlib-ctl start 关闭:gitlab-ctl stop 重启:gitlab-ctl restart 重载配置:gitlab-ctl reconfigure 查看状态:gitlab-ctl status
8. 查看版本
[root@gitlab ~]# head -1 /opt/gitlab/version-manifest.txt
四、 web页面管理功能
浏览器访问:http://ip地址
输入用户名密码
案例一:调整gitlab为中文
点击preferences
案例二:创建项目
这里最好不要写中文
在gitlab的web界面创建文件
项目的查看
案例三:将项目授权给某个用户
用户这时候没有密码
设置密码
这样我们使用普通用户就登录进来了
这样xiaoli这个用户就有项目的权限了
案例四:客户端下载和提交代码
下载:
[root@k8s-node1 ~]# git clone http://10.10.10.11/share/dmw.git #克隆下代码 正克隆到 'dmw'... Username for 'http://10.10.10.11': xiaoli # 输入账号 Password for 'http://xiaoli@10.10.10.11': # 输入密码 remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. [root@k8s-node1 ~]# ls anaconda-ks.cfg dmw initial-setup-ks.cfg # 这个dmw就是克隆下来的代码目录
提交:
打开gitlab验证:
案例五:设置发邮件功能
1. 修改或者添加配置文件
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb 517 gitlab_rails['smtp_enable'] = true 518 gitlab_rails['smtp_address'] = "smtp.163.com" 519 gitlab_rails['smtp_port'] = 25 520 gitlab_rails['smtp_user_name'] = "lixie0215@163.com" 521 gitlab_rails['smtp_password'] = "123456" 522 gitlab_rails['smtp_domain'] = "163.com" 523 gitlab_rails['smtp_authentication'] = "login" 524 gitlab_rails['smtp_enable_starttls_auto'] = true #修改gitlab配置的发信人 53 gitlab_rails['gitlab_email_from'] = 'lixie0215@163.com' 677 user['git_user_email'] = "lixie0215@163.com"
2. 重新加载配置并重启服务
[root@gitlab ~]# gitlab-ctl reconfigure [root@gitlab ~]# gitlab-ctl restart
案例六:Gitlab的备份与恢复
步骤一:
停止gitlab的数据服务(禁止用户写入数据)
[root@gitlab01 ~]# gitlab-ctl stop unicorn ok: down: unicorn: 1s, normally up [root@gitlab01 ~]# gitlab-ctl stop sidekiq ok: down: sidekiq: 0s, normally up
步骤二:
通过gitlab-rake命令备份gitlab
gitlab-rake gitlab:backup:create gitlab-ctl start # 备份完成后启动gitlab
温馨提示:
该命令会备份gitlab仓库、数据库、用户、用户组、用户密钥、权限等信息。备份完成后备份文件会出现在/var/opt/gitlab/backups/ (会生成以下这样的文件)
步骤三:
模拟gitlab服务器模拟用户及数据
假如:把以下代码模拟删除
步骤四:
模拟:恢复数据
禁止写入数据: [root@gitlab01 ~]# gitlab-ctl stop unicorn ok: down: unicorn: 1s, normally up [root@gitlab01 ~]# gitlab-ctl stop sidekiq ok: down: sidekiq: 0s, normally up 执行恢复命令: gitlab-rake gitlab:backup:restore BACKUP=1632376876_2021_09_23_11.11.3 # 输入yes进行确认 gitlab-ctl start
验证:(数据被还原了)