GitLab安裝與維護(hù)
GitLab是GitHub的免費(fèi)私有庫替代方案晦炊,并且安裝與配置都很方便即碗。
系統(tǒng)需求
GitLab要求最少4GB內(nèi)存戈钢,支持小團(tuán)隊(duì)使用沒問題馆蠕,實(shí)測2GB內(nèi)存的VPS基本沒法用期升,開swapfile也不行,動不動就60秒超時(shí)互躬。因此4GB內(nèi)存是必須的播赁。
關(guān)于這一點(diǎn),內(nèi)存大戶主要是Unicorn吼渡,基于ruby的http服務(wù)器容为。Unicorn會在啟動后預(yù)先占用大部分內(nèi)存,內(nèi)存會隨著使用逐漸增長寺酪,并且不會釋放坎背。根據(jù)GitLab和Unicorn的官方文檔,這不是它們的鍋寄雀,那么這個(gè)鍋可能是ruby和rails了得滤。解決方法是unicorn-work-kill,會根據(jù)請求次數(shù)和內(nèi)存占用自動重啟Unicorn盒犹。Omnibus版的GitLab是默認(rèn)開啟的懂更。
版本選擇
GitLab分為社區(qū)版和企業(yè)版,在未付費(fèi)的情況下急膀,兩者的功能是一樣的沮协。并且社區(qū)版整合了CI/CD,因此可以滿足絕大部分的開發(fā)需求卓嫂。
安裝包主要包括Omnibus整合包慷暂,Docker、AWS等的云鏡像晨雳,以及一些第三方維護(hù)的版本行瑞。其中Omnibus直接整合了所有服務(wù)端組件奸腺,適合自用和練手。
安裝
安裝以O(shè)mnibus整合包為例蘑辑,操作系統(tǒng)為Ubuntu16.04洋机。
安裝必要組件(可選)
Gitlab需要 curl,openSSH 和 ca-certificates 這幾個(gè)組件:
sudo apt-get install -y curl openssh-server ca-certificates
不過服務(wù)器系統(tǒng)一般自帶洋魂,所以是可選的。
安裝郵件服務(wù)(可選)
郵件服務(wù)喜鼓,用于GitLab發(fā)送找回密碼的郵件:
sudo apt-get install -y postfix
不過如果服務(wù)器沒有域名的話副砍,大部分郵箱會拒收郵件,而管理員帳號可以直接重置其他賬號的密碼庄岖,所以是可選的豁翎。
添加源
官方提供的腳本:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
這個(gè)腳本會自動添加源到apt 的source list,以及安全key隅忿。另外心剥,如果自己服務(wù)器在國內(nèi),腳本會自動添加清華的鏡像背桐,速度還行优烧。
安裝
先更新apt緩存:
sudo apt update
推薦使用apt
而不是apt-get
,前者大多數(shù)情況下更簡單一點(diǎn)链峭。
然后是安裝:
sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ce
其中EXTERNAL_URL
畦娄,改成自己的域名。沒有域名的話弊仪,可以直接設(shè)置成IP的形式:http://1.2.3.4
熙卡,這個(gè)推測跟nginx服務(wù)以及GitLab中的項(xiàng)目地址有關(guān),所以最好正確設(shè)置励饵。當(dāng)然也可以之后在配置文件里更改驳癌。
配置
安裝完成后,可以在配置文件中修改配置/etc/gitlab/gitlab.rb
役听。
比如之前的EXTERNAL_URL
:
external_url 'http://gitlab.example.com'
官方還有一個(gè)關(guān)于unicorn
的優(yōu)化建議:
# unicorn['worker_processes'] = 2 ##修改要去掉前面的#號
默認(rèn)值是2颓鲜,如果服務(wù)器只用于GitLab的話,官方建議是CPU核心數(shù)加一禾嫉,可以提高服務(wù)器的響應(yīng)速度灾杰。不過如果內(nèi)存只有4G珊擂,或者服務(wù)器同時(shí)承載其他服務(wù)餐屎,就不要改了,以免內(nèi)存不足局骤。另外孽椰,這個(gè)參數(shù)最小值是2昭娩,設(shè)為1凛篙,服務(wù)器可能會卡死。
配置完成后栏渺,刷新配置:
sudo gitlab-ctl reconfigure
每次修改完gitlab.rb
呛梆,都要刷新配置。
如果沒有報(bào)錯的話磕诊,GitLab就配置完畢并且正常運(yùn)行了填物。接下來可以打開瀏覽器開始訪問了。