什麼是 GitLab
GitLab 是利用 Ruby on Rails 一個開源的版本管理系統,實現一個自託管的 Git 項目倉庫,可通過 Web 界面進行訪問公開的或者私人項目。它擁有與 Github 類似的功能,能夠瀏覽源代碼,管理缺陷和註釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序 (Wall) 進行交流。它還提供一個代碼片段收集功能可以輕鬆實現代碼複用,便於日後有需要的時候進行查找。
基於 Docker 安裝 GitLab
首先進入到/usr/local/docker/gitlab目錄下(若沒有則創建),創建docker-compose.yml配置文件。
cd /usr/local/docker/gitlab
vi docker-compose.yml
使用 Docker 來安裝和運行 GitLab 中文版,docker-compose.yml
配置如下:
version: '2'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:11.1.4'
restart: always
hostname: '192.168.41.131' #你的linux虛擬機的IP地址
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.41.131'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
ports:
- '80:80'
- '8443:443'
- '2222:22'
volumes:
- /usr/local/docker/gitlab/config:/etc/gitlab
- /usr/local/docker/gitlab/data:/var/opt/gitlab
- /usr/local/docker/gitlab/logs:/var/log/gitlab
使用docker-compose up
命令啓動部署。
部署完成後,在瀏覽器輸入192.168.41.131
即可訪問Gitlab。
關於配置多個SSH的問題
由於我本身還在使用Github,所以我的電腦上配置了一個Github SSH的Key,而現在我又搭建了一個本地託管服務器,並且希望通過SSH免密登陸,所以我需要配置第二個SSH,這裏經常會出現衝突問題,有兩種解決辦法。
方法一
首先,生成第二個Gitlab使用的SSH公鑰與私鑰。
$ ssh-keygen -t rsa -C "[email protected]” -f ~/.ssh/id_gitlab_rsa
此時,你的.ssh
文件夾中應該有id_gitlab_rsa``id_gitlab_rsa.pub``id_github_rsa``id_gitlab_hub.pub
四個文件,分別對應兩個平臺的公鑰與私鑰。
添加配置文件config
如下:
# gitlab
Host 192.168.41.131 #Host可以看作是一個你要識別的模式,對識別的模式,進行配置對應的的主機名和ssh文件(可以直接填寫ip地址)
HostName 192.168.41.131 #本地Gitlab服務器IP
Port 2222 #Gitlab端口號
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab #指明上面User對應的identityFile路徑
User GiottoLee #登錄名(如gitlab的username)
# github
Host github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
然後,添加私鑰:
$ ssh-add ~/.ssh/id_rsa $ ssh-add ~/.ssh/github_rsa
如果執行ssh-add時提示”Could not open a connection to your authentication agent”,可以先執行命令:
$ ssh-agent bash
然後再重新運行ssh-add命令即可。
最後通過SSH -T
命令進行測試:
$ ssh -T [email protected]
Hi GiottoLee! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T [email protected]
Welcome to GitLab, @GiottoLee!
測試通過,現在兩個SSH可同時使用了。
方法二
這個方法是我在搞清楚方法一之後才發現的,一句話就可以說清楚:
直接把github的公鑰複製給Gitlab就好了,用一把鑰匙訪問兩個倉庫!Shit!
具體操作
Gitlab的具體操作與Github操作相同,此處不再贅述,如有需要可以翻看之前的那篇文章Git版本控制及遠程倉庫的使用]。