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 youzhibing2094@sina.com yzb2094 青石路
12345678 test1@qq.com test1 測試賬號1 12345678 test2@qq.com 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包方式安裝)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM