GitLab → 搭建中常遇的問題與日常維護
開心一刻
隔壁有一個80多歲的老大爺,昨天在小區的一棵樹下發現一條黑色的蛇,凍僵了,大爺善心大發,就把蛇揣在了懷裡,想給它一點溫暖。
今天一大早看到大爺在樹上掛了一個牌子,寫到:不準隨地大小便!
搭建中遇到的問題
樓主的搭建過程算比較順利(GitLab → 搭建私有的版本控制的託管服務平臺),沒有遇到太多問題,只遇到了如下兩個問題
安裝卡住
這基本是記憶體不足導致
樓主一開始比較任性,沒按官方的推薦(記憶體最少 4G)來,弄了個 2G 記憶體,一頓操作猛如虎,定睛一看原地杵,特麼的竟然像泰山一樣穩,進度在那一動不動
直接卡住是比較煩的,因為不能直觀地看出是否真的是卡住了,還是在安裝中,只能憑感覺、經驗來判斷;如果出現如下類似錯誤資訊
* execute[clear the gitlab-rails cache] action run ================================================================================ Error executing action `run` on resource 'execute[clear the gitlab-rails cache]' ================================================================================
這也是記憶體不足所致
502
當我們成功安裝、配置 GitLab 後,不一定就萬事大吉了,訪問 GitLab 的時候可能會出現如下錯誤
GitLab 所需記憶體最低為 4G,若伺服器配置太低會出現 502 錯誤
GitLab 新裝或重啟後,需要等待 1 分鐘才能使用
對於單核 CPU 的伺服器,Unicorn and Sidekiq 服務啟動最少需要一分鐘
這個問題樓主沒有遇到,因為開始的時候,樓主就給虛擬機器分了 4 核 CPU
那麼說白了,只要我們的虛擬機器(或真實機器)環境足夠乾淨,硬體資源(記憶體和 CPU)足夠好,就不太會出現如上的錯誤
日常維護
重置管理員的密碼
由於 root 賬戶用的很少,所以我們容易忘記它的密碼,但不代表它不重要,類似 linux 的 root 賬戶;一旦我們忘記了 root 賬號的密碼,我們需要知道重置的方法,方法如下
1、進入 GitLab 控制檯
[root@localhost ~]# gitlab-rails console -e production
GitLab 版本不同,命令會有所不同(網上說的而基本都是 gitlab-rails console production ),推薦大家直接上 GitLab 官網去找對應版本的命令
當出現如下資訊表示我們成功登入控制檯
[root@localhost ~]# gitlab-rails console -e production -------------------------------------------------------------------------------- GitLab: 12.8.7 (b679f55a199) FOSS GitLab Shell: 11.0.0 PostgreSQL: 10.12 -------------------------------------------------------------------------------- Loading production environment (Rails 6.0.2) irb(main)
執行命令: user = User.where(id: 1).first ,此 user 則表示 root 使用者
3、修改密碼
執行命令: user.password = 'secret_pass' 修改密碼, user.password_confirmation = 'secret_pass' 確認密碼
4、儲存密碼
執行命令: user.save!
5、退出控制檯
執行命令: exit
完整過程類似如下:
官方示例:How to reset your root password
重置成功後,我們就可以用新密碼來登入 root 賬號了
偏好設定
GitLab 提供了很多的設定,樓主這裡偷個懶,只教大家如何設定語言(雖然樓主知道大家的英語都很棒,但我相信大家的中文更棒),當語言變成我們最擅長的中文時,相信大家都能很好的進行偏好設定了;語言設定過程如下
看著熟悉的中文,倍感親切,但是要注意: 此功能當初處於實驗階段,翻譯尚未全部完成 ,也就是說語言功能尚未全部完成
批量新增賬號
我們用 SVN 或 Git 的時候,賬號往往不是自己註冊的,而是統一分配的;而我們搭建的又是私服,不對外提供服務,所以無需註冊功能,那麼我們用 root 賬號來關閉註冊功能,很簡單,流程如下
取消 Sign-up enabled 前的複選框勾選,儲存就好了
退出登入後可以發現,登入頁的註冊功能沒了,既然不能註冊了,那麼就需要通過 root 使用者來新增賬號了
新增單個賬號的話,可以直接通過管理中心來新增,具體如下圖
單個賬號的新增還可以通過 api 來實現,具體可檢視:Users API
如果賬號少的話,通過單個新增的方式來新增是可以的,如果賬號特別多的話,那就有點費時了,所以需要通過指令碼的方式來批量新增賬號了,具體我們往下看
1、建立賬戶文字
在 /opt 目錄下建立 account_info.txt
12345678 [email protected] yzb2094 青石路
12345678 [email protected] test1 測試賬號1 12345678 [email protected] test2 測試賬號2
4 列分別代表:登入密碼 郵箱 使用者名稱 別名
一行代表一個賬戶
2、獲取 root 使用者的 private_token
獲取方式比較簡單,如下圖所示
如果訪問令牌已經存在,則不需要新建;示例中的令牌: cwUxu3-2kiamVyKJQpW5
3、建立執行指令碼
在 /opt 目錄下建立 batch_add_account.sh
#!/bin/bash #gitlab使用者文字 accountinfo="account_info.txt" while read line do password=`echo $line | awk '{print $1}'` mail=`echo $line | awk '{print $2}'` username=`echo $line | awk '{print $3}'` name=`echo $line | awk '{print $4}'` curl -d "password=$password&email=$mail&username=$username&name=$name&private_token=cwUxu3-2kiamVyKJQpW5" "http://192.168.0.115/api/v4/users" done < $accountinfo
private_token 的值就是上面 root 的訪問令牌
4、執行指令碼
賦予 batch_add_account.sh 可執行許可權: [root@localhost opt]# chmod +x /opt/batch_add_account.sh
再執行 batch_add_account.sh: [root@localhost opt]# sh /opt/batch_add_account.sh
然後我們就可以在使用者列表介面看到我們剛剛新增的賬戶了
批量建立使用者,還是通過 Users API 來完成的,也會是說底層還是一個一個新增的
5、新賬戶登入
我們用賬號:yzb2094 登入下,發現登入不了,提示: You have to confirm your email address before continuing.
提示需要郵箱驗證,登入下郵箱,還真有一封驗證郵件
我們點選下其中的連結,完成驗證之後就可以正常登入了,然後我們就可以在 GitLab 建立工程了, 後續操作就與 GitHub、Gitee 一樣了
參考
GitLab Docs
Gitlab快速部署及日常維護(社群版RPM包方式安裝)