Gitlab 快速部署及日常維護 (一)


一、GitLab簡介
GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務

二、GitLab系統架構
git用戶的主目錄通常是/home/git(~git表示主目錄路徑),GitLab主要以/home/git用戶身份安裝在用戶主目錄中git。在主目錄中是gitlabhq服務器軟件所在的位置以及存儲庫(盡管存儲庫位置是可配置的)。裸存儲庫位於/home/git/repositories。GitLab是一個ruby on rails應用程序,因此可以通過研究ruby on rails應用程序的工作原理來學習內部工作的細節。為了通過SSH提供存儲庫,有一個名為gitlab-shell的附加應用程序,它安裝在/home/git/gitlab-shell。

GitLab 應用程序是下面所述的所有組件的集合:

1. repository:代碼庫,可以是硬盤或 NFS 文件系統
2. Nginx:Web 入口
3. 數據庫:包含以下信息:
    - repository 中的數據(元數據,issue,合並請求 merge request 等)
    - 可以登錄 Web 的用戶(權限)
4. Redis:緩存,負責分發任務
5. sidekiq:后台任務,主要負責發送電子郵件。任務需要來自 Redis
6. Unicorn:Gitlab 自身的 Web 服務器,包含了 Gitlab 主進程,負責處理快速/一般任務,與 Redis 一起工作。工作內容包括:
    -  通過檢查存儲在 Redis 中的用戶會話來檢查權限
    -  為 Sidekiq 制作任務
    -  從倉庫(warehouse)取東西或在那里移動東西
7. gitlab-shell:用於 SSH 交互,而不是 HTTP。gitlab-shell 通過 Redis 與 Sidekiq 進行通信,並直接或通過 TCP 間接訪問 Unicorn
8. gitaly:后台服務,專門負責訪問磁盤以高效處理 git 操作,並緩存耗時操作。所有的 git 操作都通過 Gitaly 處理
9. gitlab-workhorse:反向代理服務器,可以處理與 Rails 無關的請求(磁盤上的CSS、JS 文件等),處理Git Push/Pull 請求,處理到Rails的連接(修改由Rails發送的響應或發送給 Rails 的請求,管理 Rails 的長期 WebSocket 連接等)。
10. mail_room:處理郵件請求。回復 GitLab 發出的郵件時,GitLab 會調用此服務

Sidekiq. Unicorn 和 GitLab-shell 是GitLab中處理任務的 3 個程序。

三、Gitlab安裝、配置、啟動管理
1、安裝Gitlab必要的依賴項,還將在系統防火牆中打開HTTP和SSH訪問
安裝命令:yum install -y curl policycoreutils-python openssh-server
激活命令:systemctl enable sshd
啟用命令:systemctl start sshd
防火牆命令:firewall-cmd --permanent--add-service=http && systemctl reload firewalld    //如果系統已關閉防火牆選項,忽略此步驟。

2、安裝Postfix以發送通知電子郵件
安裝命令:yum install postfix
激活命令:systemctl enable postfix
啟用命令:systemctl start postfix

3、下載GitLab軟件包(社區版),地址:https://packages.gitlab.com/gitlab/gitlab-ce

4、查看Gitlab相關目錄,命令:find / -name gitlab

Gitlab目錄結構
/opt/gitlab/         # 主目錄
/etc/gitlab/         # 放置配置文件
/var/opt/gitlab/   # 各個組件
/var/log/gitlab/   # 放置日志文件
/var/opt/gitlab/git-data/repositories    #數據庫的地址  
/var/opt/gitlab/postgresql/data          #gitlab組和項目的地址
/etc/gitlab/gitlab.rb                              #gitlab配置文件

5、初始化Gitlab命令(保存配置或重新載入配置):gitlab-ctl reconfigure

6、Gitlab服務的啟停管理
啟動服務: gitlab-ctl start
停止服務: gitlab-ctl stop
重啟服務: gitlab-ctl restart
查看狀態: gitlab-ctl status

7、Gitlab的supervisor方式啟動服務
服務啟動命令:   systemctl start gitlab-runsvdir.service
服務停止命令:   systemctl stop gitlab-runsvdir.service
服務重啟命令:   systemctl restart gitlab-runsvdir.service
服務開機啟動命令:   systemctl enable gitlab-runsvdir.service
取消開機啟動命令:   systemctl disable gitlab-runsvdir.service
服務查看命令:   systemctl list-unit-files

8、Gitlab服務日志查看:/usr/bin/gitlab-ctl tail         //可以查看到gitlab所有插件的日志情況

四、Centos7下Gitlab快速安裝的操作記錄
1. 下面記錄centos7.5系統下的Gitlab安裝過程(最好找一台環境比較干凈的機器): 

1)配置系統防火牆,把HTTP和SSH端口開放(關閉iptables或者開放ssh).

[root@gitlab ~]# systemctl stop firewalld       //臨時關閉
[root@gitlab ~]# systemctl disable firewalld         //禁止開機啟動
[root@gitlab ~]# yum install curl openssh-server postfix cronie
[root@gitlab ~]# systemctl start postfix.service
[root@gitlab ~]# systemctl enable postfix.service
[root@gitlab ~]# lokkit -s http -s ssh        //如果iptables關閉了,這條命令就無需執行了。這條命令是用來設置防火牆的,開放http和ssh訪問端口
 
2)下載gitlab的rpm安裝包
[root@gitlab ~]# rpm -ivh gitlab-ce-12.5.0-ce.0.el6.x86_64.rpm --force     //下載好安裝包
-------------------------------------------------
警告:gitlab-ce-12.5.0-ce.0.el6.x86_64.rpm: 頭V4 RSA/SHA1 Signature, 密鑰 ID f27eab47: NOKEY
准備中...                          ################################# [100%]
正在升級/安裝...
   1:gitlab-ce-12.5.0-ce.0.el6        ##########                        ( 31%)
   ........
------------------------------------------------- 
安裝后的gitlab默認路徑是/opt/gitlab(程序路徑)、 /var/opt/gitlab(配置文件路徑)。
 
3) 接着進行配置
[root@gitlab ~]# gitlab-ctl reconfigure
 
上面配置命令執行后,如沒有報錯,就說明gitlab配置成功。配置后會生成各應用服務配置文件,放在/opt/gitlab/etc下,日志路徑為/var/log/gitlab/
 
4)然后啟動gitlab
[root@gitlab ~]# gitlab-ctl start
[root@gitlab ~]# gitlab-ctl status
 
5)最后就可以使用http://localhost順利訪問Gitlab了。整個安裝過程大概10分鍾搞定(rpm包下載比較費時間)

將ip訪問修改為域名訪問的更改方法:  

1)首先將/etc/gitlab/gitlab.rb文件中的external_url 'http://gitlab.example.com'全部替換為external_url 'http://gitlab.eason.com'
[root@code-server gitlab]# vim /etc/gitlab/gitlab.rb
----------------------------------------------
external_url 'http://gitlab.example.com'
改為:
external_url 'http://gitlab.eason.com'
----------------------------------------------

2)其次將下面/var/opt/gitlab/gitlab-shell/config.yml 里面的內容進行調整;
----------------------------------------------
gitlab_url: "http://127.0.0.1:8080"
修改為:
gitlab_url: "http://gitlab.eason.com:8080"
----------------------------------------------
將/var/opt/gitlab/gitlab-rails/etc/gitlab.yml文件進行調整;
----------------------------------------------
 修改:gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: gitlab.eason.com
    port: 80
    https: false
-----------------------------------------------
   
注意:下面兩文件都是上面兩文件的軟鏈接,修改上面兩個文件即可
[root@code-server gitlab]# ll /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
lrwxrwxrwx 1 root root 43 Nov  9 18:00 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml -> /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
[root@code-server gitlab]# ll /opt/gitlab/embedded/service/gitlab-shell/config.yml
lrwxrwxrwx. 1 root root 39 Jun 11 20:04 /opt/gitlab/embedded/service/gitlab-shell/config.yml -> /var/opt/gitlab/gitlab-shell/config.yml
 
3)然后將下面文件中的gitlab.example.com全部替換為gitlab.eason.com
/var/opt/gitlab/nginx/conf/gitlab-http.conf
   
4)最后執行"gitlab-ctl reconfigure"命令使之配置生效(注意最好不要執行"gitlab-ctl restart",只執行本命令即可)

2. Gitlab安裝后的幾個細節的配置

1)  gitlab該版本安裝后,首次登錄需要設置root密碼。
2)在管理員賬號(root)登錄后,先把"注冊"功能關了,這樣就只能在管理員賬號下創建用戶。關閉注冊功能方法:
訪問http://gitlab.eason.com/admin/application_settings,如下:

關閉"Sign-up enabled"功能(特別注意:Sign-in enabled登錄功能不要關閉了,看清楚!)

 3)設置郵件配置。

設置郵件,修改配置文件 /etc/gitlab/gitlab.rb
[root@gitlab01 ~]# vim /etc/gitlab/gitlab.rb
........
 gitlab_rails['gitlab_email_enabled'] = true
 gitlab_rails['gitlab_email_from'] = 'eason@126.com'
 gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
 gitlab_rails['gitlab_email_reply_to'] = 'eason@126.com'
 gitlab_rails['gitlab_email_subject_suffix'] = ''
 gitlab_rails['gitlab_email_smime_enabled'] = false
 gitlab_rails['gitlab_email_smime_key_file'] = '/etc/gitlab/ssl/gitlab_smime.key'
 gitlab_rails['gitlab_email_smime_cert_file'] = '/etc/gitlab/ssl/gitlab_smime.crt'
 user["git_user_email"] = "eason@126.com"

........
 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.126.com"
 gitlab_rails['smtp_port'] = 25
 gitlab_rails['smtp_user_name'] = "eason@126.com"
 gitlab_rails['smtp_password'] = "xxxxxxxxx"
 gitlab_rails['smtp_domain'] = "126.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true
 gitlab_rails['smtp_tls'] = false  

 設置完成后,進行檢查,可以通過創建新用戶或者點擊忘記密碼驗證郵件設置。如果不能正常發送郵件,請檢查配置,使用命令,將監聽日志打出來,進行問題排查。

[root@gitlab01 gitlab]# gitlab-ctl tail
==> /var/log/gitlab/gitlab-rails/sidekiq.log <==
{"severity":"INFO","time":"2019-12-03T01:40:14.736Z","message":"Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org"}
{"severity":"WARN","time":"2019-12-03T01:40:14.737Z","message":"Sidekiq 6.0 will require Redis 4.0+, you are using Redis v3.2.12"}
{"severity":"INFO","time":"2019-12-03T01:40:15.168Z","message":"Starting processing, hit Ctrl-C to stop"}

3、Gitlab批量添加賬號

[root@gitlab ~]# cat gitlab.sh
#!/bin/bash
#批量創建gitlab用戶
userinfo="userinfo.text"
while read line
do
    password=`echo $line | awk '{print $1}'`
    mail=`echo $line | awk '{print $2}'`
    username=`echo $line | awk '{print $3}'`
    name=`echo $line | awk '{print $4}'`
    curl -d "reset_password=$password&email=$mail&username=$username&name=$name&private_token=gc5T7PhqbvQFfQA1bdxG" "http://172.16.60.222/api/v4/users"
 
done <$userinfo
 
[root@gitlab ~]# cat userinfo.text
1  zhanjiang.feng@wang.com zhanjiang.feng zhanjiang.feng
1  hongkang.yan@wang.com hongkang.yan hongkang.yan
1  yansong.wang@wang.com yansong.wang yansong.wang
1  bo.xue@wang.com bo.xue bo.xue
1  junlong.li@wang.com junlong.li junlong.li
1  luyu.cao@wang.com luyu.cao luyu.cao
1  xueqing.wang@wang.com xueqing.wang xueqing.wang
1  xu.guo@wang.com xu.guo xu.guo
1  bing.xing@wang.com bing.xing bing.xing
1  mengmeng.li@wang.com linan linan

注意:上面userinfo.text文件里的四行分別表示密碼,郵箱,用戶名,別名。上面命令執行后,就可以批量創建用戶了!
其中密碼用1表示重置密碼,也就是用戶創建之后,會給用戶郵箱發送兩封郵件:
-> 一封確認綁定郵箱的郵件,一定要點擊這個郵件里的confirm確認地址(否則登錄無效);
-> 另一封是重置用戶密碼的郵件。重置后就可以使用郵箱或用戶名登陸了。  

注意:上面腳本中的private_token(這個很重要,否則批量創建不了用戶)

Gitlab 10.2版本之前private_token,使用管理員登錄后,在"settings-Account"界面里找到的;如圖:

 Gitlab 10.2版本之后,使用Personal Access Tokens 既 profile->account->Personal Access Tokens

輸入姓名,選定有效日期后勾選下面的四個選項,點擊確認將生成的密碼保存到private_token文件夾中。如圖:

訪問腳本中gitlab的用戶接口地址http://172.16.60.222/api/v4/users,試試能否訪問! 

4、修改Gitlab登錄界面  

4.1、設置主題

4.2、設置首頁標題與圖片

其他選項均可以進行定制設置,設計屬於自己風格的首頁和展示頁。 

-----------------------------------------------------------書山有路勤為徑,學海無涯苦作舟------------------------------------------------------------- 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM