--- title: 'GitLab Install' disqus: hackmd --- ###### tags: GitLab ## Gitlab 安裝 Step 1 sudo apt-get install curl openssh-server ca-certificates postfix curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt-get install gitlab-ce=12.3.5-ce.0 (可修改版本號) Step 2 至資料夾內尋找設置檔"/etc/gitlab/gitlab.rb" 修改啟動埠 external_url 'http://localhost:8080' Step 3 sudo gitlab-ctl reconfigure #重新編譯並啟動gitlab 可能發生的Bug ![](https://img-blog.csdn.net/20150211193251166) Bug原因: "unicorn"預設啟動埠8080被佔用,至設定檔內修改啟動埠後,重新編譯並啟動gitlab ``` ## gitlab smtp信箱 設置 至資料夾內尋找設置檔"/etc/gitlab/gitlab.rb" ### Email Settings gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'imap.exmail.qq.com' 騰訊信箱固定格式 gitlab_rails['gitlab_email_display_name'] = 'Test_gitlab' gitlab_rails['gitlab_email_reply_to'] = 'noreply@192.168.1.83' gitlab_rails['gitlab_email_subject_suffix'] = '' ### GitLab email server settings ###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html ###! **Use smtp instead of sendmail/postfix.** gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" 騰訊信箱固定格式 gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "daniel@louyiai.com" gitlab_rails['smtp_password'] = "aA135799" 先到騰訊信箱設置密碼 gitlab_rails['smtp_domain'] = "smtp.exmail.qq.com" 騰訊信箱固定格式 gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'daniel@louyiai.com' ``` [各信箱設置](https://s0docs0gitlab0com.icopy.site/12.7/omnibus/settings/smtp.html) gitlab-rails console Notify.test_email('xxxxx@qq.com', '邮件标题', '邮件正文').deliver_now ## Gitlab中文化 僅有ce(社區版)能夠中文化 前提:已安裝好 gitlab,並確認版本與漢化包版本相同 確認版本指令 head -1 /opt/gitlab/version-manifest.txt (此指令僅適用在全部都是預設安裝的情境下,如有更改資料夾位址還請自行更換指令位址) 選擇一個資料夾,輸入已下指令下載漢化包 Step 1. ``` git clone git@gitlab.com:xhang/gitlab.git ``` Step 2. 在同一資料夾內,輸入已下指令,指令功能:對比原檔與漢化包內設計的中英文字句 ``` git diff v12.3.5 v12.3.5-zh > ../v12.3.5-zh.diff ``` Step 3. 在同一資料夾內,輸入已下指令,進行漢化 ``` sudo gitlab-ctl stop patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../v12.3.5-zh.diff sudo gitlab-ctl reconfigure ``` ## Gitlab to new server ### old server 1. 關閉GitLab服務 ``` sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq ``` 2. 建立備份 ``` sudo gitlab-rake gitlab:backup:create ``` 3. 檔案 ``` 1./etc/gitlab/gitlab.rb 2./etc/gitlab/gitlab-secrets.json 3. 若有用ssL的話 /etc/gitlab/ssl 4.Gitlab 備份檔所在資料夾 /var/opt/gitlab/backup ``` 檔案複製前檔案權限要開 > [參考網站](https://medium.com/gits-apps-insight/migrating-gitlab-to-another-server-990092c5179) ### new server 1. 備份還原 ``` sudo cp gitlab-old/gitlab* /etc/GitLab sudo gitlab-rake gitlab:backup:restore BACKUP=1555227555_2019_04_14_11.9.8 ``` 2. Restart GitLab and check ``` sudo gitlab-ctl start sudo gitlab-rake gitlab:check SANITIZE=true ``` ### Fix -> git respority 有問題(nullSha1: contains entries pointing to null sha1) ```lua= git fsck //驗證資料庫中的物件是否有效 git ls-tree "" 列出树的内容 依據述內容 git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch src/sqlscript ' --prune-empty --tag-name-filter cat -- --all //git filter-branch来删除null sha1的提交 ``` ### 常用指令 #### Start all GitLab components sudo gitlab-ctl start #### Stop all GitLab components sudo gitlab-ctl stop #### Restart all GitLab components sudo gitlab-ctl restart #### Reconfigure GitLab sudo gitlab-ctl reconfigure #重新編譯並啟動gitlab...