<a href="https://packages.gitlab.com/gitlab/gitlab-ce" target="_blank">gitlab / gitlab-ce</a>
<a href="https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/" target="_blank">Gitlab Community Edition 鏡像使用幫助</a>
<a href="https://github.com/hehongwei44/my-blog/issues/19" target="_blank">在阿裡雲上通過Omnibus一鍵安裝包安裝Gitlab</a>
<code>vim /etc/yum.repos.d/gitlab-ce.repo</code>
<code>[gitlab-ce]</code>
<code>name=gitlab-ce</code>
<code>baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6</code>
<code>repo_gpgcheck=0</code>
<code>gpgcheck=0</code>
<code>enabled=1</code>
<code>gpgkey=https://packages.gitlab.com/gpg.key</code>
<code>sudo yum makecache</code>
<code>wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm</code>
<code>rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm</code>
如果已經用yum安裝過git,并且版本低于2.7.4,要先解除安裝掉舊的版本
<code>yum remove git</code>
<code>yum install vim curl openssh-server openssh-clients gcc-c++ zlib1g-dev zlib-devel curl-devel expat-devel gettext-devel opgcc perl-ExtUtils-MakeMaker</code>
使用源碼編譯安裝git
<code>mkdir /tmp/git && cd /tmp/git</code>
<code>curl -O --progress https://www.kernel.org/pub/software/scm/git/git-2.8.5.tar.gz</code>
<code>tar zxvf git-2.8.5.tar.gz</code>
<code>cd git-2.8.5</code>
<code>./configure</code>
<code>make prefix=/usr/local all</code>
<code># 安裝到/usr/local/bin</code>
<code>make prefix=/usr/local install</code>
<code># 驗證git版本号</code>
<code>git --version</code>
<code>#檢視git安裝路徑</code>
<code>which git</code>
<code>#建立軟連接配接</code>
<code>ln -s /usr/local/bin/git /usr/bin/git</code>
<code>sudo yum install gitlab-ce #(自動安裝最新版)</code>
<code>sudo yum install gitlab-ce-8.8.4-ce.0.el6 #(安裝指定版本)</code>
<code># vim /etc/gitlab/gitlab.rb </code>
<code># 找到 external_url 'http://000.00.00.00:8081' # 修改成你的位址</code>
<code># 然後執行下面的指令,對GitLab進行編譯。</code>
<code>sudo gitlab-ctl reconfigure</code>
<code>#啟動gitlab</code>
<code>sudo gitlab-ctl restart</code>
可能遇到的問題
<a href="https://s4.51cto.com/wyfs02/M00/9C/68/wKiom1lwJaiBjsxPAAGbJ_JVaHU767.png-wh_500x0-wm_3-wmp_4-s_2002798167.png" target="_blank"></a>
解決方法:
<code>是因為/etc/gitlab/gitlab.rb檔案中的内容是:</code>
<code>external_url 'hostname'</code>
<code>将其修改為:</code>
<code>external_url='hostname'</code>
<code>即可,隻需要在原來的配置項中添加個 ‘=’ 即可</code>
<code>Username: root </code>
<code>Password: 5iveL!fe</code>
1. 使用 marbleqi 制作的漢化增量更新檔包
注: 使用該漢化更新檔包需要重新配置編譯資源檔案
2. 手動導出漢化更新檔包漢化
請先使用官方包安裝或更新完成,确認目前版本。
<code>sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION</code>
<code>9.3.5</code>
假設目前版本為 v9.3.5,并确認漢化版本庫是否包含該版本的漢化标簽(-zh結尾),也就是是否包含 v9.3.5-zh。
<code># 克隆漢化版本庫</code>
<code>git clone https://gitlab.com/xhang/gitlab.git</code>
<code># 如果已經克隆過,則進行更新</code>
<code>git fetch</code>
# 導出9.3.5 版本的漢化更新檔
<code>git diff v9.3.5 v9.3.5-zh > ../9.3.5-zh.diff</code>
然後上傳 9.0.0-zh.diff 檔案到伺服器。
<code># 停止 gitlab</code>
<code>sudo gitlab-ctl stop</code>
<code>sudo patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../9.3.5-zh.diff</code>
确定沒有 .rej 檔案,重新開機 GitLab 即可。
<code>sudo gitlab-ctl start</code>
執行重新配置指令
如果漢化中出現問題,請重新安裝 GitLab(注意備份資料)。

當gitlab安裝完成後,根據自己的環境,要修改配置。
如:
gitlab修改nginx端口,綁定IP等
gitlab修改ssh端口
gitlab修改通路url等
gitlab修改資料庫類型(這個沒必要,因為這裡的資料庫隻存儲些使用者名,gitlab代碼放在/var/opt/gitlab/git-data/下)
gitlab修改redis,gunicorn配置等等
所有的配置在/etc/gitlab/gitlab.rb中修改,修改完配置後執行gitlab-ctl reconfigure生效
gitlab所有的工程目錄都在/var/opt/gitlab/下
<code># ls /var/opt/gitlab/</code>
<code>backups bootstrapped git-data gitlab-rails gitlab-shell logrotate nginx postgresql redis</code>
修改配置示例:
<code>#grep -v '#' gitlab.rb |grep -v ^$</code>
<code>external_url 'http://gitlab.sec.com'</code>
<code>gitlab_rails['gitlab_shell_ssh_port'] = 2222</code>
<code>nginx['listen_addresses']= ['10.18.103.1']</code>
<code>修改url是别人通過url拉取代碼,IP對用戶端透明。修改ssh port及nginx綁定IP等為環境需要解決沖突。</code>
原因:gravatar被牆 解決辦法: 編輯 /etc/gitlab/gitlab.rb,将
修改為:
然後在指令行執行:
<code>解決 80 端口被占用</code>
<code>upstream gitlab {</code>
<code> </code><code>server 114.55.111.111:8081 ;</code>
<code>}</code>
<code>server {</code>
<code> </code><code>#偵聽的80端口</code>
<code> </code><code>listen 80;</code>
<code> </code><code>server_name git.diggg.cn;</code>
<code> </code><code>location / {</code>
<code> </code><code>proxy_pass http://gitlab; #在這裡設定一個代理,和upstream的名字一樣</code>
<code> </code><code>#以下是一些反向代理的配置可删除</code>
<code> </code><code>proxy_redirect off;</code>
<code> </code><code>#後端的Web伺服器可以通過X-Forwarded-For擷取使用者真實IP</code>
<code> </code><code>proxy_set_header Host $host;</code>
<code> </code><code>proxy_set_header X-Real-IP $remote_addr;</code>
<code> </code><code>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</code>
<code> </code><code>client_max_body_size 10m; #允許用戶端請求的最大單檔案位元組數</code>
<code> </code><code>client_body_buffer_size 128k; #緩沖區代理緩沖使用者端請求的最大位元組數</code>
<code> </code><code>proxy_connect_timeout 300; #nginx跟後端伺服器連接配接逾時時間(代理連接配接逾時)</code>
<code> </code><code>proxy_send_timeout 300; #後端伺服器資料回傳時間(代理發送逾時)</code>
<code> </code><code>proxy_read_timeout 300; #連接配接成功後,後端伺服器響應時間(代理接收逾時)</code>
<code> </code><code>proxy_buffer_size 4k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩沖區大小</code>
<code> </code><code>proxy_buffers 4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設定</code>
<code> </code><code>proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2)</code>
<code> </code><code>proxy_temp_file_write_size 64k; #設定緩存檔案夾大小,大于這個值,将從upstream伺服器傳</code>
<code> </code><code>}</code>
<code># 檢查配置</code>
<code>/usr/local/nginx-1.5.1/sbin/nginx -tc conf/nginx.conf</code>
<code># nginx 重新加載配置</code>
<code>/usr/local/nginx-1.5.1/sbin/nginx -s reload</code>
<code># 啟動所有 gitlab 元件:</code>
<code># 停止所有 gitlab 元件:</code>
<code># 重新開機所有 gitlab 元件:</code>
<code># 檢視服務狀态</code>
<code>sudo gitlab-ctl status</code>
<code># 啟動服務</code>
<code># 修改預設的配置檔案</code>
<code>sudo vim /etc/gitlab/gitlab.rb</code>
<code># 檢視版本</code>
<code># echo "vm.overcommit_memory=1" >> /etc/sysctl.conf</code>
<code># sysctl -p</code>
<code># echo never > /sys/kernel/mm/transparent_hugepage/enabled</code>
<code># 檢查gitlab</code>
<code>gitlab-rake gitlab:check SANITIZE=true --trace</code>
<code># 檢視日志</code>
<code>sudo gitlab-ctl tail</code>
使用Gitlab一鍵安裝包安裝Gitlab非常單, 同樣的備份恢複與遷移也非常簡單,用一條指令即可建立完整的Gitlab備份:
以上指令将在/var/opt/gitlab/backups目錄下建立一個名稱類似為xxxxxxxx_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中開頭的xxxxxx是備份建立的時間戳。
修改<code>/etc/gitlab/gitlab.rb</code>來修改預設存放備份檔案的目錄:
<code>gitlab_rails['backup_path'] = '/mnt/backups'</code>
修改後使用gitlab-ctl reconfigure指令重載配置檔案。
<code>0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create</code>
<code>0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create</code>
首先進入備份 gitlab 的目錄,這個目錄是配置檔案中的 <code>gitlab_rails['backup_path']</code> ,預設為 <code>/var/opt/gitlab/backups</code> 。
然後停止 unicorn 和 sidekiq ,保證資料庫沒有新的連接配接,不會有寫資料情況。
<code># 停止相關資料連接配接服務</code>
<code>gitlab-ctl stop unicorn </code>
<code># ok: down: unicorn: 0s, normally up </code>
<code>gitlab-ctl stop sidekiq</code>
<code># ok: down: sidekiq: 0s, normally up</code>
<code># 從xxxxx編号備份中恢複</code>
<code># 然後恢複資料,1406691018為備份檔案的時間戳</code>
<code>gitlab-rake gitlab:backup:restore BACKUP=1406691018</code>
<code># 啟動Gitlab</code>
<code># 恢複過程中沒有權限</code>
<code>mkdir /var/opt/gitlab/backups</code>
<code>chown git /var/opt/gitlab/backups</code>
<code>chmod 700 /var/opt/gitlab/backups</code>
<code># 恢複成功頁面報沒有權限的錯誤</code>
<code>sudo chown -R git:git /var/opt/gitlab/git-data/repositories</code>
<code>sudo chmod -R ug+rwX,o-rwx /var/opt/gitlab/git-data/repositories</code>
<code>sudo chmod -R ug-s /var/opt/gitlab/git-data/repositories</code>
<code>sudo find /var/opt/gitlab/git-data/repositories -type d -print0 | sudo xargs -0 chmod g+</code>
<code>把備份檔案拷貝到gitlab的備份目錄下,根據上面gitlab恢複步驟即可。</code>
<a href="https://gitlab.com/gitlab-org/gitlab-ce/issues/2052#note_1667899" target="_blank">https://gitlab.com/gitlab-org/gitlab-ce/issues/2052#note_1667899</a>
本文參考:http://www.cnblogs.com/chinajava/p/5870683.html
本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1945313如需轉載請自行聯系原作者
qianghong000