一、Gitlab簡介
GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。
可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實現代碼復用。Gitlab私有倉庫;GitHub公共的代碼倉庫。
功能:Gitlab 是一個提供代碼托管、提交審核和問題跟蹤的代碼管理平台。對於軟件工程質量管理非常重要。
版本:GitLab 分為社區版(CE) 和企業版(EE)。
配置:建議CPU2核,內存2G以上。
Gitlab的服務構成:
1)Nginx:靜態web服務器。
2)gitlab-shell:用於處理Git命令和修改authorized keys列表。(Ruby)
3)gitlab-workhorse: 輕量級的反向代理服務器。(go)
GitLab Workhorse是一個敏捷的反向代理。它會處理一些大的HTTP請求,比如文件上傳、文件下載、Git push/pull和Git包下載。其它請求會反向代理到GitLab Rails應用,即反向代理給后端的unicorn。
4)logrotate:日志文件管理工具。
5)postgresql:數據庫。
6)redis:緩存數據庫。
7)sidekiq:用於在后台執行隊列任務(異步執行)。(Ruby)
8)unicorn:An HTTP server for Rack applications,GitLab Rails應用是托管在這個服務器上面的。(Ruby Web Server,主要使用Ruby編寫)
管理的命令:
gitlab-ctl stop #停止所有gitlab組件
gitlab-ctl start #啟動所有gitlab組件
gitlab-ctl restart #重啟所有gitlab組件
gitlab-ctl status #查看服務狀態
gitlab-ctl reconfigure #重新編譯gitlab的配置(執行 reconfigure 命令會把gitlab的nginx組件的配置還原,導致自定義修改的端口以及域名等都沒有了。)
vim /etc/gitlab/gitlab.rb #修改gitlab配置文件
gitlab-rake gitlab:check SANITIZE=true --trace #檢查gitlab
gitlab-ctl tail #查看日志
二、gitlab安裝及使用
第一步:安裝gitlab
[root@ren5 ~]# yum localinstall gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm -y
第二步:修改配置文件
在文件11行左右把主機名修改為主機IP地址
[root@ren5 ~]# vim /etc/gitlab/gitlab.rb
########################################
11 external_url 'http://192.168.11.5'
#############################################
注釋行#的含義:
1.不生效
2.默認值
第三步:重新配置(使配置重新生效,需要一定的時間)
啟動gitlab的時候80端口不能被占用!
[root@ren5 ~]# gitlab-ctl reconfigure #重新配置
[root@ren5 ~]# ss -tnl
[root@ren5 ~]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 9629 root 6u IPv4 50984 0t0 TCP *:http (LISTEN)
nginx 9630 gitlab-www 6u IPv4 50984 0t0 TCP *:http (LISTEN)
[root@ren5 ~]# firewall-cmd --add-port=80/tcp #添加防火牆端口
[root@ren5 ~]# firewall-cmd --add-port=80/tcp --permanent
第四步:瀏覽器訪問
直接輸入服務器IP 即可訪問
需要修改密碼,輸入新的密碼,密碼長度需要8位(change your password)
把Admin換成root,密碼就是剛才設置的密碼,點擊sign in
第五步:gitlab使用
在windows中可以通過創建用戶,創建項目組,創建項目來新建一個項目
在Linux中的使用
[root@ren5 ~]# mkdir rrr #創建根目錄
[root@ren5 ~]# cd rrr
[root@ren5 rrr]# yum -y install git
[root@ren5 rrr]# git clone http://192.168.11.5/root/first-project.git #克隆遠程倉庫(拉取項目)
[root@ren5 rrr]# ls
first-project
[root@ren5 rrr]# cd first-project/
[root@ren5 first-project]# ls -a
. .. .git
[root@ren5 first-project]# touch {1..5}.txt #更新文件
[root@ren5 first-project]# echo "111111111111" > 1.txt
[root@ren5 first-project]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
[root@ren5 first-project]# git add . #工作目錄內容上傳到暫存區域
[root@ren5 first-project]# git commit -m "v1" #把暫存區內容添加到倉庫
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@ren5.(none)')
[root@ren5 first-project]# git config --global user.email "you@example.com"
[root@ren5 first-project]# git config --global user.name "Your Name" #認證
[root@ren5 first-project]# git commit -m "v1" #重新提交
[master(根提交) d5aee1b] v1
5 files changed, 1 insertion(+)
create mode 100644 1.txt
create mode 100644 2.txt
create mode 100644 3.txt
create mode 100644 4.txt
create mode 100644 5.txt
[root@ren5 first-project]# git branch #查看分支
* master
[root@ren5 first-project]# git push -u origin master #把本地內容推送至遠程倉庫(第一次推送時必須加 -u 選項,之后可不加-u選項)
Username for 'http://192.168.11.5': root #輸入用戶名(gitlab的用戶密碼)
Password for 'http://root@192.168.11.5': #輸入密碼
[root@ren5 first-project]# git branch hello #創建新的分支
[root@ren5 first-project]# git checkout hello #切換到新分支
切換到分支 'hello'
[root@ren5 first-project]# touch test && echo "hello world" > test #添加測試文件
[root@ren5 first-project]# git add . #添加至暫存區
[root@ren5 first-project]# git commit -m "v2" #添加至倉庫
[root@ren5 first-project]# git push -u origin hello #推送至遠程倉庫
三、linux當中免密使用gitlab
在上面我們每次登錄gitlab都要輸入名字和密碼很麻煩,故可以使用密鑰SSH來推送。
第一步:生成密鑰對
ssh-keygen
第二步:復制公鑰信息
[root@ren5 first-project]# cat /root/.ssh/id_rsa.pub
第三步:粘貼到web服務端profile-settings的ssh-keys中
第四步:點擊提交之后再次下載倉庫信息
回車之后可以看到沒有輸入任何東西就直接下載完成
注意:拉取的時候指定的是ssh地址而不再是http地址!
推送時可使用分支的形式推送,也可以選擇ssh的地址進行推送
四、window中免密使用gitlab
第一步:准備文件
你需要首先在網上下載下面的這個客戶端工具:Git-2.7.2-32-bit_setup.1457942412.exe
第二步:安裝
第三步:創建一個文件夾作為工作目錄並進入目錄之后;右擊鼠標有兩個選項,一個是bash一個是圖形化
第四步:生成秘鑰信息,進行免密登錄;在這個界面輸入ssh-keygen一直點回車生成秘鑰信息
第五步:把公鑰信息輸入到web服務端;可以從上面的信息中看到秘鑰信息保存在哪了,現在我們去c盤找;復制這個公鑰里面的信息
第六步:本地下載倉庫;使用git clone 加上你的項目ssh信息
第七步:本地查看;發現已經有了倉庫信息了,現在你就可以開始寫程序了
第八步:測試;進入到包含.git的目錄並在此右擊打開bash,執行創建分支操作,並建立test.txt測試文件
第九步:上傳文件;和linux中一樣執行上傳命令
第十步:在web中查看;可以看到我們剛才在window中創建的文件也已經被上傳上來了