git倉庫之gitlab搭建使用

1874發表於2020-10-11

  一、簡介

  GitLab 是一個用於倉庫管理系統的開源專案,使用git作為程式碼管理工具,並在此基礎上搭建起來的web服務。類似github,常用在企業內部做git私有倉庫使用;

  二、gitlab安裝

  系統環境準備

  最小化安裝centos7,我們需要做如下配置

  1、安裝基礎包

yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y
yum install curl policycoreutils openssh-server openssh-clients postfix -y

  2、新增epel源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

  3、關閉防火牆

systemctl  stop firewalld
systemctl  disable firewalld

  4、關閉selinux

sed -i '/SELINUX/s/enforcing/disabled/' /etc/sysconfig/selinux
setenforce 0

  配置好系統環境,我們就可以來安裝gitlab了

  安裝gitlab我們可以配置gitlab的yum源,然後用yum安裝,也可以直接去倉庫下載rpm包,然後再使用yum安裝都可以

  配置gitlab-ce的yum源

[root@node06 ~]# cat /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

[root@node06 ~]# 

  驗證:用yum info gitlab-ce看看是否能夠查詢到gitlib-ce包的資訊

  提示:如果用yum info gitlab-ce能夠查詢到gitlab-ce的資訊,說明我們的gitlab-ce的yum倉庫配置沒有問題;接下來我們就可以使用yum 來安裝gitlab-ce;當然如果你覺得倉庫中的gitlab版本太新,想用其他版本,我們也可以去倉庫地址中找相應的rpm下載進行安裝;

  安裝gitlab-ce

[root@node06 ~]# yum install -y gitlab-ce
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package gitlab-ce.x86_64 0:13.4.3-ce.0.el7 will be installed
--> Processing Dependency: policycoreutils-python for package: gitlab-ce-13.4.3-ce.0.el7.x86_64
--> Running transaction check
---> Package policycoreutils-python.x86_64 0:2.5-34.el7 will be installed
--> Processing Dependency: policycoreutils = 2.5-34.el7 for package: policycoreutils-python-2.5-34.el7.x86_64
--> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-34.el7.x86_64
--> Processing Dependency: libsemanage-python >= 2.5-14 for package: policycoreutils-python-2.5-34.el7.x86_64
……省略部分內容……
Installed:
  gitlab-ce.x86_64 0:13.4.3-ce.0.el7                                                                        

Dependency Installed:
  audit-libs-python.x86_64 0:2.8.5-4.el7                 checkpolicy.x86_64 0:2.5-8.el7                    
  libcgroup.x86_64 0:0.41-21.el7                         libsemanage-python.x86_64 0:2.5-14.el7            
  policycoreutils-python.x86_64 0:2.5-34.el7             python-IPy.noarch 0:0.75-6.el7                    
  setools-libs.x86_64 0:3.3.8-4.el7                     

Dependency Updated:
  audit.x86_64 0:2.8.5-4.el7            audit-libs.x86_64 0:2.8.5-4.el7   libsemanage.x86_64 0:2.5-14.el7  
  policycoreutils.x86_64 0:2.5-34.el7  

Complete!
[root@node06 ~]# 

  配置gitlab-ce

  提示:如果沒有其他要求,我們配置訪問gitlab的地址就可以直接啟動gitlab,通常除了配置external_url外,我們可能還需要用到傳送郵件的需要;比如使用者修改密碼通過郵件的形式修改;

  配置gitlab-ce郵件傳送

  首先我們要有一個網際網路郵箱地址,然後登入到網際網路郵箱,開啟smtp功能,我這裡以163的郵箱為例,其他郵箱開通smtp的方式都是大同小異

  提示:這裡可以用手機直接掃二維碼,也可以點選手動發簡訊;用手機掃二維碼直接生成簡訊內容和收件人,然後傳送簡訊後再點選我已傳送;

  提示:如果是手動傳送簡訊,就用你註冊郵箱留到手機號,傳送以上簡訊內容即可,然後點選我已傳送;

  提示:最後簡訊驗證沒有問題,它會給我們生成一個授權碼,我們把這個授權碼要記住,然後在gitlab中配置時需要用到這個授權碼;

  gitlab-ce配置郵件通知

  提示:這裡需要注意一點,如果我們要使用tls加密方式傳送郵件,那麼我們上面的smtp的埠就要更改為465,並且開啟後面的smtp_tls為true;儲存上面的配置資訊後,我們需要使用gitlab-ctl reconfigure來初始化gitliab;

  傳送郵件的配置

git倉庫之gitlab搭建使用
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "gitlab_sev@163.com"
gitlab_rails['smtp_password'] = "WCNIFZJFQFFYZDCI"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
user['git_user_email'] = "gitlab_sev@163.com"
gitlab_rails['gitlab_email_from'] = 'gitlab_sev@163.com'
View Code

  初始化gitlab

[root@node06 ~]# gitlab-ctl reconfigure

  提示:這個初始化的過程有點長,我們耐心等待就好;

 

  提示:初始化完成後,它預設就把對應的服務啟動起來了;我們就可以直接用瀏覽器訪問剛才配置的url;它上面之所以初始化很久,是因為它後面要啟動配置一堆服務;我們可以使用gitlab-ctl status來檢視,它到底啟動了那些服務;

  檢視gitlab的狀態

  用瀏覽器訪問宿主機的80埠

  提示:第一次訪問,它會讓我們先更改密碼;我們配置新密碼後單擊下面的藍色按鈕提交密碼;這個是管理員的密碼;這裡需要注意,我們的密碼必須要大於8位,小於8位它會說我們給的密碼太短了;

  用root登入

  提示:gitlab預設管理員使用者是root,密碼就是我們剛才設定的密碼 ;

  預設登入後的首頁

  到此gitlab就正常執行起來了

  註冊帳號

  提示:這裡是讓我們選擇一個角色;這裡面有很多角色,我們選擇一個即可;

  提示:到此,tom使用者就註冊併成功登入到gitlab上了;後續tom使用者就可以登入自己的帳號在上面建立專案,組等等操作;

  關閉帳號註冊功能

  提示:用root帳號登入,點選admin area

  提示:把紅框前的對勾去掉,然後點選下面的save changes;

  驗證:現在退出root帳號,看看登入介面是否還有註冊介面?

  提示:可以看到註冊介面就沒有了;這樣做主要可以統一管理的目的;如果作為一個私有倉庫,應該由管理員統一管理帳號、許可權;這樣做也是一個比較安全的做法;

  使用root使用者新增帳號

  提示:登入root帳號,點選上面的小扳手,然後點選newuser,就會彈出新增帳號的介面;

  提示:填寫好帳號名和郵箱後,直接點選後面的create user即可;後面的訪問許可權可以執行設定,如果是管理員選擇後面的admin級別即可;

  檢視郵件

  提示:我們點選建立使用者以後,gitlab就會根據我們填寫的郵件地址,給對應郵件地址傳送郵件;如上所示;我們設定密碼就可以直接點選上面的連線,直接設定密碼即可,如下;

  提示:把密碼設定以後,點選change your password即可;

  提示:我們設定了密碼以後,gitlab會發郵件給我們說密碼已經設定,登入點選那個那個地址;如上圖所示;我們點選上面的連線,就可以跳轉到gitlab的登入介面;然後登入剛才建立的使用者和設定的密碼就好;

  修改使用者密碼

  提示:在root使用者新建使用者後的介面上,點選edit,就可給剛才新建的使用者設定密碼;或者用root使用者登入,點選上面的小扳手,找到下面的使用者名稱,然後點選,也可以跳轉到上面的介面;如下

  提示:點選對應的使用者名稱稱,就可以跳轉到山上一個圖的介面,然後我們在點選edit進行編輯即可;

  提示:我們輸入兩次相同的密碼後,點選下方的save changes即可把對應使用者的密碼修改成我們剛才輸入的密碼;

  提示:管理員修改密碼後,gitlab會傳送一份郵件給使用者,說管理員把密碼重置了;點選連結可以登入;

  提示:使用jerry登入,它會提示我們修改密碼,我們把當前密碼寫上,然後在後面再寫新密碼,點選set new password即可;

  除上面管理員協助修改密碼,我們也可以去登入介面點選忘記密碼進行修改

  提示:這裡的email要填寫我們對應帳號後的郵件地址,然後點選reset password;

  提示:這裡提示我們如果我們填寫的郵件地址在我們資料庫裡能夠找到,就會傳送重置密碼的郵件;顯然,如果資料庫裡沒有對應的郵件地址,也就不能給我們傳送郵件;

  提示:收到郵件後,我們可以點選reset password,然後他會跳轉到重置密碼的介面;

  建立group

  提示:使用root使用者登入gitlab,然後點選上面的小扳手,點選new group,就可以跳轉到建立專案的介面;

  提示:建立組的時候,我們要選擇私有,網際網路,還是公開;如果我們選擇私有,就表示只有在組裡的成員才能夠看到關聯到組中的專案,如果是公開,表示登入的使用者都看得到;網際網路指所有使用者都看得到,即便沒有登入;選擇好,我們就可以點選下面的create group按鈕;

  提示:建立好組以後,我們要關聯使用者到這個組裡來,並且指定其在組裡的許可權,這裡的許可權有guest,ower等等,如果不清楚個角色的許可權,可以點選上面的here哪裡;選擇好使用者和角色以後,就可以點選add users to group;

  提示:把使用者關聯到對應組裡以後,使用者會收到一封郵件,如果我們不想待在對應的組裡,可以選擇離開組;如下

  建立專案

  提示:使用root使用者登入gitlab,然後點選上面的小扳手,點選new project,就可以跳轉到建立專案的介面;

  提示:這裡和建立組有點類似,這裡需要注意一點,我們要選擇建立的專案屬於組還是使用者,如果是組就選擇組名,對於組中的成員都會對該專案擁有對應角色的許可權;然後選擇好以後,點選create project;

  提示:專案建立好以後,我們就可以克隆專案到本地了;如上覆制對應協議的連線地址,在本地執行git clone 就可以把對應的專案克隆到本地;我們也可以直接在專案中新增檔案等等;在專案的下面它告訴我們在命令列中如何克隆專案,提交等等操作;

  克隆剛才建立的專案到本地

  提示:這裡使用git clone克隆,它要求我們輸入使用者名稱和密碼,使用者名稱和密碼驗證正確後,我們就可以把對應的專案克隆到本地;這裡警告我們所我們克隆的專案是一個空倉庫;

  進入剛才克隆的倉庫,新增檔案

  將本地倉庫push到遠端倉庫

  提示:這裡提示我們沒有指定分支;解決辦法明確指定把本地的origin分支 push到遠端的master分支;

  驗證:在gitlab上,看看我們push的專案中是否有passwd檔案?

  到此,在客戶端使用git命令可以將gitlab上建立的專案拖到本地,也可以將本地倉庫push到遠端倉庫;

  在gitlab上更改passwd檔案內容

  在本地使用git fetch 取遠端倉庫更新

[root@node06 test]# git fetch
Username for 'http://192.168.0.46': jerry
Password for 'http://jerry@192.168.0.46': 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From http://192.168.0.46/test-app/test
   fecc791..08cbf1f  master     -> origin/master
[root@node06 test]#

  提示:git fetch命令是從遠端倉庫取更新到本地,但並不與本地分支進行合併;

  將更新應用到本地

  取回遠端伺服器更新,而後與本地的指定分支合併

  提示:以上使用git pull命令是將遠端倉庫更新取回,並和本地的master合併;預設不加後面的遠端分支和本地分支,預設遠端是origin,本地是master;如果本地或遠端有多個分支需要明確指出;

  驗證:看看本地的passwd是否變了?

  在本地新建分支,然後push到遠端倉庫

  提示:從上面反饋的顯示在遠端倉庫生成了一個新的分支;

  驗證:去遠端gitlab上檢視是否有devel分支生成?對應分支下是否有fstab和passwd檔案?

  刪除遠端倉庫分支

[root@node06 test]# git push origin :devel
Username for 'http://192.168.0.46': jerry
Password for 'http://jerry@192.168.0.46': 
To http://192.168.0.46/test-app/test.git
 - [deleted]         devel
[root@node06 test]# 

  驗證:檢視遠端gitlab對應倉庫是否還有devel分支?

  提示:可以看到gitlab上的devel分支就沒有了;到此gitlab經過測試都是正常工作的,後續我們就可以使用我們搭建的gitlab來管理專案,程式碼管理;

相關文章