說明
相關(guān)wiki
安裝及配置
1. gitlab 鏡像拉取
# gitlab-ce為穩(wěn)定版本慈格,后面不填寫版本則默認(rèn)pull最新latest版本
$ docker pull gitlab/gitlab-ce
拉取鏡像
2. 運(yùn)行 gitlab 鏡像
$ docker run -itd --name gitlab -p 443:443 -p 8082:80 -p 222:22 --restart always -v /lnmp/gitlab/config:/etc/gitlab -v /lnmp/gitlab/logs:/var/log/gitlab -v /lnmp/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后臺運(yùn)行
# -p:[外部:容器端口]將容器內(nèi)部端口向外映射,這里用8082是為了避免和nginx的沖突,我們再用nginx反向代理到8082端口
# --name:命名容器名稱
# -v:宿主機(jī)指定目錄映射成容器內(nèi)數(shù)據(jù)文件夾或者日志铐然、配置等文件夾
運(yùn)行成功后出現(xiàn)一串字符串表示
運(yùn)行成功
如果出現(xiàn)下面的錯誤時,你需要將/lnmp
目錄加入到docker
的共享目錄中
設(shè)置 Docker -> Preferences-> File Sharing
.
3. gitlab配置
按上面的方式芽偏,gitlab
容器運(yùn)行沒問題虑润,但在 gitlab
上創(chuàng)建項(xiàng)目的時候芝此,生成項(xiàng)目的 URL 訪問地址是按容器的 hostname
來生成的睡雇,也就是容器的 id靠胜。作為 gitlab
服務(wù)器,我們需要一個固定的 URL 訪問地址,于是需要配置 gitlab.rb
(宿主機(jī)路徑)醇疼。
修改 gitlab.rb
文件
$ vim /lnmp/gitlab/config/gitlab.rb
# gitlab服務(wù)的地址
external_url 'http://liuxd.gitlab.com'
# ssh配置
gitlab_rails['gitlab_ssh_host'] = 'liuxd.gitlab.com'
gitlab_rails['gitlab_shell_ssh_port'] = 222
更新配置后,執(zhí)行gitlab-ctl reconfigure
命令讓gitlab
重新加載配置, 由于本次是docker
安裝的,執(zhí)行時前面必須加docker exec
,如果是linux
的話,直接執(zhí)行gitlab-ctl reconfigure
命令就行
docker exec -it gitlab gitlab-ctl reconfigure
注: 第一次初始化后會產(chǎn)生當(dāng)前gitlab的配置文件 /lnmp/gitlab/gitlab-rails/etc/gitlab.yml 朴艰,在后期維護(hù)的過程中盡量配置 /lnmp/gitlab/gitlab-rails/etc/gitlab.yml 文件,然后gitlab-ctl restart 即可生效新的配置址愿;如果沒有必要不建議做第二次初始化该镣。
修改配置后,重啟gitlab
$ docker restart gitlab
此時項(xiàng)目的倉庫地址就變了。如果 ssh 端口地址不是默認(rèn)的 22必盖,就會加上 ssh:// 協(xié)議頭
打開瀏覽器輸入 ip 地址 如:http://127.0.0.1:8082. 可以查看gitlab頁面.
下面我們再為它設(shè)置一個nginx
反向代理
4. nginx反向代理
為了避免和nginx的80端口沖突,我們在用docker
啟動gitlab
時將它的映射端口指向了外部的8082端口
我們再用nginx
反向代理到8082端口,這樣就能用域名訪問了
server {
listen 80;
server_name liuxd.gitlab.com;
index index.html index.htm index.php;
access_log /lnmp/log/nginx/gitlab.access.log;
error_log /lnmp/log/nginx/gitlab.error.log;
allow all;
deny all;
location / {
proxy_pass http://127.0.0.1:8082/;
}
}
5. 問題處理
- 安裝好后,打開報502錯誤
image.png
解決方案
- 查看端口是否被占用(lsof -i :端口 命令), 如果是的話更換端口
- 可能是內(nèi)存不足的問題拌牲,關(guān)閉其他占用內(nèi)存的程序,再刷新
使用和創(chuàng)建一個項(xiàng)目
1. 第一次登錄
第一次進(jìn)入要輸入新的 root
用戶密碼,設(shè)置好之后確定就行,
下次就可以用root
賬號或admin@example.com
郵箱再加密碼登錄了
2. 新建一個項(xiàng)目組
新建一個組別
3. 新建一個項(xiàng)目
下面我們就可以新建一個項(xiàng)目了歌粥,點(diǎn)擊 Create a project
點(diǎn)擊 Create a project
如果沒有選同時生成readme選擇,創(chuàng)建完成后是下圖這樣, 在這里可以再次添加文件,readme等
如果選擇了同時生成readme選擇,創(chuàng)建完成后是這樣的:
創(chuàng)建完成塌忽!
應(yīng)用創(chuàng)建和oauth認(rèn)證授權(quán)
應(yīng)用創(chuàng)建
Gitlab允許用戶創(chuàng)建Applications,這些Applications可以通過OAuth2授權(quán)來訪問Gitlab的相應(yīng)資源失驶。
在Gitlab中土居, Applications分兩種:
第一種是用戶級別的Application, 這一般通過用戶的Profile菜單進(jìn)入創(chuàng)建
第二種是系統(tǒng)級別的Application, 這一般只有管理員權(quán)限的人通過Admin菜單進(jìn)入創(chuàng)建.
1. 用戶級別的Application
然后點(diǎn)擊提交后擦耀, 將得到應(yīng)用創(chuàng)建后的信息:
這個頁面的信息將由創(chuàng)建應(yīng)用的管理員分發(fā)給相應(yīng)的Application負(fù)責(zé)人棉圈, 后面, Application應(yīng)用負(fù)責(zé)人將使用這些信息做認(rèn)證眷蜓。
注冊完成后分瘾, 我們可以看到應(yīng)用現(xiàn)在只有0個Clients, 即還沒有任何實(shí)例作為這個Application的實(shí)例進(jìn)行認(rèn)證:
2. 系統(tǒng)級別的Application
應(yīng)用oauth認(rèn)證授權(quán)
應(yīng)用注冊成功后吁系, 應(yīng)用的實(shí)例就可以作為一個認(rèn)證實(shí)體向Gitlab認(rèn)證自己啦德召, 如果認(rèn)證成功, 就可以獲取一個代表某個用戶權(quán)限的access token對Gitlab的資源進(jìn)行訪問了汽纤。
例如:Gerrit通過Gitlab認(rèn)證
GitLab as an OAuth2 client 這篇幫助文檔其實(shí)說的就是這個過程