Gitlab 本地部署全過程、Gitlab Pages、企業版 PATCH

Gitlab 官網目前提供了 Enterprise Edition 和 Community Edition 兩種版本,分別對應 linux 系統的軟件包 gitlab-ee 和 gitlab-ce。看名字就知道,gitlab-ee 是收費的功能更加豐富的版本。此外,企業版根據用戶付費情況的不同,又分爲了 Starter、Premiun、Ultimate 三種 PLAN,可以在 https://about.gitlab.com/pricing/feature-comparison/ 查看區別。
在這裏插入圖片描述
  Gitlab 官方推薦用戶安裝企業版,因爲在不購買許可證時,安裝的 Gitlab-ee 就是運行爲 Gitlab-ce 版本(付費功能自動隱藏),方便用戶隨時升級到企業版。毫無疑問,必須得選擇安裝 Gitlab-ee 啊!目前最新版是 15.4.0,下面是部署好的後臺效果圖:
在這裏插入圖片描述

安裝

  安裝方法有很多種,甚至可以選擇最原始的從源代碼進行安裝。針對 Linux 系統 Gitlab 官方提供了很多現成的軟件包,安裝簡單高效,可以在 https://about.gitlab.com/install/ 查看支持的 Linux 發行版。我使用的是 Ubuntu 20.04 LTS 系統(目前,Gitlab 支持 Ubuntu 18.04 LTS 和 Ubuntu 20.04 LTS)。
在這裏插入圖片描述

  1. 安裝依賴工具 sudo apt-get install -y curl openssh-server ca-certificates tzdata perl。這個沒啥可說的,一個命令等待安裝完成即可。

  2. 安裝郵件服務器 sudo apt-get install -y postfix,用來在用戶註冊之後自動給用戶發送一封註冊郵件。最新版安裝後不用任何配置默認就可以使用。
    在這裏插入圖片描述
      注意,也可以選擇其他郵件服務器,等後面安裝了 Gitlab 之後再進行配置。Gitlab 也支持配置公共郵箱系統(例如,@gmail.com、@163.com),如果直接選擇使用公共郵箱系統,則可以不用安裝 postfix 等,跳過此步驟即可。

    安裝詳情見獨立博文 https://itexp.blog.csdn.net/article/details/127027705

  3. 添加 Gitlab 倉庫源:curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash,這樣就可以直接使用 apt 來安裝 Gitlab 了。

  4. 直接使用命令 sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee 安裝 Gitlab。命令執行後,就開始下載 Gitlab 軟件包,下載之後,會自動解壓(安裝目錄 /opt/gitlab)解壓過程比較長,耐心等待。
    在這裏插入圖片描述
      初次安裝,解壓完成之後,會自動進行一系列的配置。整個配置過程時間比較長,耐心等待即可。如果運氣好,沒有產生錯誤,我這裏就遇到了錯誤(只要上面沒有填寫有效的域名,肯定會出錯。後文詳細錯誤處理章節)!

    1. 如果重裝,貌似不會自動執行配置,手動執行 sudo gitlab-ctl reconfigure 即可。在此之前,是無法訪問的!
    2. 如果重裝,數據庫等組件是依舊會存在的,所以,重裝後的用戶賬戶、倉庫等會恢復之前的!
    3. 命令中的 EXTERNAL_URL="https://gitlab.example.com" 是用於指定安裝後 Gitlab 的訪問地址。也可以不指定,安裝完成後再進行修改,詳見配置章節。Gitlab 會根據其中的 https 來決定配置。
  5. 修改網絡訪問相關的配置,多數情況下都需要修改防火牆,以下是一些 Ubuntu 防火牆常用命令

    • sudo ufw status: 查看防火牆狀態
    • sudo ufw enable: 打開防火牆
    • sudo ufw disable: 關閉防火牆
    • sudo ufw allow 22/tcp: 允許所有的外部 IP 訪問本機的 22/tcp (ssh)端口
    • sudo ufw allow 9092: 允許所有的外部 IP 訪問本機的自定義 9092 端口
    • sudo ufw delete allow 9092: 禁用 9092 端口
    • sudo ufw allow from 192.168.1.10: 允許此IP訪問所有的本機端口,即添加到了允許訪問列表
    • sudo ufw delete allow from 192.168.1.10: 從允許訪問列表中刪除,即禁止此 ip 進行訪問

錯誤處理

  我最開安裝的時候,最新版是 15.3.3 版本,安裝過程出現瞭如下第一個錯誤。安裝完後,Gitlab 就發佈了最新的 15.4.0 ,果斷直接升級到了最新版。升級會覆蓋 /opt/gitlab 下的文件,配置文件一般不會變動。

  1. 在安裝過程中報錯 Error executing action create on resource 'acme_certificate[staging]。這個問題是不能正常處理 Let’s Encrypt 的 SSL 證書導致的(根據官網說明,在安裝時,指定了 https 的 URL 後,安裝就會自動識別並進行 HTTPS 相關(Let’s Encrypt)配置)。
    在這裏插入圖片描述
      由於我這裏是使用的局域網的 IP,是無法獲取到 SSL 證書的。實際此錯誤並不影響使用 Gitlab。當然我們可以通過編輯 Gitlab 文件 sudo nano /opt/gitlab/embedded/cookbooks/letsencrypt/resources/certificate.rb 來屏蔽掉錯誤提示(如上圖所示)。別忘了執行 sudo gitlab-ctl reconfigure 重新配置 Gitlab 即可。

    如果後續升級了 Gitlab,會導致修改被還原,需要再次進行修改

  2. 默認用戶登陸後不能正常顯示頭像。這個問題是由於 Gitlab 默認使用的頭像服務器 gravatar 被牆了(Gitlab 根據用戶郵箱自動從 gravatar 獲取頭像)。可以通過修改 Gitlab 文件 sudo nano /var/opt/gitlab/gitlab-rails/etc/gitlab.yml 中的配置來解決(當然也可以在個人資料裏上傳本地頭像)。修改後 gitlab-ctl restart 即可。
    在這裏插入圖片描述

    注意,如果後續升級了 Gitlab,會導致修改被還原,需要再次進行修改

配置

  安裝過程的後半段,大部分時間 Gitlab 都在自動執行各種配置。配置文件主要就是 /etc/gitlab/gitlab.rb,我們可以手動更改。需要注意的是,更改該文件之後,必須重新執行 sudo gitlab-ctl reconfigure 以使修改生效。

  我這裏僅僅是介紹一些安裝之後必須要進行的配置,全部 Gitlab 配置項是相當多的,可自行查看 /etc/gitlab/gitlab.rb 文件,官網 https://docs.gitlab.com/ee/ 也有比較詳細的文檔可供參考。

Gitlab URL

  在上面安裝時,指定的域名爲 https://gitlab.example.com,由於我是純內網使用,這裏直接修改爲服務器 IP 地址。使用命令 sudo nano /etc/gitlab/gitlab.rb 編輯 external_url 配置項就可以修改訪問 Gitlab 的 URL。
在這裏插入圖片描述

  1. 官方文檔:https://docs.gitlab.com/omnibus/settings/configuration.html#configure-the-external-url-for-gitlab
  2. 官方建議也把 Markdown cache 清理掉。

HTTP 重定向

  默認情況下,安裝之後只能使用 https 進行訪問,如果需要使用 http 訪問,則可以通過需要修改 sudo nano /etc/gitlab/gitlab.rb 中的相關配置,開啓 http 重定向到 https 來實現。
在這裏插入圖片描述

管理員密碼

  在默認情況下,Gitlab 會自動創建一個 root 用戶,密碼將隨機生成並存儲在 /etc/gitlab/initial_root_password 中。這個密碼文件將在 24 小時後自動刪除。登錄後記得修改密碼。也可以直接在服務器上重置密碼:

# 登錄到 gitlab 控制檯
sudo gitlab-rails console -e production 
# 選擇用戶
user=User.where(id:1).first
# 重置密碼,保存退出
user.password='12345678'
user.password_confirmation='12345678'
user.save!
exit

  在安裝時,可以在安裝命令 sudo GITLAB_ROOT_PASSWORD="<strongpassword>" EXTERNAL_URL="http://gitlab.example.com" apt install gitlab-ee 中顯示指定 root 用戶的密碼。

PATCH

  安裝完 Gitlab-ee 之後,默認是運行爲 Gitlab-ce 版本,收費功能自動隱藏了。簡單進行 PATCH 一下就可以使用完整的 Gitlab-ee 功能。注意,我這裏僅僅是爲了驗證功能,請務必尊重版權,到官網購買訂閱。

  1. 安裝 sudo apt install ruby。注意,必須是 2.3 及以上版本。

  2. sudo gem install gitlab-license
    在這裏插入圖片描述

  3. 使用命令 sudo nano license.rb 新建一個 Keygen 源碼文件,然後輸入以下內容(注意,根據需要修改其中的 license.xx 字段的內容)

    require "openssl"
    require "gitlab/license"
    key_pair = OpenSSL::PKey::RSA.generate(2048)
    File.open("license_key", "w") { |f| f.write(key_pair.to_pem) }
    public_key = key_pair.public_key
    File.open("license_key.pub", "w") { |f| f.write(public_key.to_pem) }
    private_key = OpenSSL::PKey::RSA.new File.read("license_key")
    Gitlab::License.encryption_key = private_key
    license = Gitlab::License.new
    license.licensee = { # 註冊信息"Name" => "none","Company" => "none","Email" => "[email protected]",
    }
    license.starts_at = Date.new(2020, 1, 1) # 開始時間
    license.expires_at = Date.new(2050, 1, 1) # 結束時間
    license.notify_admins_at = Date.new(2049, 12, 1)
    license.notify_users_at = Date.new(2049, 12, 1)
    license.block_changes_at = Date.new(2050, 1, 1)
    license.restrictions = {active_user_count: 10000,
    }
    puts "License:"
    puts license
    data = license.export
    puts "Exported license:"
    puts data
    File.open("GitLabBV.gitlab-license", "w") { |f| f.write(data) }
    public_key = OpenSSL::PKey::RSA.new File.read("license_key.pub")
    Gitlab::License.encryption_key = public_key
    data = File.read("GitLabBV.gitlab-license")
    $license = Gitlab::License.import(data)
    puts "Imported license:"
    puts $license
    unless $licenseraise "The license is invalid."
    end
    if $license.restricted?(:active_user_count)active_user_count = 10000if active_user_count > $license.restrictions[:active_user_count]raise "The active user count exceeds the allowed amount!"end
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章