前言
使用Omnibus包部署gitlab服務(wù)包含了很多額外的知識,請先通過google初步了解這個(gè)包里面所包含的各組件的作用,然后請通讀并理解 GitLab Docker images 官方文檔衬廷。
- omnibus Gitlab服務(wù)一鍵安裝包
- gitlab-shell Gitlab命令行工具
- gitlab-workhorse 加速http請求處理
- logrotate 日志服務(wù)
- nginx Gitlab使用nginx作為反向代理服務(wù)器將請求轉(zhuǎn)發(fā)到內(nèi)部的unicorn web服務(wù)器
- postgresql 數(shù)據(jù)庫
- reconfigrure 配置服務(wù)
- redis 鍵值存儲和緩存服務(wù)
- registry Docker鏡像存儲服務(wù)
- sidekiq Ruby平臺后臺任務(wù)處理服務(wù)(Github地址)
- sshd sshd服務(wù)
- unicorn Ruby實(shí)現(xiàn)的Web服務(wù)器
部署和配置
創(chuàng)建啟動腳本并運(yùn)行
首次運(yùn)行腳本侧到,gitlab將生成的配置文件保存在主機(jī)映射的目錄中桨螺。
# github.sh
docker run -d \ #后臺運(yùn)行
--hostname gitlab.freemanke.com \ #容器主機(jī)名稱
--name gitlab \ #鏡像名稱
--publish 443:443 \ #https端口
--publish 9888:9888 \ #http端口
--publish 9999:9999 \ #registry對外服務(wù)端口
--publish 2200:22 \ #內(nèi)部sshd服務(wù)端口
--restart always \
--volume /home/freeman/gitlab/config:/etc/gitlab \ #配置文件
--volume /home/freeman/gitlab/logs:/var/log/gitlab \ #日志文件
--volume /home/freeman/gitlab/data:/var/opt/gitlab \ #數(shù)據(jù)存儲
gitlab/gitlab-ce:latest #官方鏡像源
自定義配置文件
- 打開配置文件
sudo nano /home/freeman/gitlab/config/gitlab.rb
- 配置服務(wù)鏈接地址
external_url 'https://gitlab.freemanke.com'
該地址表明要配置的gitlab服務(wù)最終對外提供的服務(wù)地址科汗,如果不是使用80和443默認(rèn)端口,那么地址后需要添加端口返十,這個(gè)端口在容器運(yùn)行時(shí)需要通過--publish
參數(shù)暴露出去妥泉,否則外網(wǎng)無法訪問,例如:https://gitlab.freemanke.com:9888
洞坑,如果schema使用的是https盲链,還需要配置一下兩個(gè)參數(shù),你需要將ssl證書和私鑰放置在/home/freeman/gitlab/config/ssl/
目錄下,并使用配置好的域名命名刽沾。本例中為:gitlab.freemanke.com.crt
, gitlab.freemanke.com.pem
本慕。
################
# GitLab Nginx #
################
...
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
...
- 配置郵件服務(wù)器,此處需要修改兩個(gè)段的配置侧漓,第一個(gè)段锅尘,需要設(shè)置發(fā)信和收信地址,此處的發(fā)信地址必須跟SMTP段中的賬號一致布蔗,否則會報(bào)錯(cuò)
Net::SMTPFatalError: 553 Mail from must equal authorized user
藤违。
############################
# gitlab.yml configuration #
############################
...
gitlab_rails['gitlab_email_from'] = 'Administrative@fhit.com.cn'
gitlab_rails['gitlab_email_display_name'] = 'fhit'
gitlab_rails['gitlab_email_reply_to'] = 'Administrative@fhit.com.cn'
...
第二個(gè)段為email server settings
配置,以下以163企業(yè)郵箱服務(wù)為例纵揍,注意其中的 gitlab_rails['smtp_authentication']
配置顿乒,有的郵箱服務(wù)需要使用"login"
。
################################
# GitLab email server settings #
################################
...
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qiye.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "service@fhit.com.cn"
gitlab_rails['smtp_password'] = "pwd"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
...
- 配置registry外部服務(wù)地址泽谨,該
9999
端口號需要在運(yùn)行容器時(shí)通過--publish
參數(shù)暴露到外網(wǎng)璧榄,否則將無法通過外網(wǎng)訪問。
###############################
# Container registry settings #
###############################
registry_external_url 'https://gitlab.freemanke.com:9999'
此地址為registry最終對外提供的服務(wù)地址吧雹,通過web瀏覽器訪問地址骨杂,檢查該服務(wù)是否可用,
https://gitlab.freemanke.com:9999/v2/_catalog```
如果返回結(jié)果如下雄卷,說明該服務(wù)配置正常搓蚪。
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Name":"catalog","Action":"*"}]}]}
### 重啟服務(wù)
如果配置更改了,則需要重新啟動服務(wù)龙亲,可以通過以下命令
docker restart gitlab
如果啟動腳本中的參數(shù)有變動陕凹,需要重新構(gòu)建容器
docker stop github
docker rm -f github
sudo bash github.sh
docker start github
## 定期數(shù)據(jù)備份
創(chuàng)建備份腳本 `backup-gitlab-to-oss.sh`
docker exec gitlab /opt/gitlab/bin/gitlab-rake gitlab:backup:create