基本介紹
GitLab是一個自托管的Git項目倉庫,可以自己搭建個人代碼管理的倉庫,功能與github類似。
安裝
下載 gitlab下載地址: https://about.gitlab.com/downloads/
安裝依賴的包
sudo yum install curl-devel sudo yum install expat-devel sudo yum install gettext-devel sudo yum install openssl-devel sudo yum install zlib-devel sudo yum install perl-devel sudo yum install curl sudo yum install openssh-server sudo yum install openssh-clients sudo yum install postfix sudo yum install cronie
sudo yum install policycoreutils-python
Ubuntu系統使用apt-get方式安裝依賴包。
使用gitlab官網的腳本安裝
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
或者使用gitlab的yum安裝gitlab
sudo yum install gitlab-ce
配置發郵件
yum install postfix systemctl enable postfix systemctl start postfix
安裝完畢后,使用Web登錄

進入gitlab的管理頁面,進行常用的分組,工程,用戶等功能點的維護。

安裝完gitlab后的運維操作
初次配置服務
sudo gitlab-ctl reconfigure
啟動服務
sudo gitlab-ctl start
停止服務
sudo gitlab-ctl stop
重啟服務
sudo gitlab-ctl restart
備份倉庫
先修改 /etc/gitlab/gitlab.rb
配置要備份的路徑,然后重新執行命令sudo gitlab-ctl reconfigure,做重新配置更新。

執行如下命令,創建備份
sudo gitlab-rake gitlab:backup:create
創建備份是會顯示如下信息(會依次備份gitlab上的分組和所有的工程)。

備份文件個格式:Unix時間戳_gitlab_backup.tar,例如下面做的一個備份文件舉例。

備份的倉庫恢復
gitlab-rake gitlab:backup:restore BACKUP=1483198680
恢復時,選擇的版本就是備份是產生的Unix時間戳。
注:恢復時,先停掉服務,以免雙寫導致數據錯誤。
修改配置/etc/gitlab/gitlab.rb文件
修改數據文件目錄
查到git_data_dir配置信息,增加 git_data_dir "/data/gitlab-data"
修改備份目錄
gitlab_rails['backup_path'] = "/data/gitlab-data/backups"
配置郵箱
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "your.smtp.server" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "your.smtp user" gitlab_rails['smtp_password'] = "your.smtp password" gitlab_rails['smtp_domain'] = "your.demain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'gitlab@mail.domain.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@mail.domain.com'
修改git倉庫的域名或IP
# external_url 'http://192.168.1.100' #替換 #修改成域名訪問 external_url 'http://gitlab.your.com'
檢查服務的日志信息
# 檢查redis的日志 sudo gitlab-ctl tail redis # 檢查postgresql的日志 sudo gitlab-ctl tail postgresql # 檢查gitlab-workhorse的日志 sudo gitlab-ctl tail gitlab-workhorse # 檢查logrotate的日志 sudo gitlab-ctl tail logrotate # 檢查nginx的日志 sudo gitlab-ctl tail nginx # 檢查sidekiq的日志 sudo gitlab-ctl tail sidekiq # 檢查unicorn的日志 sudo gitlab-ctl tail unicorn
檢查服務狀態
sudo gitlab-ctl status
一般服務狀態顯示信息
顯示格式:
狀態 : 進程名稱:(進程ID)運行時間(秒);進程的日志服務進程和運行時間
run: gitlab-workhorse: (pid 11892) 281s; run: log: (pid 8630) 4742472s run: logrotate: (pid 11904) 280s; run: log: (pid 8631) 4742472s run: nginx: (pid 11911) 280s; run: log: (pid 8796) 4742455s run: postgresql: (pid 12866) 18s; run: log: (pid 8627) 4742472s run: redis: (pid 11989) 249s; run: log: (pid 8638) 4742472s run: sidekiq: (pid 12850) 20s; run: log: (pid 8634) 4742472s run: unicorn: (pid 12022) 247s; run: log: (pid 8629) 4742472s
| 狀態 | 說明 |
| run | 運行狀態 |
| down | 服務停止 |
常見的問題
1. 頁面顯示500,Whoops, something went wrong on our end.
500 Whoops, something went wrong on our end. Try refreshing the page, or going back and attempting the action again. Please contact your GitLab administrator if this problem persists.
如何檢查和定位問題?
使用命令檢查所有服務的狀態
sudo gitlab-ctl status
檢查服務狀態如下
run: gitlab-workhorse: (pid 11892) 91s; run: log: (pid 8630) 4742282s run: logrotate: (pid 11904) 90s; run: log: (pid 8631) 4742282s run: nginx: (pid 11911) 90s; run: log: (pid 8796) 4742265s down: postgresql: 1s, normally up, want up; run: log: (pid 8627) 4742282s run: redis: (pid 11989) 59s; run: log: (pid 8638) 4742282s run: sidekiq: (pid 12201) 2s; run: log: (pid 8634) 4742282s run: unicorn: (pid 12022) 57s; run: log: (pid 8629) 4742282s
定位問題
從服務狀態信息中顯示數據庫postgresql的狀態是down,即服務停止。
檢查數據庫postgresql的運行日志,檢查出現什么錯誤?
$ sudo gitlab-ctl tail postgresql ==> /var/log/gitlab/postgresql/state <== ==> /var/log/gitlab/postgresql/current <== 2016-12-24_01:39:39.00188 FATAL: data directory "/var/opt/gitlab/postgresql/data" has group or world access 2016-12-24_01:39:39.00190 DETAIL: Permissions should be u=rwx (0700). 2016-12-24_01:39:40.00698 FATAL: data directory "/var/opt/gitlab/postgresql/data" has group or world access 2016-12-24_01:39:40.00700 DETAIL: Permissions should be u=rwx (0700).
日志顯示,數據庫的訪問權限應該是只有用戶本身有讀寫執行的權限,用戶組和其他用戶不能有權限。
修改數據庫數據的權限后,檢查服務運行正常。
了解了問題的定位和解決方式,其他問題也很容易在日志中發現和解決,問題可能是磁盤空間少,用戶權限錯誤或者其他原因。
2. gitlab管理員密碼忘記,怎么重置密碼
Gitlab 修改root用戶密碼
使用rails工具打開終端
sudo gitlab-rails console production
查詢用戶的email,用戶名,密碼等信息,id:1 表示root賬號
user = User.where(id: 1).first
重新設置密碼
user.password = '新密碼' user.password_confirmation = '新密碼'
保存密碼
user.save!
完整的操作ruby腳本
user = User.where(id: 1).first user.password = '新密碼' user.password_confirmation = '新密碼' user.save!
然后使用重置過的密碼重新登錄。
Done.
