Gitlab被各大企業廣泛地用於專案管理上,他可以追蹤每個project的進度設定milestone開sprint、分配不同team相互的權限,甚至在同一個project裡面也能有不同角色的權限區分,CI/CD等功能也能很方便地去實現。
因為過去在使用的路上遇到各式各樣的問題,我把相關經驗整合在這裡,希望看到文章的朋友可以順利跨過這些難關,如果我的文章幫你解決問題歡迎多按幾次拍手。
此Gitlab安裝時的ubuntu版本為16.4,指令如有不同,請自行google,如果你願意,也非常歡迎回覆在下方分享您的經驗。
建議硬體需求
RAM至少4GB,以百人公司規模來說建議8GB以上大家使用上會順暢很多(如果你用官方建議2GB可能會連安裝都卡住,這部分有親自體驗過)
安裝前置作業
- 因為git在連線時需要使用ssh連線進行安全性驗證 所以需要openssh-server ca-certificates
- gitlab支援寄信通知或是驗證功能所以需要信箱伺服器支援需要postfix
curl openssh-server ca-certificates postfixsudo apt-get install curl openssh-server ca-certificates postfix
安裝gitlab
- gitlab下載目前運行版本指令
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashsudo apt-get install gitlab-ce=11.1.4-ce.0
2. 單純下載封包
wget — content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_11.1.4-ce.0_amd64.deb/download.deb
建議要備份下載的deb檔案到自己的硬碟,如果日後災難復原時會用上,像我是備份到公司的NAS Server上面
gitlab環境配置
sudo gitlab-ctl reconfigure
如果環境沒問題,上面這個指令會順順的過去;但如果做了版本升級或是降級,所有的環境都可能會產生或大或小的bug,官方並沒有提供一個很健全的解決方案,建議未來的使用者除非很有把握不然建議不要隨意升級。
筆者在之後新版的gitlab有更新成功,但是舊版直接升級會遇到許多問題整理部份如下
Gitlab 500 Error: PG::ConnectionBad:
https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1637
/opt/gitlab/embedded/bin/bundle:23:in `<main>’
https://gitlab.com/gitlab-org/omnibus-gitlab/issues/3185
輸入以下指令可獲得版本資訊:
sudo gitlab-rake gitlab:env:info
設定對外網址
輸入下面指令後尋找external_url,將其修改成自己的url與開放的port
sudo vi /etc/gitlab/gitlab.rb
每次修改過這個檔記得要重新配置才會生效
sudo gitlab-ctl reconfigure
(到這一部已經可以使用gitlab了,但是如果要寄信相關還要做如下設定)
寄信相關設定
sudo vi /etc/gitlab/gitlab.rb
把下面這些貼到最下面後sudo gitlab-ctl reconfigure就生效了
可下指令測試是否設定成功
sudo gitlab-rails consoleNotify.test_email(‘email@example.com’, ‘test’, ‘test’).deliver_now
但是當gitlab的server有設定雙網卡(同時有內網以及外網)的時候就有可能出現email無法寄送的狀況,這個時候你要確定你外網的優先權必須要高於內網。
看mail錯誤log
vi /var/log/mail.log
改mail postfix設定
vi /etc/postfix/main.cfpostfix reload
ssh對外設定
如果你對外網址的22 port已經被其他專案佔用了(ex:我公司),所以要將預設ssh的22 port改為轉址的223 port(或是其他你希望的),一樣是在sudo vi /etc/gitlab/gitlab.rb設定,這樣在gitlab才能用ssh下載
gitlab_rails[‘gitlab_shell_ssh_port’] = 223
nginx設定
讓Gitlab可通內網外網
在gitlab分配兩張網卡後需要完成以下步驟
先看新增的網卡名稱
cd /proc/sys/net/ipv4/conf
確認完網卡後將他們編輯加入
sudo vi /etc/network/interfacesauto ethXXXiface ethXXX inet dhcp
改完後
sudo /etc/init.d/networking restart
用ifconfig查看是不是抓到
設定路由可以透過閘道連通
sudo /sbin/route add 10.1.1.1(目標內網ip) gw 10.1.1.254(內網閘道) dev ens192(網卡)
設定NAS上此共享資料夾必須符合NFS設定可參閱這篇文章
確認是否可連通,並觀看有哪些資料夾
sudo apt install nfs-commonshowmount -e 10.1.1.1(目標內網ip)
將NAS上的共享資料夾掛載到ubuntu上面
sudo mount -t nfs 10.1.1.1(目標內網ip):ServerGit /home/your_path/gitlab_backup
確認是否掛載
df -h
gitlab定時自動備份到NAS的設定
在/etc/gitlab/gitlab.rb設定gitlab的備份路徑
gitlab_rails[‘backup_path’]=”/home/your_path/gitlab_backup/”
每個月1日創建本月的資料夾的script
now_month=”$(date +’%Y%m’)”#echo “$now_month”cd /home/your_path/gitlab_backupmkdir $now_month
將產生的backup檔案轉移到月份資料夾底下的script,並刪除比較久的資料
mv /home/your_path/gitlab_backup/*.tar /home/your_path/gitlab_backup/$(date +’%Y%m’)find /home/your_path/gitlab_backup/$(date +’%Y%m’) -name “*gitlab_backup.tar” -mtime +3 -exec rm -rf {} \;find /home/your_path/gitlab_backup/$(date “+%Y%m” -d ‘1 month ago’) -name “*gitlab_backup.tar” -mtime +3 -exec rm -rf {} \;
排程設定
sudo crontab -e1 0 1 * * sh /home/your_path/script/mkdir.sh1 1 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create1 2 * * * sh /home/your_path/script/mv_to_month.sh
Gitlab 的學問博大精深,希望這篇文章讓初學者上手時更加輕鬆。
▶︎ 如果這篇文章有幫助到你1. 可以點擊下方「Follow」來追蹤我~
2. 可以對文章拍手讓我知道 👏🏻你們的追蹤與鼓勵是我繼續寫作的動力 🙏🏼▶︎ 如果你對工程師的職涯感到迷茫1. 也許我在iT邦幫忙發表的系列文可以給你不一樣的觀點 💡
2. 也歡迎您到書局選購支持,透過豐富的案例來重新檢視自己的職涯