Gitlab Install on Centos

  • Gitlab 安装(root用户)
  • Gitlab 配置`编辑/etc/gitlab/gitlab.rb`
  • 配置网站url
  • 配置备份策略
  • gitlab-ctl reconfigure
  • 打开Gitlab网址
  • 改变Gitlab 登陆页面的提示
  • Gitlab 备份
  • 编辑Crontab`自动备份,自动scp到远端服务器`
  • Gitlab 恢复
  • `目标和源Gitlab的版本要一致,否则不能恢复`
  • 先把备份文件复制到目标服务器
  • 变更备份文件权限
  • 查看Gitlab状态
  • 关闭Gitlab的其中两个服务
  • 恢复Gitlab`注意不要帶_gitlab_backup.tar `
  • 启动gitlab
  • Gitlab检查
  • Gitlab 升级
  • 先停Gitlab其中的三个服务
  • 安装Gitlab升级软件包
  • 重启Gitlab
  • 查看Gitlab相关信息
  • Gitlab升级总结
  • Gitlab 使用
  • Gitlab用户密码变更了
  • 解决办法是:
  • 安装Git`目的是产生ssh key `
  • 上传文件到Gitlab
  • 把Source上传到Gitlab`VisualStudio为例`
  • 把Source下载到本地`VisualStudio为例`
  • 文件删除
  • Project 删除
  • Gitlab 管理


Gitlab安装时,建议:
1.从官方或清华镜像下载最新的和OS匹配的rpm软件包(Gitlab版本更新很快)
  https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el8/
2.服务器直接安装CentOS8,不需要图形界面(gitlab的管理都是命令行)
  https://mirrors.tuna.tsinghua.edu.cn/centos/OSVersion/isos/x86_64/
3.Gitlab专用服务器
  如此,Gitlab 网页不需要设置端口号,我认为,没有端口更易使用
4.一定做好异地异机备份(只要gitlab版本相同恢复也很简单)
之所以如此建议,是因为,我第一次安装并没有做很好的规划,谁知道是如此简单的入门!
 特别的是:我还直接真正到导入实际应用到工作中了
 原本是在Redhat 7.5上安装gitlab-ce-12.7.5-ce.0.el6.x86_64.rpm的包
 然后在建制备份机制时,又用的是CentOS8,此时,根本找不到12.7.5的el8的安装包
 (因为不管是用el6还是el7的12.7.5的包安装时,policycoreutils-python死活搞不定)
 所以,Gitlab版本不得已只能升级到最新版,当然升级也非常简单

Gitlab 安装(root用户)

首先,安装好操作系统
然后下载对应的rpm包,
最后直接在root用户下,执行rpm -ivh gitlab-ce-12.9.2-ce.0.el8.x86_64.rpm
例如:`rpm -ivh /tools/gitlab-ce-12.9.2-ce.0.el8.x86_64.rpm`
warning: gitlab-ce-12.9.2-ce.0.el8.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID f27eab47: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-12.9.2-ce.0.el8        ################################# [100%]

Gitlab 配置编辑/etc/gitlab/gitlab.rb

配置网站url

##! external_url 'http://gitlab.example.com' 
把##!去掉,把gitlab.example.com改成自己的服务器IP地址或域名
例如:
external_url 'http://10.64.32.99'

配置备份策略

在gitlab.rb中找到backup_path和backup_keep_time两个参数,并把前面的注释去掉
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800#这是保留最近7天的备份数据

gitlab-ctl reconfigure

每次修改了参数,都要重新执行gitlab-ctl reconfigure,才能使配置生效
Running handlers complete
Chef Client finished, 550/1459 resources updated in 04 minutes 41 seconds
gitlab Reconfigured!

打开Gitlab网址

如果跳出402的错误,没关系,等一下就好了,这只是说明后台服务还没有准备好
如果是Gitlab安装后的首次打开,则会跳出一个配置Password的页面
这是要求我们设置Gitlab的root管理员用户的密码,不是操作系统的root
设置OK后,就可以进入Gitlab,创建Project,创建Group等操作了

改变Gitlab 登陆页面的提示

需要用root用户登录Gitlab
然后点Admin Area图标
再点左侧的Appearance
找到Sign in/Sign up Pages,修改相应的Title和Description即可
Description中的内容,用Markdown格式编写即可

Gitlab 备份

编辑Crontab自动备份,自动scp到远端服务器

10 10 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
20 11 * * * /var/opt/gitlab/backups/scpfile.sh
#Every Day At 10:10 Backup Gitlab and 11:20 scp Remote Server
#Backup Path:/var/opt/gitlab/backups
#备份路径下会出现类似1585385351_2020_04_18_12.9.2_gitlab_backup.tar文件
#按照我们的策略,这个路径下,只会保留7份12.9.2_gitlab_backup.tar结尾的文件

远端服务器的备份文件也要注意自动删除n天前的备份文件,注意磁盘空间的有效

Gitlab 恢复

目标和源Gitlab的版本要一致,否则不能恢复

先把备份文件复制到目标服务器

scp 1585627448_2020_04_18_12.9.2_gitlab_backup.tar root@TargetIP:/var/opt/gitlab/backups/

变更备份文件权限

chown -R git.git 1585627448_2020_04_18_12.9.2_gitlab_backup.tar

查看Gitlab状态

gitlab-ctl status

关闭Gitlab的其中两个服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

恢复Gitlab注意不要帶_gitlab_backup.tar

gitlab-rake gitlab:backup:restore BACKUP=1585627448_2020_04_18_12.9.2

启动gitlab

gitlab-ctl start

Gitlab检查

gitlab-rake gitlab:check SANITIZE=true
#恢复后用户名和密码以及Login页面都和源一模一样

Gitlab 升级

先停Gitlab其中的三个服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq 
gitlab-ctl stop nginx

安装Gitlab升级软件包

rpm -Uvh gitlab-ce-12.9.2-ce.0.el8.x86_64.rpm

重启Gitlab

gitlab-ctl restart
ok: run: alertmanager: (pid 8289) 1s
ok: run: gitaly: (pid 8297) 1s
ok: run: gitlab-exporter: (pid 8310) 0s
ok: run: gitlab-workhorse: (pid 8312) 1s
ok: run: grafana: (pid 8325) 0s
ok: run: logrotate: (pid 8342) 0s
ok: run: nginx: (pid 8354) 1s
ok: run: node-exporter: (pid 8359) 0s
ok: run: postgres-exporter: (pid 8363) 1s
ok: run: postgresql: (pid 8375) 0s
ok: run: prometheus: (pid 8377) 1s
ok: run: redis: (pid 8391) 0s
ok: run: redis-exporter: (pid 8397) 1s
ok: run: sidekiq: (pid 8402) 0s
ok: run: unicorn: (pid 8408) 0s

查看Gitlab相关信息

gitlab-rake gitlab:env:info
System information
System:
Current User:   git
Using RVM:      no
Ruby Version:   2.6.5p114
Gem Version:    2.7.10
Bundler Version:1.17.3
Rake Version:   12.3.3
Redis Version:  5.0.7
Git Version:    2.24.1
Sidekiq Version:5.2.7
Go Version:     unknown

GitLab information
Version:        **12.9.2**
Revision:       ac5568eb5d8
Directory:      /opt/gitlab/embedded/service/gitlab-rails
DB Adapter:     PostgreSQL
DB Version:     10.12
URL:            http://10.64.32.196:8081
HTTP Clone URL: http://10.64.32.196:8081/some-group/some-project.git
SSH Clone URL:  git@10.64.32.196:some-group/some-project.git
Using LDAP:     no
Using Omniauth: yes
Omniauth Providers: 

GitLab Shell
Version:        12.0.0
Repository storage paths:
- default:      /var/opt/gitlab/git-data/repositories
GitLab Shell path:              /opt/gitlab/embedded/service/gitlab-shell
Git:            /opt/gitlab/embedded/bin/git

Gitlab升级总结

el6的版本可以直接升級到el7的版本  
 最简单的升级方式下载好对应的rpm 
 不能gitlab-ctl stop,因为升级时,还会用到相关服务

Gitlab 使用

Gitlab用户密码变更了

* 如果我们本地的认证信息没有变更也不需要变更
* 则当我们推送代码时,将会出现:**Remote: HTTP Basic: Access denied**
Remote: HTTP Basic: Access denied
发布到远程存储库时遇到错误: Git failed with a fatal error.
Authentication failed for 'http://10.64.32.196:8081/sfc/shopfloor.git/'
Pushing to http://10.64.32.196:8081/sfc/shopfloor.git
解决办法是:
进入控制台>>用户账号》认证管理员>>windows认证》一般认证,在里面找到git,点编辑,修改为现在的gitlab密码即可
或者直接删除git认证信息,则当我们再次推送代码时,会跳出gitlab用戶名和密码输入框,输入正确的即可 
`不需要动git的中的任何设定,更不需要动 Gitlab 中的SSH的Key信息`

安装Git目的是产生ssh key

安装OK后,打開Git命令行介面
git config --global user.name "Your Name"
git config --global ser.email "email@example.com"
   此Email要和Gitlab Email一致 
ssh-keygen -t rsa -C "email@example.com"	
 一路回车,会出来一个SHA256的画面,并有告诉我们key所在文件夹
 用记事本打开id_rsa.pub,然后复制内容Gitlab的User Settings的 SSH Keys中
 随后,我们通过例如VistualStudio同步代码时就不需要密码了

上传文件到Gitlab

进入Gitlab即可在自己的Project中Upload文件
如果熟悉Markdown,建议直接用Markdown编辑自己的文件,如此随时可以看到文件内容
Markdown是个非常简单非常容易学习的一个在线编辑工具

把Source上传到GitlabVisualStudio为例

首先自己的Git SSH Key已经和自己的Gitlab中的账号Linked(如果不先做这个,同步代码时,会要求输入用户名和密码)
然后要在Gitlab中创建一个和Visual Studio相同ProjectName(建议相同)
第三 在Visual Studio的解决方案上右键选择"將解決方案添加到源代碼管理"
第四 点VS右下角"团队资源管理器",在出來的介面中找到"推送到远端存储库"中,再点"发布Git存储库"
最后输入URL路径,再点"发布"按钮,代码随后就发布到GitLab了  
URL路径的获取方法是:点Gitlab Project的Clone按钮,就知道了
注意选择Clone with HTTP

把Source下载到本地VisualStudio为例

以SFIC為例:
  (1).首先在自己电脑上创建"GitRespons"再其中再创建"IMMS"的文件夾
  (2).在Gitlab中找到"IMMS" Group,再找到"SFIC" Project
      在出現的窗口右侧,点蓝底白字的Clone按钮,复制"Clone With Http"
      点"Copy From URL",复制url地址
  (3).在VisualStudio团队资源管理器中,找到"本地Git存储库",
      点"克隆"字样
      然后粘贴url地址
      再"选择本地路径"
      點"克隆按鈕"即可
  (4).克隆成功(完毕)后,(解决方案资源管理器中,可能显示出的是这个方案的文件夾列表是空的,)
      此是团队资源管理器列表中应该能看到我们刚刚Clone的方案,点并打开此方案即可编辑修改代码了
      此是只要我们修改了方案项目中的任何文件,文件名旁立即会出现一个醒目的红色小对号旗标
      如果确认ok,可以提交也可以撤销 
  唯一的要求是:修改的代码确认OK并且经过测试后后,要及时提交代码和同步Gitlab

文件删除

(1).找到文件并点对应的文件名,则文件內容也回显示在网页下方,
 (2).而文件名右侧,我们可以看到"Delete"按钮,点此"Delete"即可

Project 删除

(1).找到自己要刪除的Project
(2).网页左侧菜单最下侧,点"Settings",点"General",右侧网页內容中的,比较靠下的部分 
(3).我们可以看到"Advanced"右侧的Expand,点"Expand",网页下面会出來更多的信息
(4).找到"Remove Project",并点Remove Project按钮,在出來的窗口中,輸入"项目名称",然后再点"Confirm"即可

Gitlab 管理

gitlab-ctl start           # 启动所有 gitlab 组件
gitlab-ctl stop            # 停止所有 gitlab 组件
gitlab-ctl restart         # 重启所有 gitlab 组件
gitlab-ctl status          # 查看服务状态
gitlab-ctl reconfigure     # 修改gitlab.rb后,执行此命令
/var/opt/gitlab/           # 安装文件
/var/log/gitlab/           # 日志文件
/opt/gitlab/               #是程序文件,不包含数据
/var/opt/gitlab/nginx/conf #nginx配置文件