gitlab 部署 管理

目錄

1、gitlab基本介紹

2、安裝前的準備

3、gitlab安裝

4、gitlab管理


gitlab基本介紹

GitLab概述:

是一個利用 Ruby on Rails 開發的開源應用程序,實現一個自託管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。

Ruby on Rails 是一個可以使你開發、部署、維護 web 應用程序變得簡單的框架。

GitLab擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和註釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。它還提供一個代碼片段收集功能可以輕鬆實現代碼複用,便於日後有需要的時候進行查找。

GitLab官網:https://about.gitlab.com/

gitlab與github區別:

相同點: 二者都是基於web的Git倉庫,在很大程度上GitLab是仿照GitHub來做的,它們都提供了分享開源項目的平臺,為開發團隊提供了存儲、分享、發佈和合作開發項目的中心化雲存儲的場所。

不同點:

1、GitHub如果要使用私有倉庫,是需要付費的。GitLab可以在上面創建私人的免費倉庫。

2、GitLab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比於GitHub,它有不少的特色:允許免費設置倉庫權限;允許用戶選擇分享一個project的部分代碼;允許用戶設置project的獲取權限,進一步的提升安全性;可以設置獲取到團隊整體的改進進度;通過innersourcing讓不在權限範圍內的人訪問不到該資源。

從代碼私有性方面來看,有時公司並不希望員工獲取到全部的代碼,這個時候GitLab無疑是更好的選擇。但對於開源項目而言,GitHub依然是代碼託管的首選。

Github正確使用姿勢

https://mp.weixin.qq.com/s/cUz9_UDe2FsvBt2M9xp4FA

git相關概念:

git 是一種版本控制系統,是一個命令,是一種工具

gitlib 是用於實現git功能的開發庫

github 是一個基於git實現的在線代碼託管倉庫,包含一個網站界面,向互聯網開放

gitlab 是一個基於git實現的在線代碼倉庫託管軟件,一般用於在企業內網搭建git私服

注:gitlab-ce 社區版 ;gitlab-ee是企業版,收費

安裝前的準備

系統:CentOS Linux release 7.2.1511 (Core)

內核:3.10.0-327.13.1.el7.x86

配置:2核4G40G(生產環境建議4核8G100G以上。大內存:pull和push代碼特別吃內存,特別是jenkins同一時間集中構建push代碼的時候,內存消耗很大;大磁盤用於存放前後端代碼)

服務器:


gitlab 部署 管理

環境設置:此處直接關掉firewalld、iptables

引用阿里雲yum源:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

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

yum makecache

安裝相關依賴:

yum install curl policycoreutils openssh-server openssh-clients postfix -y

systemctl status postfix.service #查看狀態是否有錯誤

systemctl start postfix.service #啟動

systemctl enable postfix.service #開機自啟

systemctl status postfix.service時,可能出現錯誤:

1.fatal: parameter inet_interfaces: no local interface found for ::1

#vim /etc/postfix/main.cf

...

inet_interfaces = all

inet_protocols = all

...

2.fatal: unable to use my own hostname

#vim /etc/postfix/main.cf

...

myhostname = mail.mydomain.com #不能為IP

...

gitlab安裝

下載最新版本:https://packages.gitlab.com/gitlab/gitlab-ce/,下面是文章編寫時的最新版本

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash

yum -y install gitlab-ce-11.0.4-ce.0.el7.x86_64.rpm/download.rpm

sed -i '/^external_url/s/gitlab.example.com/10.120.126.28/' /etc/gitlab/gitlab.rb #將10.120.126.28修改成自己的gitlab域名

gitlab-ctl reconfigure #初始化、啟動服務

)若gitlab-ctl reconfigure報錯:

initdb.bin: invalid locale settings; check LANG and LC_* environment variables

)使用以下兩條命令解決

LC_ALL="en_US.UTF-8"

LC_CTYPE="en_US.UTF-8"

gitlab常用命令

gitlab-ctl start # 啟動所有 gitlab 組件;

gitlab-ctl stop # 停止所有 gitlab 組件;

gitlab-ctl restart # 重啟所有 gitlab 組件;

gitlab-ctl status # 查看服務狀態;

gitlab-ctl reconfigure # 啟動服務;

vim /etc/gitlab/gitlab.rb # 修改默認的配置文件;

gitlab-rake gitlab:check SANITIZE=true --trace # 檢查gitlab;

gitlab-ctl tail # 查看日誌;

查看一下服務確認一下,可以看到gitlab是通過nginx來web展現的

# gitlab-ctl status

run: alertmanager: (pid 11534) 15723s; run: log: (pid 11543) 15723s

run: gitaly: (pid 11478) 15725s; run: log: (pid 11490) 15724s

run: gitlab-monitor: (pid 11507) 15724s; run: log: (pid 11515) 15724s

...

# lsof -i :80

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

nginx 11028 root 7u IPv4 42791 0t0 TCP *:http (LISTEN)

nginx 11029 gitlab-www 7u IPv4 42791 0t0 TCP *:http (LISTEN)

nginx 11030 gitlab-www 7u IPv4 42791 0t0 TCP *:http (LISTEN)

屏蔽掉註冊功能【不想讓人隨便註冊使用】

https://blog.csdn.net/ouyang_peng/article/details/78562125

gitlab管理

訪問gitlab:http://10.120.126.28

默認用戶:root,設置root密碼

進入之後,點擊扳手圖標,進入admin管理頁面,然後可以看到“項目創建”、“用戶創建”、“組創建”選項


gitlab 部署 管理

user創建:其他默認


gitlab 部署 管理

可以看到我們剛創建的用戶,點擊edit設置統一的用戶初始密碼,後面新創建的用戶第一次登錄需更改密碼


gitlab 部署 管理

新用戶首次登錄更改密碼後,將自己的開發機的公鑰上傳(先將gitlab本身的root公鑰上傳)


gitlab 部署 管理

group創建:其他默認

創建一個叫test項目的分組,下面的private/internal/public,根據情況選擇,默認為private私有


gitlab 部署 管理

為項目組分配組員、分配權限(後面可以點組名進入此分配權限頁面)


gitlab 部署 管理

project創建

選擇項目組,設置項目名稱,其他默認

#Private私有狀態或Internal狀態,只能通過ssh方式連接(推薦此種方式,比較安全),這兩種模式下是不能通過http方式連接

#public公開狀態,就可以直接通過http連接(http連接只能在這種模式下才能成功!要保證gitlab機器的http端口對客戶機開放)


gitlab 部署 管理

可以看到創建成功後的git地址,以及git基本的操作命令


gitlab 部署 管理

項目操作模擬

服務端操作:10.120.126.28,gitlab_first_push.sh

#!/bin/bash

# gitlab_first_push.sh

#本腳本用於以管理員首次提交項目,並更改"Protected Branches",將"Allowed to push"設置為"Developers+maintainers",這樣其他用戶如abc將不會出現以下錯誤:

# ! [remote rejected] master -> master (pre-receive hook declined)

#error: failed to push some refs to '[email protected]:test/solo.git'

project_dir=`date "+%Y-%m-%d/%H:%M:%S"`

mkdir -p /root/${project_dir}

group_name="test"

project_name="solo"

git config --global user.name "Administrator"

git config --global user.email "[email protected]"

cd /root/${project_dir}

git clone [email protected]:${group_name}/${project_name}.git

cd ${project_name}

touch README.md

git add README.md

git commit -m "add README"

git push -u origin master


rm -rf /root/${project_dir}

報錯解決:remote: GitLab: You are not allowed to push code to protected branches on this project.


gitlab 部署 管理


gitlab 部署 管理

git用戶端操作:10.120.126.29

mkdir -p /root/soft/

cd /root/soft/

git clone https://github.com/b3log/solo.git

git config --global user.email "[email protected]"

git config --global user.name "abc"

mkdir -p /root/project

cd /root/project

git clone [email protected]:test/solo.git

cp -rf /roo/soft/solo/* /root/project/solo/

cd /root/project/solo/src/main/resouces/

sed -i '/^serverhost/s/localhost/10.120.126.29/' latke.properties

cd /root/project/solo/

git add .

git commit -m "all"

#這步如果以abc用戶操作報錯,參考上面

git push origin master

git clone 服務內存飆升:因為gitlab本身上傳下載特別耗資源,如果gitlab服務器報負載高或者內存佔用高,直接提高給機器配置吧


分享到:


相關文章: