gitlab之一: gitlab安裝配置使用


參考:  gitlab 安裝和配置

        gitlab下載地址: https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/

       官方教程: https://about.gitlab.com/downloads/

1. gitlab 安裝

實驗環境: ubuntu 14.04.

1.1、下載CE版 gitlab 安裝包

注意要下載ubuntu對應版本的gitlab,  如   trusty(ubntu 14.04的代號),bionic(ubntu 18.04代號),xenial(ubntu 16.04代號).

 

官網下載不下來,用下面的源下載.

wget  https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/gitlab-ce/gitlab-ce_7.14.3-ce.1_amd64.deb  

 

注意:  第一次實驗的是安裝gitlab-ce_7.14.3-ce.1_amd64.deb  ,第二次實驗安裝了  gitlab-ce_11.0.0-ce.0_amd64.deb.安裝過程一模一樣,照樣可以跑起來.

1.2、安裝依賴

debian/ubuntu
sudo apt-get install curl openssh-server ca-certificates postfix
 

1.3、配置postfix郵箱

1、選擇Internet site→使用FQDN默認即可
 

1.4、安裝gitlab安裝包

dpkg -i gitlab-ce_7.14.3-ce.1_amd64.deb

 

1.5、配置gitlab

sudo mkdir -p /etc/gitlab
sudo touch /etc/gitlab/gitlab.rb
sudo chmod 600 /etc/gitlab/gitlab.rb
sudo nano /etc/gitlab/gitlab.rb
 
把external_url改成部署機器的域名或者IP地址。
external_url 'http://gitlab.chepingan.com'
 
重新配置啟動gitlab
sudo gitlab-ctl reconfigure
 

1.6.查看狀態

sudo gitlab-ctl status
 
在瀏覽器中使用external_url中地址登陸
 
http://gitlab.chepingan.com/
 
默認管理員用戶名和密碼:
Username: root
Password: 5iveL!fe

 登錄不上可能是防火牆的問題.

第一次啟動的時候,需要初始化大量的東西,經常會出現502錯誤,通常是由於內存不足的原因導致,所以需要准備好足夠的內存。官方推薦生產環境中使用2G內存,2核CPU。虛擬機中測試1GB內存基本就可以了。

 

管理員登陸,在網頁設置中,去掉Sign-up enabled的勾選,拒絕注冊
 
使用管理員可以添加用戶和組
 
 

2. 漢化包的安裝

這里漢化的是11.0.0 版本.
 
查看版本: 
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
11.0.0
 
漢化包下載地址:
 
8.8 以前: git clone https://gitlab.com/larryli/gitlab.git
 
8.8 以后:git clone  https://gitlab.com/xhang/gitlab.git

2.1   第一種漢化方法(沒成功尷尬)

我這里11.0.0漢化包的下載。因為上面默認的不是下載11.0.0的漢化包(zh結尾的分支),需要自己指定分支來下載.
git clone https://gitlab.com/xhang/gitlab.git -b 11-0-stable-zh
 
下載下來名字是 gitlab  .
 
漢化:
 
gitlab-ctl stop
 
cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
 
\cp -rf gitlab/*  /opt/gitlab/embedded/service/gitlab-rails/
 
gitlab-ctl start
 
訪問的時候出現了502,
 
 

2.2 第二種漢化方法(成功耶)

參考:  https://blog.whsir.com/post-3081.html

 

Gitlab中文社區版地址:https://gitlab.com/xhang/gitlab

1、克隆版本庫

cd /usr/local/src/
git clone https://gitlab.com/xhang/gitlab.git

 

2、獲取當前Gitlab版本

gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)

 

3、比較漢化標簽和原標簽,導出patch用的diff文件

cd /usr/local/src/gitlab
git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff

 

4、先停止gitlab

gitlab-ctl stop

 

5、導入漢化補丁

patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../11.0.0-zh.diff

 

PS:如果出現類似以下內容,則按住回車,一直跳過就行了

can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js
|index eb0f06e..73e4833 100644
|--- a/app/assets/javascripts/awards_handler.js
|+++ b/app/assets/javascripts/awards_handler.js
--------------------------
File to patch:

 

6、然后啟動gitlab

 

3. gitlab 的使用

3.1 關閉注冊功能 

在gitlab的首頁點擊,  配置GitLab ---->設置---->Sign-up restrictions   里面去設置.

 3.2 gitlab組件和目錄

組件

 

root@A1-Back:/# gitlab-ctl  status
run: alertmanager: (pid 30583) 1901863s; run: log: (pid 11484) 1989543s
run: gitaly: (pid 30600) 1901856s; run: log: (pid 11464) 1989544s
run: gitlab-monitor: (pid 30612) 1901856s; run: log: (pid 11439) 1989544s
run: gitlab-workhorse: (pid 30625) 1901855s; run: log: (pid 11446) 1989544s
run: logrotate: (pid 31410) 1011s; run: log: (pid 11396) 1989545s
run: nginx: (pid 30641) 1901855s; run: log: (pid 11395) 1989545s
run: node-exporter: (pid 30643) 1901855s; run: log: (pid 11465) 1989544s
run: postgres-exporter: (pid 30729) 1901854s; run: log: (pid 11575) 1989542s
run: postgresql: (pid 30735) 1901854s; run: log: (pid 11377) 1989545s
run: prometheus: (pid 30743) 1901853s; run: log: (pid 11456) 1989544s
run: redis: (pid 30754) 1901853s; run: log: (pid 11376) 1989545s
run: redis-exporter: (pid 30758) 1901852s; run: log: (pid 11435) 1989544s
run: sidekiq: (pid 30774) 1901852s; run: log: (pid 11379) 1989545s
run: unicorn: (pid 30781) 1901852s; run: log: (pid 11378) 1989545s

 

目錄

 

3.3 gitlab 權限管理

參考:  https://www.cnblogs.com/zangxueyuan/p/9222014.html

參考:  gitlab權限管理--issue管理

1. 添加user

2. 添加 Group,往Group中添加user並且設定user的權限. 

3. 創建project,項目的 url  組成如下:

http://ip  +  Groups/Users 的名字 +  項目名字.

 

 

3.4 gitlab 命令使用

 參考: https://blog.csdn.net/wh211212/article/details/72627803

語法:

gitlab-ctl command (subcommand)

Service Management Commands

start

啟動所有服務

stop

關閉所有服務

restart

重啟所有服務

status

查看所有服務狀態

tail

查看日志信息

service-list

列舉所有啟動服務

graceful-kill

平穩停止一個服務

 

例子:

#啟動所有服務

[root@gitlab ~]# gitlab-ctl start

#啟動單獨一個服務

[root@gitlab ~]# gitlab-ctl start nginx

#查看日志,查看所有日志

[root@gitlab ~]# gitlab-ctl tail

#查看具體一個日志,類似tail -f

[root@gitlab ~]# gitlab-ctl tail nginx

General Commands

help

幫助

reconfigure

修改配置文件之后,需要重新加載下

show-config

查看所有服務配置文件信息

uninstall

卸載這個軟件

cleanse

刪除gitlab數據,重新白手起家

例子:

#顯示所有服務配置文件

[root@gitlab ~]#gitlab-ctl show-config

#卸載gitlab

[root@gitlab ~]#gitlab-ctl uninstall

 

DatabaseCommands(慎重使用)

Database Commands

pg-upgrade

更新postgresql版本

revert-pg-upgrade

還遠先前的(離現在正在使用靠近的版本)一個數據庫版本

例子:

#升級數據庫

[root@gitlab ~]# gitlab-ctl pg-upgrade

Checking for an omnibus managed postgresql: OK

Checking if we already upgraded: OK

The latest version 9.6.1 is already running,nothing to do

#降級數據庫版本

[root@gitlab ~]# gitlab-ctl revert-pg-upgrade

 

3.3 gitlab 配置詳解

名稱

配置路徑

gitlab配置文件

/etc/gitlab/gitlab.rb

unicorn配置文件

/var/opt/gitlab/gitlab-rails/etc/unicorn.rb

nginx配置文件

/var/opt/gitlab/nginx/conf/gitlab-http.conf

gitlab倉庫默認位置

/var/opt/gitlab/git-data/repositories

 

 

修改web端口

如果80和8080端口被占用可以修改

[root@gitlabgitlab_pack]# vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb

listen"127.0.0.1:8080", :tcp_nopush => true #這一行端口修改為你要端口

#修改nginx端口

[root@gitlabgitlab_pack]# vi /var/opt/gitlab/nginx/conf/gitlab-http.conf

server{ #這里的80端口修改為你所需要的端口

  listen *:80;

注:

       只要修改了配置文件一定要重新加載配置

 

修改Prometheus端口

#Prometheus默認端口是9090

[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb

#根據自己情況自行修改成自己需要的port

 

修改項目工程數量

默認安裝好,你能創建的項目,只能創建10個

#第一種方式修改

[root@gitlab gitlab_pack]# vi/opt/gitlab/embedded/service/gitlab-rails/config/initializers/1_settings.rb

 

Settings.gitlab['default_projects_limit'] ||=10

修改成你自己所需要的參數,保存

Settings.gitlab['default_projects_limit'] ||=10000

#重新初始化

[root@gitlab postgresql]# gitlab-ctlreconfigure

#查看修改之后項目數量

 

注:

       這個是在安裝完gitlab之后修改,如果已經使用一段時間,在修改項目的數量,需要你自己在自己的用戶下修改,第二次初始化,會縮短時間

#第二種方式修改

#首先登錄gitlab
 
#點擊Adminstrator這個用戶 

#點擊編輯

 

#關閉監控

#關閉服務

[root@gitlab gitlab_pack]# gitlab-ctl stop

[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb

把true改成false

 

prometheus_monitoring['enable']= true

prometheus_monitoring['enable']= false

#保存

#重新加載配置文件

[root@gitlabgitlab_pack]# gitlab-ctl reconfigure

 

4. gitlab 代碼管理

參考: http://lishao378.blog.sohu.com/323704341.html   個人開發管理

    https://blog.csdn.net/u012764358/article/details/62886427  sourcetree 和 gitlab的結合

    https://blog.csdn.net/predict_wise/article/details/77898577   團隊協作開發

 

4.1.  gitlab管理使用的兩種方式(http協議和ssh) 

使用http協議的時候,每次pull,push 等都需要輸入 用戶名和密碼(不同的用戶不同的權限)

 

使用ssh免密碼的話,每個用戶必須先上傳密鑰。不同的密鑰對應不同的用戶所以權限也是不一樣的。(假如某個開發者得到項目管理者的密鑰對,他在本地認證使用的是這個密鑰,那么就有了項目管理者的權限,比如管理master,所以每個用戶用自己的密鑰對)

 

4.2  gitlab團隊協作開發

1. 使用fork

  • 項目負責人在gitlab上新建一個項目,並分享URL給開發人員
  • 開發人員在負責人的gitlab項目頁面上點擊“fork”按鈕,將此項目fork到自己的gitlab上,這相當於是從負責人那拷貝了一份項目副本,無論開發人員如何修改代碼都不會影響負責人那master分支上的代碼
  • 然后開發人員可以根據自己的項目分工,像對待普通項目一樣做clone、add、commit、push等操作
  • 如果開發人員人為一個小模塊做好了,可以點擊“pull request”按鈕,向負責人發送代碼合並請求,要合並的代碼文件也會以列表的形式同時發送給負責人,此時負責人會看到開發人員的請求,經審核如果代碼沒問題則會合並模塊,並向開發人員發送確認合並的通知
  • 有的時候項目負責人也在開發,在不斷更新項目,如何也讓自己Github上的也跟着同步,這里參考這篇博文: 
    http://blog.csdn.net/sjt19910311/article/details/50596714

 

2. 不使用fork

  1. 負責人為開發人員分別創建開發分支(namedev_branch)

    • 項目負責人在gitlab上新建一個項目,並為每一個開發人員創建一個開發分支(namedev_branch)
    • 開發人員clone項目之后,經git branch檢查發現本地只有master分支,因此也需要把屬於自己的開發分支也一起獲取下來

    • 切換到namedev_branch分支

       
    • 之后的操作如同對待普通項目一樣

 

  2. 負責人不為開發人員分別創建開發分支 (開發者自己創建)

    雖然項目負責人不分別為開發人員創建分支,但是需要把他們添加到一個team中,否則開發人員在向項目push自己的開發分支時遇到權限錯誤

  • 開發人員在把項目clone之后需要為自己新建一個開發分支(namedev_branch),因為經由git branch查看發現本地只有master分支

  • 之后的操作如同對待普通項目一樣(是在namedev_branch分支進行操作        

  •     

      

之后,項目負責人可以在項目的gitlab主頁上看到每個開發人員的工作進度,並考慮何時merge開發人員的分支到master分支上以完善項目

 

4.3  實驗1: 多人協作開發。不用fork

1. 關閉注冊功能(管理員權限)

2. 管理員添加用戶(給項目負責人創建組的權限), 並給每個用戶添加一個 ssh 密鑰(密鑰可以管理員這邊生成,也可以用戶自己生成發給管理員)。每個用戶一個密鑰對(不同的密鑰在 push 等操作的時候權限是不同的,你用的哪個用戶的密鑰連接,你就有哪個用戶的權限, ssh密鑰會默認添加到 git用戶的authorized_keys文件中.

3. 項目負責人 創建項目,  初始化項目,使項目擁有master分支,開啟分支保護(master分支是沒人開啟的,只有項目管理人可以直接操作master分支)。給該項目添加成員分配權限(一般是開發者權限),並且給每個成員創建一個分支。 也可以不給項目添加成員而是在創建項目的時候選擇組。

4. 開發者克隆版本庫,在自己的分支上開發,提交等操作。開發者想要將自己的分支合並到master分支,需要登錄gitlab發起合並請求,負責人審核后處理合並請求. 

 

4.4 用fork

1.  管理員 禁用注冊功能,建立開發人員帳號,給權限。可以給項目leader多一點權限。

2.  leader創建項目並且初始化項目,使其擁有master分支。 將項目url給開發人員

3. 開發人員用自己的帳號登錄,並且 派生 源項目。

4. 開發人 clone 派生的項目到本地進行開發,開發一個功能后發起合並請求。

5. 如何讓自己 派生的空間 的代碼和 源作者的代碼同步, 參考: http://blog.csdn.net/sjt19910311/article/details/50596714

 

5. git客戶端(TortoiseGit)Windows下的使用

參考: https://www.jianshu.com/p/9beb880332ba

         https://blog.csdn.net/bird3014/article/details/72355648

   https://www.cnblogs.com/ywlaker/p/6344334.html

  https://www.cnblogs.com/wntd/p/5889118.html

6. gitlab 集群

 


免責聲明!

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



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