目錄
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代碼的時候,內存消耗很大;大磁盤用於存放前後端代碼)
服務器:
環境設置:此處直接關掉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管理頁面,然後可以看到“項目創建”、“用戶創建”、“組創建”選項
user創建:其他默認
可以看到我們剛創建的用戶,點擊edit設置統一的用戶初始密碼,後面新創建的用戶第一次登錄需更改密碼
新用戶首次登錄更改密碼後,將自己的開發機的公鑰上傳(先將gitlab本身的root公鑰上傳)
group創建:其他默認
創建一個叫test項目的分組,下面的private/internal/public,根據情況選擇,默認為private私有
為項目組分配組員、分配權限(後面可以點組名進入此分配權限頁面)
project創建
選擇項目組,設置項目名稱,其他默認
#Private私有狀態或Internal狀態,只能通過ssh方式連接(推薦此種方式,比較安全),這兩種模式下是不能通過http方式連接
#public公開狀態,就可以直接通過http連接(http連接只能在這種模式下才能成功!要保證gitlab機器的http端口對客戶機開放)
可以看到創建成功後的git地址,以及git基本的操作命令
項目操作模擬
服務端操作: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.
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服務器報負載高或者內存佔用高,直接提高給機器配置吧
閱讀更多 愛踢人生 的文章