GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是目前被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。

应用特点
1.Web框架使用RubyonRails。
2.基于MIT代码发布协议。
3.需要gitolite协同工作。
常用的版本控制工具:
清华大学yum源 网址 https://mirror.tuna.tsinghua.edu.cn




注意在部署之前内存要给 4G ,不然带不动。
恢复快照到最小化安装
配置yum源
关闭防火墙跟SElinux
//安装git
[root@localhost ~]# yum -y install git
安装过程略.....
//安装依赖包
[root@localhost ~]# yum -y install curl openssh-server openssh-clients postfix cronie
安装过程略....
policycoreutils-python // 这个包需要到 pkgs 去找 ,系统没有
[root@localhost ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/policycoreutils-python-2.5-34.el7.x86_64.rpm
[root@localhost ~]# ls
anaconda-ks.cfg policycoreutils-python-2.5-34.el7.x86_64.rpm
// 卸载 policycoreutils 包
[root@localhost ~]# rpm -e policycoreutils
// 安装 policycoreutils-python-2.5-34.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh --nodeps policycoreutils-python-2.5-34.el7.x86_64.rpm
warning: policycoreutils-python-2.5-34.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:policycoreutils-python-2.5-34.el7################################# [100%]
[root@localhost ~]#
// 启动postfix服务并设置开机自启
[root@localhost ~]# systemctl enable --now postfix
// 查看是否有25 号端口
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Pe
LISTEN 0 128 0.0.0.0:22
LISTEN 0 100 127.0.0.1:25
LISTEN 0 128 [::]:22
LISTEN 0 100 [::1]:25
[root@localhost ~]#
// 下载gitlab的rpm包
[root@localhost ~]# cd /usr/src/
[root@localhost src]# ls
debug kernels
[root@localhost src]# wget https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm
// 查看
[root@localhost src]# ls
debug gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm kernels
//安装gitlab
[root@localhost src]# rpm -ivh gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm
warning: gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:gitlab-ce-15.2.2-ce.0.el7 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 min
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnib
//修改配置文件
[root@localhost ~]# vim /etc/gitlab/gitlab.rb
...... //此处为省略内容
external_url 'http://192.168.229.151' //将此处设为gitlab的服务器ip地址亦或域名
...... //此处为省略内容
//重载配置文件并重启gitlab
[root@localhost ~]# gitlab-ctl reconfigure // 修改配置文件就需要执行这条命令,让其生效
[root@localhost ~]# gitlab-ctl restart
ok: run: alertmanager: (pid 4843) 0s
ok: run: gitaly: (pid 4851) 0s
ok: run: gitlab-exporter: (pid 4869) 0s
ok: run: gitlab-kas: (pid 4871) 1s
ok: run: gitlab-workhorse: (pid 4879) 0s
ok: run: grafana: (pid 4888) 0s
ok: run: logrotate: (pid 4898) 1s
ok: run: nginx: (pid 4904) 0s
ok: run: node-exporter: (pid 4910) 1s
ok: run: postgres-exporter: (pid 4920) 0s
ok: run: postgresql: (pid 4929) 0s
ok: run: prometheus: (pid 4938) 1s
ok: run: puma: (pid 4956) 0s
ok: run: redis: (pid 4963) 0s
ok: run: redis-exporter: (pid 4965) 0s
ok: run: sidekiq: (pid 4977) 0s
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port
LISTEN 0 1024 127.0.0.1:9121
LISTEN 0 1024 127.0.0.1:9090
LISTEN 0 1024 127.0.0.1:9187
LISTEN 0 1024 127.0.0.1:9093
LISTEN 0 1024 127.0.0.1:9100
LISTEN 0 1024 127.0.0.1:9229
LISTEN 0 1024 127.0.0.1:8080
LISTEN 0 511 0.0.0.0:80
LISTEN 0 128 127.0.0.1:9168
LISTEN 0 128 127.0.0.1:8082
LISTEN 0 1024 127.0.0.1:9236
LISTEN 0 1024 127.0.0.1:8150
LISTEN 0 128 0.0.0.0:22
LISTEN 0 1024 127.0.0.1:8151
LISTEN 0 1024 127.0.0.1:3000
LISTEN 0 1024 127.0.0.1:8153
LISTEN 0 100 127.0.0.1:25
LISTEN 0 1024 127.0.0.1:8154
LISTEN 0 1024 127.0.0.1:8155
LISTEN 0 128 127.0.0.1:8092
LISTEN 0 511 0.0.0.0:8060
LISTEN 0 1024 *:9094
LISTEN 0 128 [::1]:9168
LISTEN 0 128 [::]:22
LISTEN 0 100 [::1]:25
//查看当前的gitlab版本
[root@localhost ~]# head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 15.2.2
// 破解管理员密码
[root@localhost ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
GitLab: 15.2.2 (4ecb014a935) FOSS
GitLab Shell: 14.9.0
PostgreSQL: 13.6
------------------------------------------------------------[ booted in 40.46s]
Loading production environment (Rails 6.1.4.7)
irb(main):001:0> user = User.where(id: 1).first //id为1的是超级管理员
=> #
irb(main):002:0> user.password = 'agan9639' //密码必须至少8个字符
=> "agan9639"
irb(main):003:0> user.password_confirmation = 'agan9639'
=> "agan9639"
irb(main):004:0> user.save! //保存修改,若无问题将返回true
=> true
irb(main):005:0> exit //退出 在浏览器中使用gitlab服务器的ip访问,页面如下图所示

主页如下图所示

管理页面如下图所示

gitlab常用管理操作

点击创建项目

点击创建空项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQwTuN0M-1660143869093)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660135489421.png)]](https://1000bd.com/contentImg/2022/08/14/124004527.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BWCpsYWQ-1660143869094)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660135638966.png)]](https://1000bd.com/contentImg/2022/08/14/124004699.png)
项目创建好之后设置好权限,上传的动作开发人员操作就ok了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bXbMQTob-1660143869097)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660136018632.png)]](https://1000bd.com/contentImg/2022/08/14/124005028.png)
使用它提供的代码创建README文件 然后上传到仓库里
[root@localhost ~]# git config --global user.name "root"
[root@localhost ~]# git config --global user.email "agan@163.com"
[root@localhost ~]# git clone http://192.168.229.151/gitlab-instance-abd3cc21/ansible.git
Cloning into 'ansible'...
Username for 'http://192.168.229.151': root // 用户
Password for 'http://root@192.168.229.151': // 密码
warning: You appear to have cloned an empty repository.
// 您似乎克隆了一个空的存储库。
// 自动创建项目目录 Ansible
[root@localhost ~]# ls
anaconda-ks.cfg ansible policycoreutils-python-2.5-34.el7.x86_64.rpm yum.sh
[root@localhost ~]# cd ansible
[root@localhost ansible]# git switch -c main
Switched to a new branch 'main'
[root@localhost ansible]# touch README.md // 创建文件 README.md
[root@localhost ansible]# git add README.md // 最后一次提交
[root@localhost ansible]# git commit -m "add README" // 提交文件
[main (root-commit) 2fd4a82] add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
[root@localhost ansible]# git push -u origin main // 上传 文件
Username for 'http://192.168.229.151': root
Password for 'http://root@192.168.229.151':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 205 bytes | 205.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To http://192.168.229.151/gitlab-instance-abd3cc21/ansible.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
// 创建新项目后把本地文件传到仓库里的一种方法
到网页查看是否已提交
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3cZvQfCx-1660143869098)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660136899529.png)]](https://1000bd.com/contentImg/2022/08/14/124005231.png)
创建组
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mdNPo61d-1660143869100)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660136991380.png)]](https://1000bd.com/contentImg/2022/08/14/124005450.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WULAZhSC-1660143869101)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137017998.png)]](https://1000bd.com/contentImg/2022/08/14/124005685.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c1u0dDI7-1660143869102)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137386456.png)]](https://1000bd.com/contentImg/2022/08/14/124005856.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bx94AKN-1660143869103)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137236421.png)]](https://1000bd.com/contentImg/2022/08/14/124006140.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gv6qScJO-1660143869104)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137280353.png)]](https://1000bd.com/contentImg/2022/08/14/124006309.png)
添加用户到 20220810 组里,所以先创建用户
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RDza1ey9-1660143869105)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137512700.png)]](https://1000bd.com/contentImg/2022/08/14/124006470.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JDRFCXl8-1660143869107)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137594362.png)]](https://1000bd.com/contentImg/2022/08/14/124006626.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Kgr5Wph-1660143869107)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137699930.png)]](https://1000bd.com/contentImg/2022/08/14/124006798.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtZrSL5D-1660143869109)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137782769.png)]](https://1000bd.com/contentImg/2022/08/14/124006985.png)
把用户加到组里,给组设置权限。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AX8ApIYN-1660143869109)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137907884.png)]](https://1000bd.com/contentImg/2022/08/14/124007282.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qfL5oSdJ-1660143869111)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660137964223.png)]](https://1000bd.com/contentImg/2022/08/14/124007517.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gGrcAUN0-1660143869112)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138012771.png)]](https://1000bd.com/contentImg/2022/08/14/124007661.png)
把用户添加到组里,然后设置组权限,不然来一个用户你就需要设置一个权限,来一个设置一个,工作的效率就低了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4FwLxWPQ-1660143869112)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138167925.png)]](https://1000bd.com/contentImg/2022/08/14/124007985.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GCo9hZWQ-1660143869113)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138203178.png)]](https://1000bd.com/contentImg/2022/08/14/124008142.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hVq65rE6-1660143869114)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138392110.png)]](https://1000bd.com/contentImg/2022/08/14/124008313.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8prk4Caz-1660143869116)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138527129.png)]](https://1000bd.com/contentImg/2022/08/14/124008615.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SMBBPP1S-1660143869116)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138802474.png)]](https://1000bd.com/contentImg/2022/08/14/124008889.png)
使用 tom 用户登录
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ceEcXxzf-1660143869118)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138911649.png)]](https://1000bd.com/contentImg/2022/08/14/124009045.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kUupdLQ-1660143869119)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660138982098.png)]](https://1000bd.com/contentImg/2022/08/14/124009217.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QsrVBbwH-1660143869119)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660139034836.png)]](https://1000bd.com/contentImg/2022/08/14/124009375.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CPsMYUwv-1660143869120)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660139072143.png)]](https://1000bd.com/contentImg/2022/08/14/124009531.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HiPlW909-1660143869121)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660139437099.png)]](https://1000bd.com/contentImg/2022/08/14/124009672.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3fYj8elP-1660143869122)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660139457365.png)]](https://1000bd.com/contentImg/2022/08/14/124009828.png)
邀请20220810组到Ansible项目里
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjzaSLkX-1660143869123)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660142900290.png)]](https://1000bd.com/contentImg/2022/08/14/124010078.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZJPSvLE-1660143869124)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660142915755.png)]](https://1000bd.com/contentImg/2022/08/14/124010281.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5ULfoE3-1660143869124)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660142962406.png)]](https://1000bd.com/contentImg/2022/08/14/124010437.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSwStEqK-1660143869126)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660143004297.png)]](https://1000bd.com/contentImg/2022/08/14/124010625.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IiSrRIRi-1660143869127)(../../%E5%8D%9A%E5%AE%A2/%E7%A0%B4%E8%A7%A3%E5%AF%86%E7%A0%81/1660143616765.png)]](https://1000bd.com/contentImg/2022/08/14/124011125.png)
总体流程应该是
创建项目
创建组 、 设置组的权限
创建用户 、 把用户拉到组里
项目邀请组,组里面的用户就可以对这个项目进行操作
// 直接安装这个包会报错,需要卸载这个包policycoreutils
[root@localhost ~]# rpm -ivh --nodeps policycoreutils-python-2.5-34.el7.x86_64.rpm
warning: policycoreutils-python-2.5-34.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
file /usr/bin/semodule_package from install of policycoreutils-python-2.5-34.el7.x86_64 conflicts with filefrom package policycoreutils-2.9-19.el8.x86_64
file /usr/share/man/ru/man8/semodule_package.8.gz from install of policycoreutils-python-2.5-34.el7.x86_64 conflicts with file from package policycoreutils-2.9-19.el8.x86_64
// 卸载
[root@localhost ~]# dnf -y remove policycoreutils
// 安装
[root@localhost ~]# rpm -ivh --nodeps policycoreutils-python-2.5-34.el7.x86_64.rpm
warning: policycoreutils-python-2.5-34.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:policycoreutils-python-2.5-34.el7################################# [100%]
[root@localhost ~]#