本文選自微信公衆號:superdiao的果殼
可能很多人沒有聽過GitLab這個東西,但是卻聽過GitHub(畢竟全球最大代碼開源社區,即傳說中的“全球最大同性交友網站”),註冊免費用戶即可在GitHub上免費託管開源代碼,如需建立私有倉庫必須付費。
事實上,兩者非常相似,均屬於第三方基於Git開發的代碼版本控制產品,GitLab可以看成是個人版的GitHub,因爲可以將自己的代碼放到自己搭建的服務器上去,適合團隊內部協作開發。這樣一來安全性得到了保證,關鍵在於它還是免費的開源工具,同時它支持Web頁面操作。
爲了做到這一點,是否需要自己買或者租一個服務器呢?
答案是否定的。因爲有了虛擬機,我們就有了自己的服務器,也就是說我們可以在虛擬機上搭建好GitLab,然後通過主機的瀏覽器去訪問虛擬機的Ip地址就可以進行操作了。
那究竟以什麼方式去搭建這個工具呢?有的朋友會覺得從網站下個包然後放到服務器上去安裝,其實暫且不說這個過程麻煩(因爲很多依賴包需要下載),下包的過程也是很漫長的,運氣不好還會各種中斷而導致失敗,就算通過國內的鏡像網站去下載也不是好辦法。
此時,Docker的作用就發揮出來了。不熟悉Docker的可以參考本號的往期文章(《centos7安裝docker》)。理由簡單地來說就是已經有好心人將GitLab封裝好成一個容器放到Docker官網上了,我們需要做的只是拉取它的Image下來到自己的服務器(也就是前面說的虛擬機),配合幾條命令就可以搭建好了。
環境要求
最低配置要求:虛擬機最好2核或以上,內存至少2G
虛擬機數量:單個即可
通信要求:能夠和主機進行通信,即互相ping通
1. 拉取鏡像
[root@docker ~]# docker pull gitlab/gitlab-ce
#一般需要幾分鐘才能拉取完鏡像
# 檢查是否成功,看到gitlab/gitlab-ce就表示拉取成功
[root@docker etc]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 5f5beb0b3864 4 days ago 1.89GB
python 3.7-slim-buster 5b03cb8574a0 2 months ago 179MB
postgres latest 4a82a16ee75c 3 months ago 394MB
redis 4 8280a2c45ce5 3 months ago 89.2MB
2. 運行鏡像
# 將 GitLab 的配置 (etc) 、 日誌 (log) 、數據 (data) 放到容器之外, 便於日後升級。
[root@docker ~]# mkdir -p /mnt/gitlab/etc
[root@docker ~]# mkdir -p /mnt/gitlab/log
[root@docker ~]# mkdir -p /mnt/gitlab/data
# 分別指定映射的端口,容器名字,掛載的卷(config,logs,data),鏡像
[root@docker ~]# docker run -d \
-p 2222:22 -p 8080:80 -p 8443:443 \
--name gitlab \
-v /data/gitlab/config/:/data/gitlab/config/ \
-v /data/gitlab/logs/:/data/gitlab/logs/ \
-v /data/gitlab/data/:/data/gitlab/data/ \
gitlab/gitlab-ce:latest
# 檢查是否運行成功,看到gitlab說明沒問題:
[root@docker etc]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d94a3639e722 gitlab/gitlab-ce:latest "/assets/wrapper" 16 hours ago Up 16 hours (healthy) 0.0.0.0:2222->22/tcp, 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp gitlab
確認以上步驟無誤後,以下操作均需要在容器內進行:
3. 配置GitLab
# 進入容器內
[root@docker ~]# docker exec -it gitlab /bin/bash
root@d94a3639e722:/#
# 出現上面一行說明已經進入容器內了
# 容器內進行配置相關配置文件
root@d94a3639e722:/# vim /etc/gitlab/gitlab.rb
添加下面的配置(填寫虛擬機Ip)
external_url 'http://192.168.38.132'
保存並退出
3.1 更新配置
root@d94a3639e722:/# gitlab-ctl reconfigure
# 該步驟至少需要幾分鐘
3.2 重啓gitlab
root@d94a3639e722:/# gitlab-ctl restart
# 查看運行狀態是否正常:
root@d94a3639e722:/# gitlab-ctl status
run: alertmanager: (pid 1193) 58248s; run: log: (pid 299) 58494s
run: gitaly: (pid 1202) 58247s; run: log: (pid 303) 58494s
run: gitlab-exporter: (pid 1209) 58247s; run: log: (pid 293) 58494s
run: gitlab-workhorse: (pid 1218) 58246s; run: log: (pid 287) 58494s
run: grafana: (pid 1227) 58246s; run: log: (pid 283) 58494s
run: logrotate: (pid 37010) 3202s; run: log: (pid 291) 58494s
run: nginx: (pid 1244) 58245s; run: log: (pid 289) 58494s
run: postgres-exporter: (pid 1249) 58244s; run: log: (pid 297) 58494s
run: postgresql: (pid 1268) 58244s; run: log: (pid 305) 58494s
run: prometheus: (pid 1278) 58243s; run: log: (pid 285) 58494s
run: redis: (pid 1286) 58243s; run: log: (pid 311) 58494s
run: redis-exporter: (pid 1422) 58243s; run: log: (pid 295) 58494s
run: sidekiq: (pid 1547) 58239s; run: log: (pid 309) 58494s
run: sshd: (pid 1554) 58239s; run: log: (pid 31) 58510s
run: unicorn: (pid 1561) 58237s; run: log: (pid 307) 58494s
如果配置得有問題,但是不想逐個去改,那麼首先應該在容器外停止相應的容器:“docker stop gitlab”,再通過“docker rm containerID”這一命令刪除指定容器,而鏡像則不用動。containerID可以用“docker ps -a”獲取。
至此配置算是完成了,相對於手動安裝的方式(筆者嘗試過,發現既繁瑣又易失敗),這種方式簡單快捷且不容易出錯。
當然,還需要通過瀏覽器來驗證是否安裝成功:
4. 驗證安裝
打開主機瀏覽器(需要等幾分鐘,即使出現502頁面),輸入網址:http://192.168.38.132:8080/(虛擬機IP加上端口號),填寫相關信息就可以使用了!
總結一下安裝的流程:
拉取鏡像—>運行鏡像—>配置GitLab—>驗證安裝。
希望本文對各位有所幫助!