Gitlab

前言

GitHub毕竟是公开的,而私有仓库又得花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。GitLab是个不错的选择。在介绍它之前,先讲述一下命令行的Git服务器。

Gitlab 搭建

Gitlab - 图1
结合前面,新创建一台服务器,只配置好ip即可。
1. 找一台服务器,先安装git
[root@server ~]# yum install -y gitGitlab - 图2
2. 配置基本信息
[root@server ~]# git config —global user.name “zzx”
[root@server ~]# git config —global user.email “example@qq.com”
Gitlab - 图3
3. 添加git用户,设置shell为/usr/bin/git-shell,目的是为了让git用户没有办法远程登陆。
[root@server ~]# useradd -s /usr/bin/git-shell git
[root@server ~]# cd /home/gitGitlab - 图4
4. 创建文件,更改所属组和权限,存放客户端机器上的公钥。
[root@server git]# mkdir .ssh
[root@server git]# touch .ssh/authorized_keys
[root@server git]# chown -R git.git .ssh
[root@server git]# chmod 600 .ssh/authorized_keys
[root@server git]# ll /home/git/.ssh/authorized_keys
-rw———- 1 git git 0 8月 23 05:25 /home/git/.ssh/authorized_keys
Gitlab - 图5
5. 创建Git仓库目录。
[root@server git]# mkdir -p /data/gitpub
[root@server git]# cd /data/gitpub Gitlab - 图6
6. 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,
所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾
[root@server gitpub]# git init —bare sample.git
初始化空的 Git 版本库于 /data/gitpub/sample.git/
[root@server gitpub]# chown -R git.git sample.git
[root@server gitpub]# ll
总用量 0
drwxr-xr-x 7 git git 111 8月 23 05:26 sample.gitGitlab - 图7
以上操作是在Git服务器上操作,平时Git服务器是不需要开发人员登录修改代码的,
# 它仅仅是充当着一个服务器的角色,就像GitHub一样,平时操作都是在我们自己的机器上操做的。

登录客户端,把客户端公钥放在git服务器/home/git/.ssh/authorized_keys 文件里
[root@client ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuByaauyk1ImvUqKrQlSuC9kRQG60gbsLKC8yRRsqKW4X2rND0wdwTmpvolNAO9EYFuhYVA/+fHgxOGU0VZA18+ixFDsJX9oBmnbdQHHsBSL9BENm5JnSmQvy2/NjsP6LqatAtPUEwE+H1lJep6gg1fZG1KZ1DCHKhIVgb5inE0/L4ZG7aKw57/o5A6d9TaOhRFhyuREo2aPMwoEbNNiee2hJHXwtyYUBKD+RJiAn8/qA10Qt7XJAbHbCw58gtchDr/DOuVCZ9Cc2FuKbXiwDMjDq4d65M6tQyo97W/KNxtqfUvXtDGLap96KG7iXx8QU0HWtqPgY5pcAzPGGu3fXP root@client

[root@server ~]# vi /home/git/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuByaauyk1ImvUqKrQlSuC9kRQG60gbsLKC8yRRsqKW4X2rND0wdwTmpvolNAO9EYFuhYVA/+fHgxOGU0VZA18+ixFDsJX9oBmnbdQHHsBSL9BENm5JnSmQvy2/NjsP6LqatAtPUEwE+H1lJep6gg1fZG1KZ1DCHKhIVgb5inE0/L4ZG7aKw57/o5A6d9TaOhRFhyuREo2aPMwoEbNNiee2hJHXwtyYUBKD+RJiAn8/qA10Qt7XJAbHbCw58gtchDr/DOuVCZ9Cc2FuKbXiwDMjDq4d65M6tQyo97W/KNxtqfUvXtDGLap96KG7iXx8QU0HWtqPgY5pcAzPGGu3fXP root@client

1.生成密钥
[root@client ~]# ssh-keygen
三次回车
[root@client ~]# ls -a
. anaconda-ks.cfg .bash_profile .cshrc .tcshrc
.. .bash_logout .bashrc .ssh
[root@client ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrmilFtUpF6n0vhIkTmNCnGNjXkTaURIqx/V+nN+fqUVod5m4RhbLWCmqD0I0XXQ5efoi67EeeMdKUxRDXdWlwyL9CmktFH/4CKwp7GXVc6ZB66V7/yRuJEMq6mTtrSFopUdePjdbidlYmhm7Zj1UfzP7IHeurmnngqlgi87RnNIIwWBjgHoM/2BEQ9mwMiZQ80CpjcXnKqn0WOC6jeR9jLtbD2fNvupWcBXAB8J7E85hbxCPRDtSk7vmy33HpptWtWZIIZi0BYXmjIEweU7ts8/L527N0U85UfysEdtiaJstJEEBffe1kq2bZ4oWflwLjIVJxIPsTxcoMAiFgk0AB root@client
Gitlab - 图8
Gitlab - 图9
2安装git
[root@client ~]# yum install -y git
Gitlab - 图10
3.创建
[root@client ~]# mkdir /new
[root@client ~]# cd /new
[root@client new]# git clone git@192.168.200.50:/data/gitpub/sample.git
Gitlab - 图11
[root@client new]# ls
sample
Gitlab - 图12
# 此时就可以在当前目录下生成一个sample的目录,这个就是我们克隆的远程仓库了。
# 进入到这里面,可以开发一些代码,然后push到远程,比如git push origin master。
[root@client new]# cd sample/
[root@client sample]# ll -a
总用量 0
drwxr-xr-x 3 root root 17 8月 23 07:32 .
drwxr-xr-x 3 root root 19 8月 23 07:32 ..
drwxr-xr-x 7 root root 111 8月 23 07:32 .git
Gitlab - 图13

Gitlab的使用

[root@server ~]# vim /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$rel
easever/
gpgcheck=0
enabled=1
Gitlab - 图14
[root@server ~]# yum clean all
[root@server ~]# yum repolist
Gitlab - 图15
安装工具
[root@server ~]# yum install -y gitlab-ce
重新加载,过程很长,需要等一会。
[root@server ~]# gitlab-ctl reconfigure
可以看到有很多的端口
[root@server ~]# netstat -ntlp
Gitlab - 图16
[root@server ~]# gitlab-ctl start
Gitlab - 图17
查看浏览器默认密码
[root@server ~]# cat /etc/gitlab/initial_root_password
Gitlab - 图18
在浏览器输入IP进行访问。 用户名 root 密码在/etc/gitlab/initial_root_password

备份

[root@server ~]# gitlab-rake gitlab:backup:create
备份目录在/var/opt/gitlab/backups
[root@server ~]# ls /var/opt/gitlab/backups/ 1628370252_2021_08_08_14.1.2_gitlab_backup.tar
GitLab恢复,需要先停服务
[root@server ~]# gitlab-ctl stop unicorn ; gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
[root@server ~]#
[root@server ~]# gitlab-rake gitlab:backup:restore BACKUP=1628370252_2021_08_08_14.1.2
#(这里是一个编号,即备份文件的前缀) //恢复备份
# 再启动服务
[root@server ~]# gitlab-ctl start
ok: run: alertmanager: (pid 20151) 2243s
ok: run: gitaly: (pid 20042) 2246s
ok: run: gitlab-exporter: (pid 20041) 2247s
ok: run: gitlab-workhorse: (pid 20020) 2248s
ok: run: grafana: (pid 20165) 2244s
ok: run: logrotate: (pid 18884) 2454s
ok: run: nginx: (pid 19445) 2367s
ok: run: node-exporter: (pid 20032) 2248s
ok: run: postgres-exporter: (pid 20159) 2244s
ok: run: postgresql: (pid 19134) 2431s
ok: run: prometheus: (pid 20060) 2246s
ok: run: puma: (pid 19328) 2385s
ok: run: redis: (pid 18925) 2448s
ok: run: redis-exporter: (pid 20053) 2246s
ok: run: sidekiq: (pid 23403) 0s