服務器快速搭建gitlab方法
可以參考gitlab中文社區的教材
中文網:https://www.gitlab.com.cn/ins...
文檔:https://gitlab.com/gitlab-org...
1.什麼是gitlab版本管理
太過官方的解釋,隨便百度一下一堆。。。我也Google一下。。
GitLab 是利用 Ruby on Rails 一個開源的版本管理系統,實現一個自託管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和註釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕鬆實現代碼複用,便於日後有需要的時候進行查找。
其實我感覺最簡單暴力的理解就是:Gitlab 就是以網站的形式將 Git 服務端可視化;
2.gitlab的安裝
其實gitlab可以很複雜也可以很簡單:
第一種方法:
説白了其實gitlab就是一個web端,打散後其實也是由(nginx,gitaly,redis,gitlab-workhorse...)等這些東西構成;所以你可以一個個組裝一個個編譯安裝;這樣你也可以深入去了解gitlab,同時也可以達到最簡化(將不必要的東西去掉)
第二種方法:
rpm 安裝。。。官方和社區都有提供。。
如果你是愛折騰的小夥伴,那你可以嘗試第一種途徑。。途中你會發現各種挑戰,各種問題。。然後你一一努力解決,從中獲取巨大的成就感。。最後放棄了,還是覺得 用rpm安裝算了。。。(我就是這樣!!O(∩_∩)O哈哈~)。。。
下面主要是第二種的安裝介紹:
我用的是 centos7 的環境
1.安裝並配置必要的依賴關係
如果你想使用 Postfix 發送郵件,請在安裝過程中根據提示選擇 'Internet Site'。 你也可以用 Sendmail 或者 配置一個自定義的 SMTP 服務 並 把它作為一個 SMTP 服務器。
在 CentOS 系統上,下面的命令將會打開系統防火牆 HTTP 和 SSH 的訪問。
sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
2. 添加 GitLab 鏡像源並安裝
curl -sS http://packages.gitlab.com.cn/install/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
如果你不太習慣使用命令管道的方式安裝鏡像倉庫,你可以在這裏找到 完整的安裝腳本 或者 選擇系統對應的安裝包 使用下面的命令手動安裝。
curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-XXX.rpm
rpm -i gitlab-ce-XXX.rpm
我就是用這種。。。
3. 配置並啓動 GitLab
sudo gitlab-ctl reconfigure
4.通過域名可以訪問
第一次訪問 GitLab,系統會重定向 url 到重置密碼的頁面,你需要輸入初始化管理員賬號的密碼。 設置完成後,系統會重定向到登錄界面,你就可以使用剛才輸入的密碼登錄系統了。
系統默認的管理員賬號為 root, 登錄系統後,你可以修改管理員賬號為自己喜歡的賬號
2.端口衝突問題
裝好後,你會發現一個問題;gitlab 其實是個web;他自帶了個nginx;如果你本身也是一台服務器的話,上面也會裝有 apache 或者 nginx 等;那麼端口就衝突了;
以上的情況解決方案也有連個:(我就想到這兩個)
第一種:
禁用 gitlab 自帶的 nginx,使用我們自己安裝的 nginx。。。(然而我不太建議小白用這個方法;)
第二種:
更改gitlab自帶nginx的默認端口,域名加端口訪問就好;當然如果你是有強迫症的朋友(我就是不要輸入端口),也不是沒有辦法。你可以在你的服務器上配置代理服務器;
我用的就是第二種方法(我服務器上用的是nginx):
1.修改 gitlab 配置
官方安裝方式下,配置文件是/etc/gitlab/gitlab.rb
- gitlab nginx 端口監聽修改 nginx['listen_port'] = 端口號 - gitlab 的域名 external_url '域名'
修改完畢後重置下gitlab:
gitlab-ctrl reconfigure
2.添加 nginx 代理服務器配置
upstream git{
# 域名對應 gitlab配置中的 external_url
# 端口對應 gitlab 配置中的 nginx['listen_port']
server 域名:端口;
}
server{
listen 80;
# 此域名是提供給最終用户的訪問地址
server_name 域名;
location / {
# 這個大小的設置非常重要,如果 git 版本庫裏面有大文件,設置的太小,文件push 會失敗,根據情況調整
client_max_body_size 50m;
proxy_redirect off;
#以下確保 gitlab中項目的 url 是域名而不是 http://git,不可缺少
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 反向代理到 gitlab 內置的 nginx
proxy_pass http://git;
index index.html index.htm;
}
}