官方安裝教程
- gitlab / gitlab-ce
- 官網下載:https://www.gitlab.cc/downloads
- 官網安裝說明:https://doc.gitlab.cc/ce/install/requirements.html
- 開源版本和企業版本對比:https://www.gitlab.cc/features/#enterprise
解決官方無法安裝的情況
編輯源
使用清華大學 TUNA 鏡像源 打開網址將內容復制到gitlab-ce.repo
文件中,編輯路徑vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
更新本地 YUM 緩存
sudo yum makecache
安裝 GitLab 社區版
sudo yum install gitlab-ce #(自動安裝最新版) sudo yum install gitlab-ce-8.8.4-ce.0.el6 #(安裝指定版本)
更改配置
vim /etc/gitlab/gitlab.rb
# 找到 external_url 'http://000.00.00.00:8081' # 修改成你的地址
配置並啟動GitLab
# 打開`/etc/gitlab/gitlab.rb`, # 將`external_url = 'http://git.example.com'`修改為自己的IP地址:`http://xxx.xx.xxx.xx`, # 然后執行下面的命令,對GitLab進行編譯。 sudo gitlab-ctl reconfigure
登錄GitLab
Username: root
Password: 5iveL!fe
GitLab頭像無法正常顯示
原因:gravatar被牆 解決辦法: 編輯 /etc/gitlab/gitlab.rb,將
# gitlab_rails['gravatar_plain_url'] = 'http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon'
修改為:
gitlab_rails['gravatar_plain_url'] = 'http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon'
然后在命令行執行:
sudo gitlab-ctl reconfigure
sudo gitlab-rake cache:clear RAILS_ENV=production
nginx配置
解決 80
端口被占用
upstream gitlab {
server 114.55.111.111:8081 ;
}
server {
#偵聽的80端口
listen 80;
server_name git.diggg.cn;
location / {
proxy_pass http://gitlab; #在這里設置一個代理,和upstream的名字一樣
#以下是一些反向代理的配置可刪除
proxy_redirect off;
#后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允許客戶端請求的最大單文件字節數
client_body_buffer_size 128k; #緩沖區代理緩沖用戶端請求的最大字節數
proxy_connect_timeout 300; #nginx跟后端服務器連接超時時間(代理連接超時)
proxy_send_timeout 300; #后端服務器數據回傳時間(代理發送超時)
proxy_read_timeout 300; #連接成功后,后端服務器響應時間(代理接收超時)
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
proxy_buffers 4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
}
}
# 檢查配置 /usr/local/nginx-1.5.1/sbin/nginx -tc conf/nginx.conf # nginx 重新加載配置 /usr/local/nginx-1.5.1/sbin/nginx -s reload
運維
# 啟動所有 gitlab 組件: sudo gitlab-ctl start # 停止所有 gitlab 組件: sudo gitlab-ctl stop # 重啟所有 gitlab 組件: sudo gitlab-ctl restart # 查看服務狀態 sudo gitlab-ctl status # 啟動服務 sudo gitlab-ctl reconfigure # 修改默認的配置文件 sudo vim /etc/gitlab/gitlab.rb # 查看版本 sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION # echo "vm.overcommit_memory=1" >> /etc/sysctl.conf # sysctl -p # echo never > /sys/kernel/mm/transparent_hugepage/enabled # 檢查gitlab gitlab-rake gitlab:check SANITIZE=true --trace # 查看日志 sudo gitlab-ctl tail
備份恢復
Gitlab 創建備份
使用Gitlab一鍵安裝包安裝Gitlab非常簡單, 同樣的備份恢復與遷移也非常簡單,用一條命令即可創建完整的Gitlab備份:
gitlab-rake gitlab:backup:create
以上命令將在/var/opt/gitlab/backups目錄下創建一個名稱類似為xxxxxxxx_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中開頭的xxxxxx是備份創建的時間戳。
Gitlab 修改備份文件默認目錄
修改/etc/gitlab/gitlab.rb
來修改默認存放備份文件的目錄:
gitlab_rails['backup_path'] = '/mnt/backups'
修改后使用gitlab-ctl reconfigure命令重載配置文件。
備份
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
恢復
首先進入備份 gitlab 的目錄,這個目錄是配置文件中的 gitlab_rails['backup_path']
,默認為 /var/opt/gitlab/backups
。
然后停止 unicorn 和 sidekiq ,保證數據庫沒有新的連接,不會有寫數據情況。
# 停止相關數據連接服務 # ok: down: unicorn: 0s, normally up gitlab-ctl stop unicorn # ok: down: sidekiq: 0s, normally up gitlab-ctl stop sidekiq # 從xxxxx編號備份中恢復 # 然后恢復數據,1406691018為備份文件的時間戳 gitlab-rake gitlab:backup:restore BACKUP=xxxxxx # 啟動Gitlab sudo gitlab-ctl start
錯誤處理
Error executing action `run` on resource 'bash[migrate gitlab-rails database]'
https://gitlab.com/gitlab-org/gitlab-ce/issues/2052#note_1667899
NameError: uninitialized constant Devise::Async