1. 程式人生 > >gitlab 安裝和基本介紹

gitlab 安裝和基本介紹

per cto 依賴 配置yum 代理服 create 客戶 靈活 nfs

一 安裝gitlab

1 環境簡介

技術分享圖片
官方相關介紹:

硬件要求
. 存儲
必要的硬盤空間在很大程度上取決於您想要存儲在GitLab中的存儲庫的大小,但根據經驗,您應該至少擁有與您的所有存儲庫合並占用的空閑空間。
如果您希望將來靈活擴展硬盤空間,請考慮使用LVM進行安裝,以便在需要時添加更多硬盤。
除了本地硬盤驅動器,您還可以安裝支持網絡文件系統(NFS)協議的卷。此卷可能位於文件服務器,網絡連接存儲(NAS)設備,存儲區域網絡(SAN)或Amazon Web Services(AWS)彈性塊存儲(EBS)卷上。
如果你有足夠的RAM內存和最近的CPU,GitLab的速度主要受硬盤尋道時間的限制。快速驅動(7200 RPM及以上)或固態驅動器(SSD)將提高GitLab的響應能力。

. 中央處理器

? 1個核心最多支持100個用戶,但由於所有工作和後臺作業都在同一個核心上運行,因此應用程序可能會慢一點
? 2核是建議的核心數,最多支持500個用戶
? 4個核心最多可支持2,000個用戶
? 8個核心最多支持5,000個用戶
? 16個內核最多可支持10,000個用戶
? 32個核心最多可支持20,000個用戶
? 64個內核最多可支持40,000個用戶

. 內存

至少8GB可尋址內存來安裝gitlab,在運行gitlab之前,至少需要4GB可用空間,

建議至少有2BG交換,建議將內核的swappiness 設置為較低水平10 足以
vim /etc/sysctl.conf
vm.swappiness = 10

. 數據庫

運行數據庫服務器至少要有5-10GB的可存儲空間,但具體要求取決於gitlab安裝的大小

強烈支持使用postgresql

Mysql/mariadb(不支持所有的gitlab功能)

Postgresql 要求

從GitLab 10.0開始,需要PostgreSQL 9.6或更高版本,並且不支持早期版本。我們強烈建議用戶使用PostgreSQL 9.6,因為這是用於開發和測試的PostgreSQL版本。
使用PostgreSQL的用戶必須確保將pg_trgm擴展加載到每個GitLab數據庫中。可以通過對每個數據庫運行以下查詢來啟用此擴展(使用PostgreSQL超級用戶):
CREATE EXTENSION pg_trgm;
在某些系統上,您可能需要安裝額外的軟件包(例如?postgresql-contrib)以使此擴展可用。

. Gitlab geo 要求

如果您使用的是GitLab Geo,則跟蹤數據庫也需要postgres_fdw擴展名。
CREATE EXTENSION postgres_fdw;

. Unicorn

可以增加unicorn worker 的數量,有助於減少應用程序的響應時間並提高處理並行請求的能力

對於大多數情況,建議使用:CPU核心+1=unicorn worker

對於所有2GB及以上的機器,建議至少有3個,如果是1GB建議使用兩個

. redis和 sidekiq
Redis 存儲所有用戶會話和後臺任務隊列,redis的存儲要求很低,每個用戶大約25KB,sidekiq使用多線程進程處理後臺作業,此過程從整個redis堆棧(200M+)開始,但由於內存泄露,他可能會隨著時間的推移而增長,在非常活躍的服務器上,sidekiq進程可以使用1GB+內存

. Prometheus 及相關,使用默認設置,這些進程將消耗大概200M內存

2 安裝相關依賴

技術分享圖片

技術分享圖片

yum install -y vim lrzsz wget gcc gcc-c++ make makeconf cmake

yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64 nodejs cmake libicu-devel libicu openssl openssl-devel

3 下載並配置yum源

技術分享圖片

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

技術分享圖片

4 安裝軟件

yum install gitlab-ce-11.0.6-ce.0.el7.x86_64

技術分享圖片
技術分享圖片

5 配置相關參數 URL 訪問地址配置

技術分享圖片
技術分享圖片
技術分享圖片

6 配置訪問相關解析

技術分享圖片
技術分享圖片

7 更新gitlab 配置

更新前需保證80端口未被占用,否則不能啟動,因為其中的nginx代理默認啟動的是80端口,若需更改,則需要在/etc/gitlab/gitlab.rb 中配置相關的nginx配置,切記,不能配置8080,因為8080已被gitlab內部配置默認占用unicorn master(此處也可改變),如果改成其他端口,則URL應寫成server10.com:8060即可訪問gitlab
技術分享圖片

技術分享圖片
查看是否成功
技術分享圖片
查看服務狀態
技術分享圖片

8 登錄和基本語言配置

登錄修改root密碼
技術分享圖片
通過root用戶名和修改後的密碼進行登錄測試
技術分享圖片
設置環境為簡體中文
技術分享圖片
技術分享圖片
保存並更新配置
技術分享圖片
查看
技術分享圖片

二 gitlab配置文件介紹及插件介紹

1 配置文件介紹

1 主配置文件介紹

其中包含所有的主配置的情況,組件的配置,其配置後需要進行reconfigure 進行生效配置並重啟方可生效,其生效後的結果在各組件目錄中可以看到
技術分享圖片

技術分享圖片

2 主目錄

技術分享圖片
技術分享圖片

3 各個組件目錄

技術分享圖片

4 放置日誌文件

技術分享圖片

2 插件介紹

技術分享圖片
1 repository: 代碼庫,可以是硬盤或NFS文件系統
2 NGINX: web 入口
3 數據庫:包含信息
Repository 中的數據(元數據,issue,合並請求merge request等)
可以登錄的web用戶信息
4 Redis 緩存 ,負責分發信息
5 sidekq: 後臺任務,主要負責發送電子郵件,任務來自與redis
6 unicorn (gitlab rails):gitlab自身的web,包含了gitlab主進程,負責處理快速/一般任務,與redis一起工作,內容有
A 通過檢查存儲在redis中的用戶來檢查權限
B 為sidekiq 制作任務
C 從倉庫(warehouse) 取東西或在哪裏移動東西

7 gitlab-shell:用於SSH交互,而不是http,gitlab-shell 通過redis與sidekiq 進行通信,並直接通過TCP訪問unicorn

8 gitaly: 後臺服務,專門負責訪問磁盤以高效處理git,並處理緩存耗時操作,所有的git操作都通過gitaly 進行處理

9 gitlab-workshorse: 反向代理服務器,可以處理與redis無關的請求,磁盤上的CSS,JS 文件等),處理git push/pull 請求,處理redis的鏈接(修改有redis發送的響應或發送給redis請求,管理redis的長期web socket鏈接)

10 mail_room: 處理郵件請求,恢復gitlab發送的郵件時,gitlab會調用此服務.

大體原理:
gitlab 使用nginx將前端請求代理到UNicorn web 服務器,默認情況下,unicorn 與前端之間的通信是通過unix domain 套接字進行的,但也支持通過TCP請求轉發,web訪問前端/home/git/gitlab/pubilc繞過unicorn 服務來提供靜態頁面,上傳和預編譯資源,gitlab使用Unicorn web 提供網頁和gitlab api,使用sidekiq作為作業隊列, 反過來,它使用redis 作為作業信息,元數據和作業的非持久化數據後端。

gitlab應用程序使用mysql或postgresql 作為持久化數據庫,保存用戶,權限,issue其他元數據等。

通過http/https提供repository時,gitlab使用gitlab API 來解釋授權和訪問以及提供git對象。

gitlab-shell 通過ssh提供repository,他管理/home/git/,ssh/authorized_keys 內的SSH密鑰,不應該手動編輯,gitlab-shell通過gitaly訪問bare repository 已提供git對象並與redis 進行通信以向sidekiq提交作業以供gitlab處理,gitlab-shell 查詢gitlab API一確定授權和訪問。

3 gitlab 忘記密碼

修改密碼為"12345678"
技術分享圖片

三 配置郵件服務器

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

四 配置項目相關

1 創建用戶組

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

技術分享圖片

2 創建項目(在指定的用戶組中)

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

3 創建用戶

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

4 用戶加組

技術分享圖片
技術分享圖片
技術分享圖片

5 登陸用戶

技術分享圖片
技術分享圖片
技術分享圖片

6 配置客戶端

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

7 配置文件並上傳

技術分享圖片
技術分享圖片
技術分享圖片

8 創建分支

技術分享圖片
技術分享圖片

9 保證master分支不能上傳

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

五 gitlab 備份與恢復

1 通過配置文件進行備份配置

技術分享圖片

2 手動進行備份和恢復

1 進入gitlab備份目錄並進行備份

命令:

gitlab-rake gitlab:backup:create

技術分享圖片

2 刪除gitlab中的項目

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

3 關閉相應的服務

技術分享圖片
技術分享圖片

4 進行備份恢復

技術分享圖片
直接輸入yes

5 進行配置並啟動

技術分享圖片
技術分享圖片

6 查看是否恢復成功

技術分享圖片

7 配置定時任務進行定時備份

30 00 5 /usr/bin/gitlab-rake gitlab:backup:create &> /dev/null && echo "gitlab 備份成功" | mail -s "gitlab 備份" [email protected]

技術分享圖片

gitlab 安裝和基本介紹