版本管理工具Git(二)GitLab部署和配置


安裝

# 安裝依賴包
sudo yum install -y curl policycoreutils-python openssh-server
# 啟用並啟動SSHD
sudo systemctl enable sshd
sudo systemctl start sshd
# 在防火牆上永久允許HTTP,並重啟防火牆
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

安裝Postfix來發送通知郵件,當然也可以使用其他SMTP服務器來發送郵件

 

下載GitLab的RPM包進行安裝,下載地址 我這里下載的是CE版本,EE是企業版收費的。

我這里用7

我這里用第一種方法

修改/etc/gitlab/gitlab.rb配置文件

另外把在DNS上配置這個域名指向這個IP,或者修改你自己機器的本地HOST文件。這里的配置是說外部訪問GitLab通過哪個域名來訪問。啟動gitlab

# 這個命令是對GitLab以及其包含的所有組件生效的,也就是重啟、停止、啟動和重新配置
# reconfigure 的意思是重新配置,每次修改配置文件后需要運行,然后運行restart
gitlab-ctl stop|start|restart|reconfigure
# 查看當前運行狀態
gitlab-ctl status

可以看到除了GitLab之外還有很多獨立組件,這都是安裝包一起安裝的。這些獨立組件也可以進行啟動或者關閉。具體看官方文檔

登錄

默認用戶名是root,第一次登錄需要重置密碼

默認會安裝的組件:

  • Nginx 提供代理服務
  • Redis 存儲用戶登錄會話,默認會話永不過期

配置

常用目錄
/etc/gitlab/gitlab.rb 主配置文件
/var/log/gitlab/ 日志目錄
/var/opt/gitlab/ 各個服務的主目錄
/var/opt/gitlab/git-data/repositories GIT倉庫數據目錄

 

 

 

 

 

修改默認倉庫數據存儲位置

# 建立目錄並修改目錄權限
mkdir –p /data/git-data
chown git:root /data
chown git:root /data/git-data
chmod 700 /data
chmod 700 /data/git-data

修改配置文件

修改后要運行如下命令:

gitlab-ctl reconfigure
gitlab-ctl restart

原來的目錄有數據,那么你修改了存儲位置還需要做如下操作

主要就是把原來的數據移動過來,同時修復權限問題。如果是同一台機器可以使用cp –rp復制並保留權限。因為我們這里是新建的所以不存在這樣的問題。我們建立一個項目看看數據會放到哪里?

用戶和組的管理

默認情況下omnibus-gitlab管理用戶和組,有些時候我們需要使用外部的系統來管理用戶和組比如通過LDAP,成熟的產品有OpenLDAP以及微軟的活動目錄,如果我們要引入外部的用戶和組的管理就需要禁用gitlab的用戶管理功能。

自帶用戶管理功能

創建組

創建用戶

添加用戶到組

這里要選擇用戶以及給予這個用戶的項目角色,角色和權限相關,一般開發人員就使用【Developer】角色就行。

與Active Directory服務基礎使用外部用戶管理

微軟的AD服務中使用的就是LDAP,當然使用Linux系統的LDAP也可以,只是微軟的AD對於用戶管理非常方便。我個人覺得不要迷戀開源非開源的也有很多好東西。

首先需要有一台活動目錄服務器(安裝略)
其次禁用GitLab的用戶和組的管理

配置與AD的LADP協議集成
活動目錄結構是這樣的,所有用戶都在Company這個OU下面,在這個OU下面建立不同的OU。

下面的配置是YAML格式的,格式一定要正確,否則會報錯。

下面還有一個Secondary,這個是GitLab企業版支持的功能也就是配置兩個LDAP服務器,社區版只能用一個。

配置完運行

gitlab-ctl reconfigure

檢查是否可以讀取LDAP信息,運行

gitlab-rake gitlab:ldap:check

最后重啟GitLab,再次打開登錄頁面

輸入用戶名域賬號wangtao和密碼點擊登錄

關於bind_dn的說明:這個是說你用哪個賬號來綁定,如何查找賬號請看下圖。這個我這里用的是默認的域管理員,你可以用其他的只要權限夠就可以。

 

關於uid的說明:這里面有兩種一個是cn;一個是sAMAccountName,有什么區別呢?如果你的域用戶都是英文名稱那用哪一個都一樣,但是如果大部分人都是中文個別外國人是英文,那還是用sAMAccountName。我們來看看這2個名稱是什么,通過AD編輯器查看對象屬性。

 

 

Cn是中文的,而sAMAccountName是英文的,再看下圖AD用戶和計算機中的用戶屬性,顯示名是中文的,而登陸用的名稱時英文的。所以你會看到如果是中文的這兩個名字有區別,所以你要配置成sAMAccountName,否則你會無法登陸。

 

關於base的說明:這里是說從AD中的那個節點開始查找用戶,當然你可以設置從AD的根上開始查找,但是這樣沒有意義,我這里就是設置從存放員工賬號的節點開始查找。

 

關於allow_username_or_email_login的說明:含義是是否啟用用戶名或者郵件地址登陸,建議不啟用。因為我們繼承AD通常是使用userPrincipalName登陸,也就是下面紅框里面的格式,它的確看起來是郵件地址的格式,但是如果allow_username_or_email_login禁用,那么GitLab會把整個輸入當做用戶名包括@,如果你啟用這個選擇,那么GitLab會截斷@后面的,導致你使用userPrincipalName這種名稱無法登陸。

 

 其他配置說明:

  • active_directory:如果你的LDAP服務器是活動目錄,那么就配置成true
  • timeout:查詢LDAP服務的超時時長
  • block_auto_created_users:這個不太明白,官方文檔說這個作用是嚴格控制GitLab安裝中的活躍用戶數量,啟用該選項新用戶則會被阻止,直到管理員處理。

禁用用戶注冊

既然通過AD管理用戶那就沒必要開啟用戶注冊功能

 

 

再次打開頁面就沒有注冊標簽了

上面說的一些概念在Linux的LDAP中也適用。

參考文檔:

https://docs.gitlab.com/omnibus/settings/ldap.html
https://docs.gitlab.com/ee/administration/auth/ldap.html

存儲和目錄管理

 

默認路徑 權限 屬組屬主 作用
/var/opt/gitlab/git-data 0700 git:root 倉庫目錄
/var/opt/gitlab/git-data/repositories 2700 git:root Git倉庫
/var/opt/gitlab/gitlab-rails/shared 0751 git:gitlab-www 大對象目錄
/var/opt/gitlab/gitlab-rails/shared/artifacts 0700 git:root 持續集成目錄
/var/opt/gitlab/gitlab-rails/shared/lfs-objects 0700 git:root LFS對象
/var/opt/gitlab/gitlab-rails/uploads 0700 git:root 用戶上傳附件目錄
/var/opt/gitlab/gitlab-rails/shared/pages 0750 git:gitlab-www 用戶站點頁面
/var/opt/gitlab/gitlab-ci/builds 0700 git:root 持續集成構建日志路徑
/var/opt/gitlab/.ssh 0700 git:root 驗證KEYS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上面這些目錄是在omnibus-gitlab包安裝的時候自動建立的,有些目錄會保存較大的數據,通常這些目錄我們會單獨掛載到一個分區中比如NFS或者其他地方。我們可以通過在配置文件中搜索路徑來修改。 

日志查看

日志可以通過命令查看而不需要到日志目錄中

# 查看所有日志
gitlab-ctl tail
# 查看NGINX的訪問日志
gitlab-ctl tail nginx/gitlab_access.log 

https://docs.gitlab.com/omnibus/settings/logs.html

啟用SSL

默認沒有啟用SSL,你需要啟用SSL並提供證書文件,然后修改NGINX配置。我們這里建立一個自簽名證書。

建立證書目錄並把證書拷貝過去

把這里改成https

配置證書路徑,開啟重定向。默認情況下如果你只修改了上面的,那么NGINX將不會監聽80端口,這樣你訪問80端口的網站就失敗,所以這里要開啟重定向功能。

更新配置

gitlab-ctl reconfigure

如果開啟了防火牆需要新增下面的規則

再次登錄

雖然是不信任但是已經應用了證書,實際工作中我們肯定是去公共的機構去申請證書。過程就是這樣,我這里為了方便又禁用了SSL,因為不信任的證書很不方便。


免責聲明!

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



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