近期想學習Git,公司目前都是使用的SVN,以下是學習搭建一個GitLab服務器的記錄總結(jié)。
轉(zhuǎn)載自http://www.itdecent.cn/p/b04356e014fa,稍作整理而來。
@Author Jacky Wang ,
轉(zhuǎn)載請注明出處 http://www.itdecent.cn/p/e51204f935c6
一、Git及GitLab的介紹
1.1 Git的優(yōu)點
-
Git是分布式的,SVN不是
Git分布式本地就可以用,可以隨便保存各種歷史痕跡,不用擔心污染服務器,連不上服務器也能提交代碼、查看log -
GIT分支和SVN的分支不同
分支在SVN中實際上是版本庫中的一份copy,而git一個倉庫是一個快照,所以git 切換、合并分支等操作更快速。 如下圖。

- Git有一個強大的代碼倉庫管理系統(tǒng) - GitLab
可以很方便的管理權(quán)限、代碼review,創(chuàng)建、管理project
1.2 GitLab與GitHub的區(qū)別
GitLab和GitHub一樣屬于第三方基于Git開發(fā)的作品,免費且開源。
不同的是,GitLab是可以部署到自己的服務器上,數(shù)據(jù)庫等一切信息都掌握在自己手上,適合團隊內(nèi)部協(xié)作開發(fā)。簡單來說可把GitLab看作個人版的GitHub。
1.3 GitLab的介紹
GitLab:是一個基于Git實現(xiàn)的在線代碼倉庫托管軟件,你可以用gitlab自己搭建一個類似于Github一樣的系統(tǒng),一般用于在企業(yè)、學校等內(nèi)部網(wǎng)絡搭建git私服。
功能:Gitlab 是一個提供代碼托管、提交審核和問題跟蹤的代碼管理平臺。對于軟件工程質(zhì)量管理非常重要。
版本:GitLab 分為社區(qū)版(CE) 和企業(yè)版(EE)。
配置:建議CPU2核,內(nèi)存2G以上。
1.3.1 Gitlab的服務構(gòu)成:
Nginx:靜態(tài)web服務器。
gitlab-shell:用于處理Git命令和修改authorized keys列表。(Ruby)
gitlab-workhorse: 輕量級的反向代理服務器。(go)
GitLab Workhorse是一個敏捷的反向代理。它會處理一些大的HTTP請求,比如文件上傳、文件下載、Git push/pull和Git包下載。其它請求會反向代理到GitLab Rails應用,即反向代理給后端的unicorn。
logrotate:日志文件管理工具。
postgresql:數(shù)據(jù)庫。
redis:緩存數(shù)據(jù)庫。
sidekiq:用于在后臺執(zhí)行隊列任務(異步執(zhí)行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails應用是托管在這個服務器上面的。(Ruby Web Server,主要使用Ruby編寫)
二、GitLab服務器的搭建
2.1 環(huán)境配置
- 系統(tǒng):此次使用的是CentOS 7
- CPU:建議雙核以上
-
內(nèi)存:2GB(官方建議4GB以上)
2.jpg
2.2 GitLab服務的安裝
2.2.1 使用yum安裝GitLab所需依賴
清華大學鏡像源:https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce
- 添加
GitLab所需依賴庫
vim /etc/yum.repos.d/gitlab_gitlab-ce.repo
內(nèi)容為:
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
-
安裝
GitLab所需依賴sudo yum -y install curl openssh-server openssh-clients postfix cronie sudo service postfix start sudo chkconfig postfix on sudo yum -y install lokkit #這句是用來做防火墻的,避免用戶通過ssh方式和http來訪問。 sudo lokkit -s http -s ssh -
安裝
GitLabsudo yum makecache sudo yum -y install gitlab-ce sudo gitlab-ctl reconfigure #Configure and start GitLab

-
GitLab配置文件修改vim /etc/gitlab/gitlab.rb #外部訪問url(經(jīng)過編譯后,自動將這個配置編譯到nginx配置,nginx就無需配置了) external_url 'http://192.168.5.124' #默認值就是8080。如果端口被占用,可將8080修改為其它(例如:9090) unicorn['port'] = 8080 ps:external_url就是最后也就是git資源的路徑,如: git@192.168.5.124:root/repo1.git http://192.168.5.124/root/repo1.git -
配置域名(經(jīng)過第4步的配置這一步可省略,在
gitlab-ctl reconfigure時會自動配置完畢)vim /var/opt/gitlab/nginx/conf/gitlab-http.conf 內(nèi)容: # 外網(wǎng)訪問的端口,如果服務器已經(jīng)有服務器占用了80,那么這里可以改成其它 listen *:80; server_name http://192.168.5.124; set $http_host_with_default "http://192.168.5.124"; ps: 這里的server_name填寫服務器對應的域名即可
- 修改密碼
gitlab-rails console production
user = User.where(id:1).first
user.password='12345678'
user.save!
exit
-
使修改的配置生效
#使配置生效 gitlab-ctl reconfigure #重新啟動GitLab gitlab-ctl restart

2.2.2 GitLab常用命令
gitlab-ctl start # 啟動所有 gitlab 組件;
gitlab-ctl stop # 停止所有 gitlab 組件;
gitlab-ctl restart # 重啟所有 gitlab 組件;
gitlab-ctl status # 查看服務狀態(tài);
vim /etc/gitlab/gitlab.rb # 修改gitlab配置文件;
gitlab-ctl reconfigure # 重新編譯gitlab的配置;
gitlab-ctl show-config #驗證配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 檢查gitlab;
gitlab-ctl tail # 查看日志;
gitlab-ctl tail nginx/gitlab_access.log
gitlab-ctl uninstall #刪除gitlab(保留數(shù)據(jù))
gitlab-ctl cleanse #刪除所有數(shù)據(jù),從新開始
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION #查看gitlab版本
注意:執(zhí)行 reconfigure 命令會把gitlab的nginx組件的配置還原,導致自定義修改的端口以及域名等都沒有了。
2.2.3 常用目錄
日志地址:/var/log/gitlab/ # 對應各服務的打印日志
服務地址:/var/opt/gitlab/ # 對應各服務的主目錄
2.3 登陸GitLab后臺管理頁面
本機安裝好Git程序,然后登錄到GitLab后臺:我這里的地址就是之前配置的http://192.168.1.124。
測試能否成功連接步驟:
2.3.1 GitLab后臺新建項目庫
在GitLab后臺新建庫repo1.

2.3.2 本機新建測試文件HelloGit.txt
本機新建文件LocalGit/repo1/HelloGit.txt.

2.3.3 創(chuàng)建本地Git庫
右鍵使用turtoiseGit工具選擇Git create responsitory創(chuàng)建本地Git庫。
2.3.4 提交并推送到遠程Git服務器
1. 選擇git commit提交代碼到本地庫。
2. 選擇git sync,填入GitLab后臺新建項目時得到的git倉庫連接,這里以http連接為例.
http://192.168.5.124/root/repo1.git
6. 如果能成功提交即成功.


