·?起因
? ? 項目的版本庫要從 SVN 遷移到 Git 上,考慮到團隊管理方便,Gitlab 提供了比控制臺更直觀的管理項目、組的管理,因此搭建了一個Gitlab的版本控制環(huán)境,過程中遇到一些問題,記錄下來。
· Ubuntu
? ? 為什么要用Ubuntu呢,一是Gitlab對Ubuntu支持較好,二是Ubuntu安裝軟件也方便快捷,其安裝過程就不講了,都是圖形化的操作,安裝完后設(shè)置好IP地址就好,Ubuntu的下載地址 https://www.ubuntu.com/download。
· 安裝SSH
? ? 訪問Git還是要安裝ssh,Ubuntu 默認沒有安裝,使用下面的命令來安裝 ssh:
sudo apt-get update
? ? 輸入密碼后,更新系統(tǒng)

? ? 安裝ssh :
sudo apt-get install openssh-server

? ? 查看ssh服務(wù)是否啟動
sudo ps -e |grep ssh #有顯示ssh服務(wù)代表已啟動
sudo service ssh start? ?#啟動ssh服務(wù)


· 安裝 ca-certificates 和 postfix
? ? Gitlab 使用 https 時需要配置 ca,postfix 是作為Gitlab的默認郵件發(fā)送工具的,我們在實際工作中沒有使用郵件服務(wù)器,因此psotfix 只是簡單配置了一下,但并沒有起作用,想要配置postfix 的童鞋參考?http://wiki.ubuntu.org.cn/Postfix_%E5%9F%BA%E6%9C%AC%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97。
#安裝 ca 和 postfix
sudo apt-get?install ca-certificates postfix??
? ??

· 解決Ubuntu中,vim 在編輯模式下鍵盤位置不準的問題
? ? 在 MAC 系統(tǒng)下,vim 編輯模式的鍵盤位置有誤,這個問題在windows上沒有發(fā)現(xiàn)(PS:我是在虛擬機中安裝的Ubuntu),解決這個問題的辦法是重新安裝 vim:
#卸載vim
$sudo apt-get remove vim-common
#安裝vim
$sudo apt-get install vim
·? 安裝 Gitlab
? ? Gitlab 的安裝文件還比較大,如果有官方的源,怕是還沒有下載下來就掛了,所以要使用國內(nèi)的鏡像來安裝,過程如下:
#信任 Gitlab 的 GPG 公鑰
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
? ? 編輯?/etc/apt/sources.list.d/gitlab-ce.list 文件,這個根據(jù)不同的服務(wù)器,會有所不同,具體參考 清華大學鏡像站使用幫助。Ubuntu 16.04LTS的內(nèi)容如下:
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
? ? 設(shè)置好后,就可以安裝了
sudo apt-get update
sudo apt-get install gitlab-ce
? ? 如果一切順利,Gitlab 就安裝完畢了。
·? Gitlab 配置
? ? 首先,你要配置你的域名,gitlab的所有配置都可以在?/etc/gitlab/gitlab.rb 文件中配置,這個是我見過的最大的配置文件了,配置非常 ”豪華“。
sudo vim /etc/gitlab/gitlab.rb
? ? 配置 “external_url” 這個參數(shù)為你的域名地址,然后執(zhí)行:
sudo gitlab-ctl reconfigure
? ? 重新啟動 Gitlab,你就可以登錄Gitlab了:

? ? 進去之后就可以創(chuàng)建 Group,創(chuàng)建 project,然后為用戶設(shè)置 ssh 的 key,就可以作為中央倉庫使用了,這個本文不做詳細說明了,后面另些一篇文章詳細說明吧。
·? 配置 Https?
? ? 如果想用 Https 來訪問 Gitlab,還需要生成自己的證書,Ubuntu默認安裝了openssl,可以直接使用:?
#建立 ssl 目錄
mkdir -p /home/michael/work/openssl
# 將原openssl目錄下的ssl/misc/CA.sh拷貝到自己創(chuàng)建的測試目錄下
cp /usr/lib/ssl/misc/CA.sh /home/michael/work/openssl
# 創(chuàng)建主證書,按照提示輸入信息
./CA.sh -newca
# 拷貝成ca.crt
cp demoCA/cacert.pem ca.crt
#生成服務(wù)器私鑰
openssl genrsa -des3 -out server.key 1024
#生成csr文件
openssl req -new -key server.key -out server.csr
# 簽名并生成證書
openssl ca -in server.csr -out server.crt
# 下面是生成客戶端證書,我們這個場景沒有用到,感興趣的童鞋可以試下
# 生成客戶端私鑰
openssl genrsa -des3 -out client.key 1024
# 生成csr文件
openssl req -new -key client.key -out client.csr
# 簽名并生成證書
openssl ca -in client.csr -out client.crt
? ? 我們用到的是 server.key 和 server.crt 文件,這兩個文件要復制到?/etc/gitlab/ssl 路徑下,然后修改配置
sudo vim?/etc/gitlab/gitlab.rb
? ? 修改url
# note the 'https' below
external_url "https://gitlab.example.com"
? ? http 請求轉(zhuǎn) https
nginx['redirect_http_to_https'] = true
? ? 證書文件的路徑:
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
? ? 此處有個問題一定要注意,如果在創(chuàng)建server.key 時,輸入了密碼,那么一定要回到我們openssl的目錄,也就是上文中的 /home/michael/work/openssl,執(zhí)行一條命令,重新生成一下server.key:
openssl rsa -in server_before.key -out server_after.key
? ? 這樣就把密碼去掉了,因為如果server.key 中有密碼,那么https 模式下,gitlab 啟動后不會提供服務(wù),但也不會有任何提示,此處參考?官方文檔。
至此就大功告成了。