1. 修改 docker 鏡像源為國(guó)內(nèi)源
$ vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://lvpmz2sk.mirror.aliyuncs.com"]
}
$ systemctl reload docker #修改完成后重新載入docker服務(wù)
2. 拉取gitlab鏡像
$ docker pull docker.io/gitlab/gitlab-ce:10.5.1-ce.0
注:你可以使用較新版本的gitlab,但不一定有對(duì)應(yīng)版本的漢化包。
3. 啟動(dòng)容器
$ docker run \
-itd \
--name gitlab \
--restart=always \
-v /data/gitlab/etc:/etc/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
-v /data/gitlab/log:/var/log/gitlab \
-p 122:22 \
-p 127.0.0.1:180:80 \
gitlab/gitlab-ce:10.5.1-ce.0
4. 漢化:
$ cd /data/setup/ #進(jìn)入文件安裝目錄(宿主機(jī)內(nèi)執(zhí)行)
$ yum -y install git #安裝git客戶端(宿主機(jī)內(nèi)執(zhí)行)
#--------首次下載漢化包時(shí)废岂,執(zhí)行以下命令---------------
$ git clone https://github.com/marbleqi/gitlab-ce-zh.git #下載漢化包版本庫(kù)(宿主機(jī)內(nèi)執(zhí)行)
#--------后續(xù)更新漢化包時(shí),執(zhí)行以下命令
$ cd gitlab-ce-zh #進(jìn)入版本目錄
$ git pull origin #從遠(yuǎn)端獲取最新庫(kù)
$ git branch -a #顯示最新的分支清單
$ git checkout remotes/origin/v10.5.1-zh-patch #切換到相應(yīng)版本的漢化分支目錄
cd .. #返回上一級(jí)目錄
#--------------------------------------------------
$ docker cp gitlab-ce-zh gitlab:/opt/gitlab/embedded/service/ #將漢化文件從宿主機(jī)復(fù)制到容器中(宿主機(jī)內(nèi)執(zhí)行)
$ docker exec -it gitlab bash #進(jìn)入容器(宿主機(jī)內(nèi)執(zhí)行)
$ cd /opt/gitlab/embedded/service/ #進(jìn)入網(wǎng)頁(yè)文件相關(guān)目錄(容器內(nèi)執(zhí)行)
$ cp -rf gitlab-ce-zh/* gitlab-rails/ #將漢化文件覆蓋原文件(容器內(nèi)執(zhí)行)
5. gitlab配置
- 進(jìn)入容器(宿主機(jī)內(nèi)執(zhí)行)
$ docker exec -it gitlab bash #
- 編輯配置文件(容器內(nèi)執(zhí)行)
$ vi /etc/gitlab/gitlab.rb #編輯gitlab配置文件
- 基礎(chǔ)配置
external_url 'http://gitlab.yourdomain.com/' #修改為gitlab訪問(wèn)域名
gitlab_rails['time_zone'] = 'PRC' #將標(biāo)準(zhǔn)時(shí)修改為中國(guó)時(shí)間
gitlab_rails['gitlab_shell_ssh_port'] = 22 #修改ssh端口
gitlab_rails['gitlab_default_can_create_group'] = false #限制普通用戶創(chuàng)建組
gitlab_rails['gitlab_username_changing_enabled'] = false #username不能修改
- 郵箱配置:
以163個(gè)人郵箱為例:
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_display_name'] = 'gitlab'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
gitlab_rails['gitlab_email_subject_suffix'] = '[GITLAB]'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxx@163.com"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxx@163.com'
gitlab_rails['smtp_domain'] = "163.com"
user["git_user_email"] = "xxx@163.com"
- 使修改的配置文件生效
$ gitlab-ctl reconfigure #使修改的配置文件生效(容器內(nèi)執(zhí)行)
$ gitlab-ctl stop #停止gitlab服務(wù)(容器內(nèi)執(zhí)行)
$ gitlab-ctl start #啟動(dòng)gitlab服務(wù)(容器內(nèi)執(zhí)行
$ gitlab-ctl restart #重啟gitlab服務(wù)(容器內(nèi)執(zhí)行)
6. nginx配置
nginx配置git.yourdomain.com狱意,80端口代理127.0.0.1:180
$ vim /etc/nginx/conf.d/gitlab.conf
server {
listen 80;
server_name git.yourdomain.com;
access_log /var/log/nginx/gitlab.access.log main;
error_log /var/log/nginx/gitlab.error.log error;
location / {
proxy_read_timeout 2000;
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:180;
}
}
7. 數(shù)據(jù)備份與恢復(fù)
- 備份:
$ gitlab-rake gitlab:backup:create
使用以上命令會(huì)在/var/opt/gitlab/backups
目錄下創(chuàng)建一個(gè)名稱類似為1393513186_gitlab_backup.tar的壓縮包, 這個(gè)壓縮包就是Gitlab整個(gè)的完整部分, 其中開(kāi)頭的1393513186是備份創(chuàng)建的日期.
Gitlab 修改備份文件默認(rèn)目錄
你也可以通過(guò)修改/etc/gitlab/gitlab.rb
來(lái)修改默認(rèn)存放備份文件的目錄:
gitlab_rails['backup_path'] = '/mnt/backups'
/mnt/backups修改為你想存放備份的目錄即可, 修改完成之后使用gitlab-ctl reconfigure
命令重載配置文件即可.
- 恢復(fù):
- 停止相關(guān)數(shù)據(jù)連接服務(wù)
$ gitlab-ctl stop unicorn
$ gitlab-ctl stop sidekiq
- 從1393513186編號(hào)備份中恢復(fù)
$ gitlab-rake gitlab:backup:restore BACKUP=1393513186
- 啟動(dòng)Gitlab
$ gitlab-ctl start
8. 其他:
- 查看gitlab的版本信息
$ head -1 /opt/gitlab/version-manifest.txt
- gitlab smtp官方幫助文檔
https://docs.gitlab.com/omnibus/settings/smtp.html
- smtp測(cè)試:
$ gitlab-rails console production
irb(main):003:0> Notify.test_email('yourname@163.com', 'Message Subject', 'Message Body').deliver_now
- 查看日志
$ gitlab-ctl tail
or
$ tailf /var/log/gitlab/gitlab-rails/production.log
- 完整配置
external_url 'http://git.yourdomain.com'
gitlab_rails['time_zone'] = 'PRC'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_display_name'] = 'gitlab'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
gitlab_rails['gitlab_email_subject_suffix'] = '[GITLAB]'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxx@163.com"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxx@163.com'
gitlab_rails['smtp_domain'] = "163.com"
user["git_user_email"] = "xxx@163.com"
gitlab_rails['gitlab_default_can_create_group'] = false
gitlab_rails['gitlab_username_changing_enabled'] = false