GitLab服務器
前面我們已經知道Git人人都是中心,那他們怎么交互數據呢?
使用GitHub或者碼雲等公共代碼倉庫
使用GitLab私有倉庫
GitLab是什么?
是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。基礎功能免費,高級功能收費。
為什么要使用GitLab?
基礎功能開源,可自行搭建
可以進行權限控制,使得代碼對部分人可見
gitlab使用方便
GitLab搭建過程
主機名 | IP | 備注 | 特殊要求 |
---|---|---|---|
GitA | 192.168.200.70 | Git客戶端 | 無 |
GitB | 192.168.200.90 | GitLab服務器端 | 內存2G |
官方安裝文檔:https://about.gitlab.com/installation/#centos-7
GitLab國內源下載地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
初始環境
cat /etc/redhat-release
uname -r
echo "gitb 127.0.0.1" >> /etc/hosts
tail -1 /etc/hosts
ls
GitLab軟件包下載
鏈接:https://pan.baidu.com/s/1TYJnh6M01MAVhLRXr-qfLw
提取碼:mqxp
在GitB上安裝GitLab
ls
yum localinstall gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm -y
yum localinstall -y代表利用yum安裝本地指定的rpm包,好處是自動解決依賴問題
初始化GitLab,只需要執行一次
gitlab-ctl reconfigure
查看gitlab啟動狀態
gitlab-ctl status
查看gitlab版本號
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
在宿主機輸入網址進行就可以訪問了
linyaonie
接下來設置管理員初始密碼,最少8位
登陸管理員賬號:root,密碼:linyaonie
登陸后,我們就可以選擇如下功能使用了
GitLab中文社區版補丁包安裝
GitLab中文社區:https://gitlab.com/xhang/gitlab/tree/11-2-stable-zh
解壓GitLab中文版補丁包
ls
tar xf gitlab-11-2-stable-zh.tar.gz
查看系統已經安裝的GitLab版本號
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
查看解壓后的補丁版本號
cat gitlab-11-2-stable-zh/VERSION
特別提示:補丁包版本號和安裝的GitLab版本號需要一致
備份英文版GitLab
cp -r /opt/gitlab/embedded/service/gitlab-rails{,.bak}
將中文補丁包的內容覆蓋英文版
/bin/cp -rf gitlab-11-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
特別提示:報錯不需要管,因為已經設置過root密碼,登陸過,所以會報錯
重新配置GitLab
gitlab-ctl reconfigure
重新啟動GitLab
gitlab-ctl restart
重新刷新瀏覽器訪問GitLab(中途掉線了,IP地址變了)
使用GitLab
創建一個新項目
修改GitLab配置文件/etc/gitlab/gitlab.rb
我們需要修改GitLab的默認域名(因為我們是在內網搭建的GitLab)
GitLab默認的監聽端口為80,但是在企業中,這個端口經常被別的服務占用,所以我們還需要更換端口號cp /etc/gitlab/gitlab.rb{,.bak}
cat -n /etc/gitlab/gitlab.rb.bak | sed -n '13p;943p'
vim /etc/gitlab/gitlab.rb
13 external_url 'http://192.168.200.90:8888'
943 nginx['listen_port'] = 8888
cat -n /etc/gitlab/gitlab.rb | sed -n '13p;943p'
重新配置GitLab
gitlab-ctl reconfigure
重新啟動GitLab
gitlab-ctl restart
重新訪問瀏覽器
嘗試將本地倉庫代碼推送到私有GitLab
在GitA客戶端上
cd /mycode
ls
git branch
添加遠程GitLab倉庫管理
git remote add origin http://192.168.200.90:8888/root/yunjisuan.git
git remote -v
推送本地倉庫master分支到遠程倉庫GitLab上
git push origin master
輸入賬號root和密碼linyaonie
推送本地倉庫linux分支到遠程倉庫GitLab上
git branch
git checkout linux
git push origin linux
輸入賬號root和密碼linyaonie
在推送本地倉庫標簽v1.0到遠程倉庫GitLab上
git tag
git push origin v1.0
輸入賬號root和密碼linyaonie
重新刷新網頁並查看
嘗試在本地倉庫克隆GitLab的項目Linux分支到本地倉庫
在GitA上創建Git工作目錄
mkdir /test
cd /test
克隆遠程倉庫GitLab的Linux分支
git clone -b linux http://192.168.200.90:8888/root/yunjisuan.git
重要提醒:-b是指定分支,不寫默認克隆master主分支輸入賬號root和密碼linyaonie
ls
cd yunjisuan
git branch
配置GitLab的SSH密鑰連接方式
在GitA客戶端生成密鑰對
ssh-keygen -t rsa -C '1123400300@qq.com'
全部回車cd /root/.ssh
ls
cat id_rsa.pub --->公鑰內容,復制到GitLab上
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3TJUkCCeQErxymS7o3QGAtlH00qyISMLUSLeIqEwtRrLi2MX5+mfg53sxcmuH78zazWO59c2q0+ocSK/VFuXbV2SToNVStCPwKA+UCafYkG3KxIznPlztb4rnKxuOYMDAVlM3JSlaLDCT2QUEZvp4YMsYZ3BIOMV09UQRYjVsX4Psq8hRNaTsWyM2ufIXaaS61lX3zWzx/98FuFPkJhnH0sgCdV5uE5KBiek02Gt97h8wgRZoIxFYbstklw86pVZnosaLoTACGIDU7Kvzn+UYZQy66AJuGbKj+47S2sxwvK4v5wzLEIWryHLpAeOyoQ8Giv166Ezl/ouJybZ6RCLN 1123400300@qq.com
在瀏覽器打開GitLab
在GitA客戶端重新進行克隆測試
mkdir /miyao
cd /miyao
git clone -b linux git@192.168.200.90:root/yunjisuan.git --->第一次需要記錄主機所以需要輸入yes
在GitB上配置GitLab郵件服務
配置郵箱服務的用途
-
有合並請求時間,郵件通知
-
賬號注冊時,郵件驗證
-
修改密碼時,通過郵件修改
配置步驟
-
開啟QQ郵箱的smtp服務
-
修改gitlab配置
-
測試郵件服務是否正常
開啟GitLab服務postfix服務並開啟QQ郵箱的smtp服務
systemctl start postfix
systemctl enable postfix
systemctl status postfix
jbcgbxbsatwzhegi
修改GitLab配置文件/etc/gitlab/gitlab.rb
cat -n /etc/gitlab/gitlab.rb.bak | sed -n '53p;472,480p;618p'
vim /etc/gitlab/gitlab.rb
cat -n /etc/gitlab/gitlab.rb | sed -n '53p;472,480p;618p'
53 gitlab_rails['gitlab_email_from'] = '1123400300@qq.com' --->GitLab默認郵箱
472 gitlab_rails['smtp_enable'] = true --->開啟功能
473 gitlab_rails['smtp_address'] = "smtp.qq.com" --->QQ的smtp服務
474 gitlab_rails['smtp_port'] = 465
475 gitlab_rails['smtp_user_name'] = "1123400300@qq.com" --->smtp用戶郵箱
476 gitlab_rails['smtp_password'] = "jbcgbxbsatwzhegi" --->開通QQsmtp時返回的字符串
477 gitlab_rails['smtp_domain'] = "qq.com" --->smtp域名
478 gitlab_rails['smtp_authentication'] = "login"
479 gitlab_rails['smtp_enable_starttls_auto'] = true
480 gitlab_rails['smtp_tls'] = true
618 user['git_user_email'] = "1123400300@qq.com" --->git用戶郵箱
重新加載GitLab配置文件
gitlab-ctl reconfigure
重新啟動GitLab服務
gitlab-ctl restart
進入GitLab控制台進行郵件發送測試
gitlab-rails console --->開啟GitLab控制台
Notify.test_email('1123400300@qq.com','ceshi','hello').deliver_now
特別說明:Notify.test_email('收件人郵箱','郵件標題','郵件內容')
進入QQ郵箱並查看
GitLab的賬號注冊及分組
賬戶注冊測試
我們在注冊的時候,用的是亂寫的郵箱都能注冊並登陸
顯然這在企業里是絕對不允許的
開啟GitLab郵箱驗證功能
重新登陸管理員用戶:root,密碼:linyaonie,我們在進行如下操作
退出時,別忘了保存修改
然后我們退出管理員進行重新注冊
創建一個項目組
給組添加成員並授權
Guest訪客 --->只能發表評論,不能讀寫項目庫
Reporter報告者 --->只能克隆代碼(讀),不能提交代碼(修改)(產品測試)
Deveioper開發人員 --->可以進行代碼的讀寫,不能分支合並但可以提交請求(普通程序員)
Master主程序員 --->可以添加項目成員,添加標簽,創建和保護分支(產品經理)
Owner所有者 --->擁有所有權限(一般不用此權限)
添加權限成功后,GitLab會自動郵件通知這個用戶
給項目組創建一個新項目
在GitA主機上創建環境並測試
mkdir /benet
cd /benet
touch {1..5}
git init
git remote add test http://192.168.200.90:8888/dev/benet.git
git remote -v
git add *
git commit -m "主程序員測試一下"
git push -u test master
輸入賬號:1123400300@qq.com,密碼:linyaonie