Centos 7搭建Gitlab服務器詳細步驟(搭建成功)

目錄

一、 安裝並配置必要的依賴關係

二、添加GitLab鏡像源並安裝gitlab服務器

三 、添加遠程倉庫

四 、修改遠程倉庫

五、查看遠程倉庫

六、推送遠程倉庫

七、克隆遠程倉庫

八、拉取遠程倉庫

九、移除遠程倉庫

十、Git遠程倉庫小結

十一、安裝過程遇見的那些坑

十二服務管理:

十三、Gitlab 漢化


一、 安裝並配置必要的依賴關係

在CentOS系統上安裝所需的依賴:ssh,防火牆,postfix(用於郵件通知) ,wget,以下這些命令也會打開系統防火牆中的HTTP和SSH端口訪問。

注意:用戶不是管理員權限,出現如下警告

用戶不在sudoers文件中此事將被報告

可以使用 su root 切換root權限

1.安裝ssh

sudo yum install -y curl policycoreutils-python openssh-server

 

若出現以下圖片的信息則表示成功

  

2.將SSH服務設置成開機自啓動,安裝命令:sudo systemctl enable sshd  

3.啓動SSH服務,安裝命令:sudo systemctl start sshd

 

4。安裝防火牆(如果已經安裝了防火牆並且已經在運行狀態,則可直接進行第6步)

yum install firewalld systemd -y

 

若出現“完畢!”的字樣,則表示安裝成功

 

5.開啓防火牆,安裝命令:service firewalld  start

 

6.添加http服務到firewalld,pemmanent表示永久生效,若不加--permanent系統下次啓動後就會失效。

sudo firewall-cmd --permanent --add-service=http

 

7.重啓防火牆,安裝命令:sudo systemctl reload firewalld

 

8.接下來,安裝Postfix以發送通知郵件,安裝命令:sudo yum install postfix

 

 

9.將postfix服務設置成開機自啓動,安裝命令:sudo systemctl enable postfix

10.啓動postfix,安裝命令:sudo systemctl start postfix

 

在安裝Postfix期間,可能會出現配置屏幕。選擇“Internet Site”並按enter鍵。使用您的服務器的外部DNS以“mail name”並按enter。如果出現額外的屏幕,繼續按enter鍵接受默認值。

 

 

11.wget 用於從外網上下載插件

檢查系統中是否已經安裝wget,使用命令若出現下圖wget相關版本描述則說明系統中已經安裝wget 若報系統找不到命令說明wget未安裝

 

若wget未安裝則進行安裝,安裝命令:yum -y install wget

12.安裝vim編輯器  安裝命令:yum install vim -y

 

二、添加GitLab鏡像源並安裝gitlab服務器

 

1.添加gitlab鏡像

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm

 

2.安裝gitlab 安裝命令:rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm

安裝過程需要些時間,如果出現下圖,則說明安裝成功。(個人在安裝時並未出現,但是也是成功的)

 

4.修改gitlab配置文件指定服務器ip和自定義端口:

 

vim  /etc/gitlab/gitlab.rb

 

進入編輯器後按“i”鍵進入編輯狀態,修改完畢後,按ESC鍵退出編輯狀態

然後退出並保存,命令輸入“:wq”

ps:注意這裏設置的端口不能被佔用,默認是8080端口,如果8080已經使用,請自定義其它端口,並在防火牆設置開放相對應得端口

 

5.重置並啓動GitLab

 

 

 

執行:

 

gitlab-ctl reconfigure

 

gitlab-ctl restart  

 

提示  "ok: run:"表示啓動成功

 

6.訪問 GitLab頁面

如果沒有域名,直接輸入服務器ip和指定端口進行訪問

初始賬戶: root 密碼:5iveL!fe

第一次登錄修改密碼

 

 

 

 

 7、爲了安全性考慮,需要創建public key

創建key

 

 

[root@git-node1 demo]# ssh-keygen   #一路回車
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
48:94:9a:65:cd:0f:f3:17:c6:dc:3c:28:0a:bb:47:98 root@git-node1
The key's randomart image is:
+--[ RSA 2048]----+
|      .+   o +   |
|     .= = . * +  |
|     =.= * o . . |
|    o.E.o o .    |
|      .oS  .     |
|      . .        |
|       .         |
|                 |
|                 |

 

 

 

  8.複製id_rsa.pub公鑰

1

2

[root@git-node1 demo]# cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyVSAhs+ZBTEwv5nMwyoordV4VBy+DoCyGBJcjqkcfagRyyGUZvS57T4rhgSpz2csMTtxBXAyo0vJltxPr8McsZmcDZ8+t5qr22h9wHULFs5uB5/uZ6CDomm<br>/rVtJjiT2l1Uzh14De1CJDbNRPTCbxvcD5Mi7Ko29epymdt8agYqV2+ROynYaSjqcKxuo6pXD/cGskO7JTOkek2wxmTFOxFQR/Ec1LtVk8ilcesENzMdeU4Nwr2lec6Lr++qKXQuO7a3vB4958Hfhh1JlRI<br>ShDuHBOsFChG+vJim6tl123k7jjePHxJhUORhVMpmD4pMNwN+NYv1ta3J3ZSW6v5uWxw== root@git-node1

  7.添加公鑰至gitlab,如圖1-6-1 

gongyao

圖1-6-1添加服務器公鑰

三 、添加遠程倉庫

1.gitlab創建倉庫,進行遠程同步,如圖1-6-2 
image_1ba739sh72rd1m6a1thm19k7dbi24.png-49kB

圖1-6-2gitlab創建遠程倉庫

 

2.使用git remote 添加遠程倉庫地址,選擇SSH方式克隆。

  1. [root@git-node1 ~]# cd demo/ //必須是git init 初始化倉庫目錄
  2. [root@git-node1 demo]# git remote add origin git@git-node1:root/git_demo.gitxxx

四 、修改遠程倉庫

由於剛開始添加的遠程倉庫寫錯了url,現在通過如下命令進行url修改

  1. [root@git-node1 demo]# git remote set-url origin git@git-node1:root/git_demo.git

五、查看遠程倉庫

如果已經配置了遠程倉庫服務器,可以運行 git remote命令。它會列出你指定每一個遠程服務器的簡寫。

  1. [root@git-node1 demo]# git remote
  2. origin

也可以指定-v選項,會顯示需要讀寫遠程倉庫git保存簡寫名稱以及對應的URL地址。

  1. [root@git-node1 demo]# git remote -v
  2. origin git@git-node1:root/git_demo.git (fetch)
  3. origin git@git-node1:root/git_demo.git (push)

六、推送遠程倉庫

將本地庫更新內容推送至遠程,用git push命令,實際上是將當前分支推送至遠程倉庫。 
由於遠程庫是新建立空的,我們在第一次推送時候,git默認是不會把本地master關聯至遠端的master,所以我們需要加上-u參數,這樣git不但會把本地的master分支內容推送至遠程倉庫的master分支,並且還會將本地的master分支和遠程master分支關聯起來。在以後推送或者拉取時就可以簡化命令。

  1. [root@git-node1 demo]# git push -u origin master
  2. Counting objects: 5, done.
  3. Compressing objects: 100% (2/2), done.
  4. Writing objects: 100% (5/5), 432 bytes | 0 bytes/s, done.
  5. Total 5 (delta 0), reused 0 (delta 0)
  6. To git@git-node1:root/git_demo.git
  7. * [new branch] master -> master
  8. 分支 master 設置爲跟蹤來自 origin 的遠程分支 master。

如果推送衝突可以選擇--force強行推送

  1. [root@git-node1 xuliangwei]# git push origin --force
  2. 如果一次都沒有推送數據,可以選擇—all一次全部推送至遠程服務器
  3. [root@git-node1 xuliangwei]# git push origin --all

 

七、克隆遠程倉庫

如果現在倉庫已經有開發好的項目,需要加入進來開發,可以先clone整個項目。

  1. [root@git-node1 tmp]# git clone git@git-node1:root/git_demo.git
  2. 正克隆到 'git_demo'...
  3. remote: Counting objects: 5, done.
  4. remote: Compressing objects: 100% (2/2), done.
  5. remote: Total 5 (delta 0), reused 0 (delta 0)
  6. 接收對象中: 100% (5/5), done.

八、拉取遠程倉庫

簡單的說,這個命令會訪問遠程倉庫,從中取出你還沒有的數據,或者git pull之後還是沒有的數據。 
此前在添加的遠程倉庫的時候指定了倉庫名origin,命令會自動將其添加爲遠程倉庫並默認以origin爲簡寫。 
所以,git fetch origin相當於從遠程獲取最新版本到本地,然後比較本地master分支和遠程master分支差別最後進行合併。

  1. [root@git-node1 demo]# git fetch origin //拉取主分支最新版本(可以拉取其他分支)
  2. [root@git-node1 demo]# git fetch origin dev //獲取dev分支最新數據

拉取數據,在生產環境中見到比較多的還是git pull相當於是從遠程獲取最新版本並merge到本地

  1. [root@git-node1 xuliangwei]# git pull origin master #拉取主分支最新版本(可以拉取其他分支)
  2. [root@git-node1 xuliangwei]# git pull origin dev //獲取dev分支最新數據

上述命令其實相當於git fetch 和 git merge在實際使用中,git fetch更安全一些,因爲在merge前,我們可以查看更新情況,然後再決定是否合併 
1.6.8更改遠程倉庫

如果想重新命名一個遠程倉庫名稱。將test重命名爲rainbow,可以通過git remote rename進行修改。 
注意:這同時會修改你的遠程分支名字。之前引用test/master的現在會引用rainbow/master 
1.添加新遠程分支,並賦予test爲遠程倉庫名稱

  1. [root@git-node1 git_demo]# git remote add test git@git-node1:root/git_demo.git
  2. [root@git-node1 git_demo]# git remote -v
  3. origin git@git-node1:root/git_demo.git (fetch)
  4. origin git@git-node1:root/git_demo.git (push)
  5. test git@git-node1:root/git_demo.git (fetch)
  6. test git@git-node1:root/git_demo.git (push)

2.修改test名稱爲rainbow名稱

  1. [root@git-node1 git_demo]# git remote rename test rainbow
  2. [root@git-node1 git_demo]# git remote -v
  3. origin git@git-node1:root/git_demo.git (fetch)
  4. origin git@git-node1:root/git_demo.git (push)
  5. rainbow git@git-node1:root/git_demo.git (fetch)
  6. rainbow git@git-node1:root/git_demo.git (push)

九、移除遠程倉庫

因爲一些變動不再使用一些特定的鏡像,可以通過git remote remove 遠程倉庫名稱,移除遠程倉庫 
1.查看遠程倉庫

  1. [root@git-node1 git_demo]# git remote -v
  2. origin git@git-node1:root/git_demo.git (fetch)
  3. origin git@git-node1:root/git_demo.git (push)
  4. rainbow git@git-node1:root/git_demo.git (fetch)
  5. rainbow git@git-node1:root/git_demo.git (push)

2.移除不再使用的rainbow遠程倉庫

  1. [root@git-node1 git_demo]# git remote remove rainbow
  2. [root@git-node1 git_demo]# git remote -v
  3. origin git@git-node1:root/git_demo.git (fetch)
  4. origin git@git-node1:root/git_demo.git (push)

 

十、Git遠程倉庫小結

  要添加一個倉庫,首先必須知道倉庫的地址,然後使用git remote add 命令添加遠程倉庫,也可使用git clone命令克隆。(Git支持多種協議,包括http、https,但通過ssh支持的原生git協議速度最佳。) 


  要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git,關聯後,使用命令git push -u origin master第一次推送master分支的所有內容,此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改

    1. # git remote add [remote] [url]#添加(關聯)遠程庫
    2. # git remote set-url [remote] [url] #修改遠程倉庫
    3. # git clone [url] #克隆遠程倉庫項目
    4. # git remote #查看指定遠程倉庫命名簡寫
    5. # git remote –v #查看遠程倉庫詳細信息以及名稱對應URL
    6. # git push -u remote master #第一次推送master分支的所有內容
    7. # git fetch remote [branch/tag] #下載遠程倉庫的所有變動
    8. # git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
    9. # git push remote [branch/tag] --force #強行推送當前分支至遠程分支,及時衝突
    10. # git push remote [branch/tag] --all #推送所有分支到遠程倉庫
    11. # git remote rename [oldname] [newname] #修改遠程倉庫名稱
    12. # git remote remove [name] #刪除遠程倉庫名稱以及URL地址

 

十一、安裝過程遇見的那些坑

在CentOS裏面安裝軟件,提示軟件已安裝,但是rpm -q和-e都是提示包沒有安裝

   查看與rpm包相關的文件和其他信息   rpm -qa | grep 包名

 

查詢包是否被安裝,命令:rpm -q 包名

 

刪除軟件包,命令:rpm -e 包名

 

運行以上三步,把原來的包刪除掉重新下載和安裝
 

 

十二服務管理:

  查看服務狀態:gitlab-ctl status

  開啓服務: gitlab-ctl start

  關閉服務:gitlab-ctl stop 

關閉gitlab的自動啓動 :systemctl disable gitlab-runsvdir.service

開啓gitlab的自動啓動:

  1. systemctl enable gitlab-runsvdir.service

  2.  systemctl start gitlab-runsvdir.service

  3.  gitlab-cmd start

十三、Gitlab 漢化

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

  1. 克隆版本庫
cd /usr/local/src/
git clone https://gitlab.com/xhang/gitlab.git
  1. 獲取當前Gitlab版本
gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)
  1. 比較漢化標籤和原標籤,導出patch用的diff文件
cd /usr/local/src/gitlab
git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff
  1. 先停止gitlab
gitlab-ctl stop
  1. 導入漢化補丁
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../${gitlab_version}-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:
  1. 然後啓動gitlab

 

gitlab-ctl start

此時訪問http://IP就是中文頁面了(啓動後馬上打開頁面可能會顯示502,稍等幾秒刷新就好了)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章