1. 程式人生 > >GitLab → 搭建中常遇的問題與日常維護

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包方式安裝)