搭建gitlab服務

服務器快速搭建gitlab方法

能夠參考gitlab中文社區的教材html

中文網:https://www.gitlab.com.cn/ins...nginx

文檔:https://gitlab.com/gitlab-org...git

1.什麼是gitlab版本管理

太過官方的解釋,隨便百度一下一堆。。。我也Google一下。。web

GitLab 是利用 Ruby on Rails 一個開源的版本管理系統,實現一個自託管的Git項目倉庫,可經過Web界面進行訪問公開的或者私人項目。它擁有與Github相似的功能,可以瀏覽源代碼,管理缺陷和註釋。能夠管理團隊對倉庫的訪問,它很是易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員能夠利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片斷收集功能能夠輕鬆實現代碼複用,便於往後有須要的時候進行查找。redis

其實我感受最簡單暴力的理解就是:Gitlab 就是以網站的形式將 Git 服務端可視化;apache

2.gitlab的安裝

其實gitlab能夠很複雜也能夠很簡單:centos

第一種方法:

說白了其實gitlab就是一個web端,打散後其實也是由(nginx,gitaly,redis,gitlab-workhorse...)等這些東西構成;因此你能夠一個個組裝一個個編譯安裝;這樣你也能夠深刻去了解gitlab,同時也能夠達到最簡化(將沒必要要的東西去掉)bash

第二種方法:

rpm 安裝。。。官方和社區都有提供。。服務器

若是你是愛折騰的小夥伴,那你能夠嘗試第一種途徑。。途中你會發現各類挑戰,各類問題。。而後你一一努力解決,從中獲取巨大的成就感。。最後放棄了,仍是以爲 用rpm安裝算了。。。(我就是這樣!!O(∩_∩)O哈哈~)。。。ssh

下面主要是第二種的安裝介紹:

我用的是 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;
    }
}
相關文章
相關標籤/搜索