GitLab安裝-centos7.6

一、簡(jiǎn)介

GitLab是利用 Ruby on Rails 一個(gè)開(kāi)源的版本管理系統(tǒng),實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過(guò)Web界面進(jìn)行訪問(wèn)公開(kāi)的或者私人項(xiàng)目。它擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋??梢怨芾韴F(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問(wèn),它非常易于瀏覽提交過(guò)的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。它還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要的時(shí)候進(jìn)行查找。

二、Gitlib和Github區(qū)別

相同點(diǎn)

兩個(gè)都是基于web的Git倉(cāng)庫(kù),而且GitLab在使用方式上和GitHub基本上是一樣的,都提供了存儲(chǔ)、分享、發(fā)布和合作開(kāi)發(fā)項(xiàng)目的中心化云存儲(chǔ)場(chǎng)所

不同點(diǎn)

GitHUb同時(shí)提供公共倉(cāng)庫(kù)和私有倉(cāng)庫(kù),但如果需要使用私有倉(cāng)庫(kù),是需要收費(fèi)的.GitLab讓開(kāi)發(fā)團(tuán)隊(duì)對(duì)他們的代碼倉(cāng)庫(kù)擁有更多的控制,相比于GitHub,它有不少的特色:
允許免費(fèi)設(shè)置倉(cāng)庫(kù)權(quán)限;允許用戶選擇分享一個(gè)project的部分代碼;允許用戶設(shè)置project的獲取權(quán)限,進(jìn)一步的提升安全性;可以設(shè)置獲取到團(tuán)隊(duì)整體的改進(jìn)進(jìn)度;通過(guò)innersourcing讓不在權(quán)限范圍內(nèi)的人訪問(wèn)不到該資源。
所以根據(jù)業(yè)務(wù)使用場(chǎng)景來(lái)看,私密性的話,gitlib權(quán)限管制無(wú)疑是最好的選擇;而面對(duì)于開(kāi)源的話,github則是最好的選擇。這個(gè)我們根據(jù)實(shí)際情況而定。

安裝Gitlib

  • 環(huán)境 centos7.6 關(guān)閉防火墻及seliunx設(shè)置(不再介紹)
  • 依賴
sudo yum install -y curl policycoreutils-python openssh-server
  • 安裝postfix來(lái)實(shí)現(xiàn)郵件通知功能
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
  • 配置Gitlib官網(wǎng)的安裝腳本地址并下載安裝,詳情可見(jiàn)官網(wǎng)介紹 這里強(qiáng)調(diào)一下版本問(wèn)題 我們使用CE社區(qū)版本免費(fèi) 企業(yè)版本則為EE版本,若其他操作平臺(tái),請(qǐng)參考相對(duì)應(yīng)操作系統(tǒng)
#添加倉(cāng)庫(kù)地址,根據(jù)實(shí)際情況選擇
#ee版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
#ce版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  • 安裝
yum intall gitlab-ce
  • RPM包安裝試,國(guó)內(nèi)清華源鏡像下載[RPM]包相對(duì)要快很多(https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
    包自行安裝
    此時(shí)文件量比較大 所以需要時(shí)間來(lái)下載 請(qǐng)耐心等待直到 compete完成安裝
  • 訪問(wèn) 正常來(lái)說(shuō),執(zhí)行完這步之后,會(huì)幫我們安裝和自動(dòng)配置GitLab相關(guān)的信息的.如果沒(méi)有啟動(dòng)GitLab可以再執(zhí)行一下這句命令。 請(qǐng)初始化配置,如下命令,自動(dòng)創(chuàng)建服務(wù)及數(shù)據(jù)
gitlab-ctl reconfigure

直接初始完成


  • 502報(bào)錯(cuò),如圖,此時(shí)請(qǐng)重啟服務(wù)
sudo gitlab-ctl restart

查看gitlab啟動(dòng)狀態(tài),gitlab-ctl status查看狀態(tài),如果沒(méi)有報(bào)錯(cuò),那么請(qǐng)查看內(nèi)存使用情況,如有變動(dòng)說(shuō)明gitlab仍在啟動(dòng)中,請(qǐng)耐心等候

[root@k8s ~]# gitlab-ctl status
run: alertmanager: (pid 7017) 115s; run: log: (pid 7013) 115s
run: gitaly: (pid 6956) 116s; run: log: (pid 6955) 116s
run: gitlab-monitor: (pid 6993) 115s; run: log: (pid 6992) 115s
run: gitlab-workhorse: (pid 6980) 115s; run: log: (pid 6979) 115s
run: grafana: (pid 7018) 115s; run: log: (pid 7016) 115s
run: logrotate: (pid 7009) 115s; run: log: (pid 7008) 115s
run: nginx: (pid 7010) 115s; run: log: (pid 6982) 115s
run: node-exporter: (pid 6986) 115s; run: log: (pid 6981) 115s
run: postgres-exporter: (pid 7015) 115s; run: log: (pid 7012) 115s
run: postgresql: (pid 6966) 116s; run: log: (pid 6965) 116s
run: prometheus: (pid 7014) 115s; run: log: (pid 7011) 115s
run: redis: (pid 6985) 115s; run: log: (pid 6984) 115s
run: redis-exporter: (pid 6987) 115s; run: log: (pid 6983) 115s
run: sidekiq: (pid 6958) 116s; run: log: (pid 6957) 116s
run: unicorn: (pid 14764) 1s; run: log: (pid 6994) 115s
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1723        2817          72        1158        3621
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1920        2620          72        1158        3424
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1943        2597          72        1158        3401
Swap:             0           0           0

稍等片刻 設(shè)置密碼后 以root用戶登陸


系統(tǒng)郵件配置

目的,系統(tǒng)配置郵箱使用stmp發(fā)送創(chuàng)建帳號(hào)信息等,如:創(chuàng)建帳號(hào)后發(fā)送用戶密碼初始設(shè)置頁(yè)面到用戶或用戶有變更時(shí)會(huì)出現(xiàn)類似情況
SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol) 若報(bào)錯(cuò)則為ssl配置問(wèn)題,因本次我們未使用https域名所以此項(xiàng)則不配置,具體操作如下

vim /etc/gitlab/gitlab.rb
找到如下設(shè)置
### Email Settings
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.XXX.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "XXX@XXX.com"
gitlab_rails['smtp_password'] = "your password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false #這里是否使用ssl協(xié)議,本次因未配置ssl域名,這里我們?cè)O(shè)置為false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'  #如上同理
gitlab_rails['smtp_domain'] = "mail.XXX.com"
gitlab_rails['gitlab_email_from'] = 'XXX@XXX.com'
保存后
gitlab-ctl reconfigure #重啟配置
gitlab-ctl restart 
gitlab-rails console #測(cè)試郵件
Notify.test_email(‘接收方郵件地址’,‘郵件標(biāo)題’,‘郵件內(nèi)容’).deliver_now
Notify.test_email('xxx@XXX.com','hello','hello').deliver_now
  • 當(dāng)創(chuàng)建用戶或用戶信息變更時(shí),系統(tǒng)郵件將會(huì)發(fā)送郵件通知用戶




漢化

請(qǐng)注意對(duì)應(yīng)版本信息 如不清楚gitlab版本以及git,請(qǐng)不要操作,否則gitlab癱瘓!

[root@k8s ~]# sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.2.4
  • 下載漢化包 注意補(bǔ)丁包版本一定要與gitlab的版本一致,以下直接下載的是gitlab-12-2穩(wěn)定版的。
wget https://gitlab.com/xhang/gitlab/repository/12-2-stable-zh/archive.tar.bz2 -O gitlab-12-2-stable-zh.tar.bz2

git clone https://gitlab.com/xhang/gitlab.git
-rw-r--r-- 1 root root 2231640 Sep  4 14:33 gitlab-12-2-stable-zh.tar.bz2
  • 解壓
[root@k8s ~]# tar xf gitlab-12-2-stable-zh.tar.bz2
[root@k8s home]# mv gitlab-12-2-stable-zh-d492132c9775663063d2438cbc674e14cda3bd25/ gitlab-12-2-stable-zh
[root@k8s home]# cat gitlab-12-2-stable-zh/VERSION 
12.2.0
  • 備份原有配置
[root@k8s home]# cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
  • 復(fù)制并覆蓋配置文件
[root@k8s home]# cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/abuse_reports_controller.rb’? yes
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/acme_challenges_controller.rb’? yes

這里仍提示是否覆蓋 發(fā)現(xiàn)這是別名引起的

[root@k8s home]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

發(fā)現(xiàn)每次執(zhí)行cp命令,其實(shí)是執(zhí)行了cp -i命令的別名,因此無(wú)論怎么輸入都提示是否覆蓋。
修改~/.bashrc,在“alias cp='cp -i'”前添加#號(hào)注釋后即可。

[root@k8s home]#  vi ~/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
# alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
~    

刷新

[root@k8s home]# source ~/.bashrc

仍不生效的話,請(qǐng)?jiān)诿钋凹由稀癨”

[root@k8s home]# \cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘gitlab-12-2-stable-zh/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘gitlab-12-2-stable-zh/tmp’

這里的錯(cuò)誤,忽略,因?yàn)橹耙呀?jīng)設(shè)置gitlab的root密碼了

  • 重新配置gitlab
[root@k8s home]# gitlab-ctl reconfigure
  • 重置gitlab
[root@k8s home]# gitlab-ctl restart 
ok: run: alertmanager: (pid 26363) 0s
ok: run: gitaly: (pid 26378) 0s
ok: run: gitlab-monitor: (pid 26400) 0s
ok: run: gitlab-workhorse: (pid 26417) 1s
ok: run: grafana: (pid 26426) 0s
ok: run: logrotate: (pid 26443) 1s
ok: run: nginx: (pid 26451) 0s
ok: run: node-exporter: (pid 26537) 0s
ok: run: postgres-exporter: (pid 26547) 1s
ok: run: postgresql: (pid 26561) 0s
ok: run: prometheus: (pid 26571) 1s
ok: run: redis: (pid 26584) 0s
ok: run: redis-exporter: (pid 26589) 1s
ok: run: sidekiq: (pid 26597) 0s
ok: run: unicorn: (pid 26609) 1s
[root@k8s home]# 
  • 進(jìn)入界面,請(qǐng)耐心等待,仍會(huì)出502錯(cuò)誤提示。此時(shí)界面已不再是英文,可見(jiàn)漢化成功,耶~~~


Gitlab基本命令

sudo gitlab-ctl start    # 啟動(dòng)所有 gitlab 組件;并加入開(kāi)機(jī)啟動(dòng)項(xiàng)里面:/etc/rc.local
sudo gitlab-ctl stop     # 停止所有 gitlab 組件;
sudo gitlab-ctl restart   # 重啟所有 gitlab 組件;
sudo gitlab-ctl status    # 查看服務(wù)狀態(tài);
sudo gitlab-ctl tail       # 查看日志;

安裝GitLab服務(wù)器配置注意事項(xiàng),502很大程度上是因?yàn)镃PU、內(nèi)存耗盡導(dǎo)致

安裝硬件需求

CPU
1 核心CPU最多支持100個(gè)用戶,所有的workers和后臺(tái)任務(wù)都在同一個(gè)核心工作這將導(dǎo)致GitLab服務(wù)響應(yīng)會(huì)有點(diǎn)緩慢。
2核心 支持500用戶,這也是官方推薦的最低標(biāo)準(zhǔn)。
4 核心支持2,000用戶。
8 核心支持5,000用戶。
16 核心支持10,000用戶。
32 核心支持20,000用戶。
64 核心支持40,000用戶。
如果想支持更多用戶,可以使用 集群式架構(gòu)
Memory
安裝使用GitLab需要至少4GB可用內(nèi)存(RAM + Swap)! 由于操作系統(tǒng)和其他正在運(yùn)行的應(yīng)用也會(huì)使用內(nèi)存, 所以安裝GitLab前一定要注意當(dāng)前服務(wù)器至少有4GB的可用內(nèi)存. 少于4GB內(nèi)存會(huì)導(dǎo)致在reconfigure的時(shí)候出現(xiàn)各種詭異的問(wèn)題, 而且在使用過(guò)程中也經(jīng)常會(huì)出現(xiàn)500錯(cuò)誤.
1GB 物理內(nèi)存 + 3GB 交換分區(qū) 是最低的要求,但我們 強(qiáng)烈反對(duì) 使用這樣的配置。 查看下面unicorn worker章節(jié)獲取更多建議。
2GB 物理內(nèi)存 + 2GB 交換分區(qū) 支持100用戶,但服務(wù)響應(yīng)會(huì)很慢。
4GB 物理內(nèi)存 支持100用戶,也是 官方推薦 的配置。
8GB 物理內(nèi)存 支持 1,000 用戶。
16GB 物理內(nèi)存 支持 2,000 用戶。
32GB 物理內(nèi)存 支持 4,000 用戶。
64GB 物理內(nèi)存 支持 8,000 用戶。
128GB 物理內(nèi)存 支持 16,000 用戶。
256GB 物理內(nèi)存 支持 32,000 用戶。
如果想支持更多用戶,可以使用 集群式架構(gòu)
即使你服務(wù)器有足夠多的RAM, 也要給服務(wù)器至少分配2GB的交換分區(qū)。 因?yàn)槭褂媒粨Q分區(qū)可以在你的可用內(nèi)存波動(dòng)的時(shí)候降低GitLab出錯(cuò)的幾率。

注意: Sidekiq的25個(gè)workers在查看進(jìn)程(top或者h(yuǎn)top)的時(shí)候會(huì)發(fā)現(xiàn)它會(huì)單獨(dú)顯示每個(gè)worker,但是它們是共享內(nèi)存分配的,這是因?yàn)镾idekiq是一個(gè)多線程的程序。 詳細(xì)內(nèi)容查看下面關(guān)于Unicorn workers 的介紹。

注意事項(xiàng)

一、首先看看配置文件/etc/gitlab/gitlab.rb 中的端口號(hào)是否被占用
二、另外一個(gè)原因是gitlab占用內(nèi)存太多,導(dǎo)致服務(wù)器崩潰
內(nèi)存問(wèn)題 解決辦法,啟用swap分區(qū),步驟如下:

cat /proc/swaps 查看swap分區(qū)是否啟動(dòng)(無(wú))
創(chuàng)建 :
dd if=/dev/zero of=/data/swap bs=512 count=8388616

創(chuàng)建swap大小為bs*count=4294971392(4G);

通過(guò)mkswap命令將上面新建出的文件做成swap分區(qū)

mkswap /data/swap

查看內(nèi)核參數(shù)vm.swappiness中的數(shù)值是否為0,如果為0則根據(jù)實(shí)際需要調(diào)整成60

查看: cat /proc/sys/vm/swappiness
設(shè)置: sysctl -w vm.swappiness=60
若想永久修改,則編輯/etc/sysctl.conf文件,改文件中有vm.swappiness變量配置,默認(rèn)為0
啟用分區(qū)

swapon /data/swap

echo “/data/swap swap swap defaults 0 0” >> /etc/fstab

再次使用cat /proc/swaps 查看swap分區(qū)是否啟動(dòng)

重啟gitlab。

卸載gitlab

  • 清理命令
sudo gitlab-ctl uninstall
sudo gitlab-ctl cleanse
sudo gitlab-ctl remove-accounts
  • 停止gitlab
gitlab-ctl stop
  • 卸載gitlab
rpm -e gitlab-ce
  • 查看進(jìn)程
ps aux | grep gitlab
kill -9 xxx
殺掉守護(hù)進(jìn)程
  • 清理殘余文件
find / -name gitlab | xargs rm -rf
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容