centos搭建gitlab伺服器
『壹』 怎樣在伺服器上部署gitlab
GitLab是由Ruby語言開發的基於Linux的Git伺服器,是我見過的最強大的Git伺服器。發現它之後,立即決定將Git伺服器換成GitLab。
但安裝好GitLab之後面臨一個問題,如何將伺服器上的git項目直接導入到GitLab,之前的Git伺服器是由是git+apache搭建的(詳見在Linux上用Apache搭建Git伺服器)。
在網上發現了這篇文檔——Import bare repositories into your GitLab instance,並按之進行了操作。
1)設置存放代碼庫的主目錄
vi /etc/gitlab/gitlab.rb
比如這里設置為:git_data_dir "/gitlab/repos"
2)訪問剛搭建的GitLab站點,創建一個group,比如cnblogs。
這時會在 /gitlab/repos 下創建 /gitlab/repos/repositories/cnblogs 文件夾。
然後在/gitlab/repos/repositories/創建一個文件夾,比如cnblogs
3)將現有的所有git項目文件復制到這個文件夾
cp -r /data/git/* /gitlab/repos/repositories/cnblogs
4)修改一下復制過來的文件夾的所有者:
chown -R git:git /gitlab/repos/repositories/cnblogs
5)運行GitLab導入命令
cd /var/opt/gitlab
gitlab-rake gitlab:import:repos
等了一段時間之後,顯示done,卻一個項目也沒導入進來。
經研究發現,在導入時,GitLab只認文件夾名以.git結尾的項目。於是,將要導入的項目文件夾名稱加上.git後綴,再次進行導入。
結果顯示導入成功,比如:
Processing cnblogs/CNBlogsJob.git
* Created CNBlogsJob (cnblogs/CNBlogsJob.git)
Done!
可以是GitLab站點上卻看不到已導入的項目。多次努力,也沒能解決這個問題。
後來,實在沒辦法,改為手動導入,導入方法如下:
1)在GitLab站點上創建與要導入的項目同名的項目。
2)進入剛創建的項目文件夾
cd /gitlab/repos/repositories/cnblogs/項目名稱.git
3)刪除該文件下的所有文件
rm -rf *
4)將要導入的項目文件夾下的所有文件復制過來
cp -r /data/git/CNBlogsJob/* /gitlab/repos/repositories/cnblogs/CNBlogsJob.git
就這樣將項目一個一個地導入進來。
5)導入完成後,修改一下導入的所有項目的文件所有者
chown -R git:git /gitlab/repos/repositories/cnblogs
如果不修改所有者,客戶端無法進行git push。
就這樣手動地完成了現有Git項目的導入。
備註:操作系統是CentOS 6.2,GitLab版本是7.8.4。
『貳』 GitLab搭建個人(或公司)版本控制系統
說明:Git,Github,GitLab三者關系。
Git - 是一款自由和開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目。是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。(svn是集中化的版本控制系統)。
GitHub - 是一個面向開源及私有軟體項目的託管平台(也就一個網站),提供給用戶空間創建git倉儲,保存用戶的一些數據文檔或者代碼等。它可以託管各種git庫,並提供一個web界面。被戲稱為「全世界最大的同性交流社區」。
GitLab - 基於Git的項目管理軟體。使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。
當然啦國內開源中國出的「碼雲」,第一次聽得人還以為是「馬雲」。我醬紫。它跟Github功能差不多,都能建立公有和私有的倉庫。不過嘛感覺有點封閉,社區沒有Github熱鬧。
有的人就說啦,我完全可以在Github或者GitLab上做遠端代碼倉庫,為啥還要倒騰GitLab自建代碼託管系統?就一個字: 「代碼安全性」(公司保密規定)。 對於公司來說,GitLab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比於GitHub,它有不少的特色:
一、自建代碼託管系統都需要做些什麼工作?
1. 選擇開源軟體
Git 大家族的 GitLab ,它提供了完善的用戶許可權管理,除了涵蓋 Git 所有的功能,同時又提供方便的後台管理。分別有CE(社區版)、EE(企業版)、OM(RPM 包完整版)三個版本,目前市面上開發者們的普遍選擇是使用 CE 版的源碼,成本較低且相對方便。
2. 硬體設施方面
如果是對於中小型企業來講,自建機房一般成本較高,所以除非是大型集團企業。現在市面上存在太多的雲伺服器廠商,平均價格多在 5000元/年以上,都是不錯的選擇。
可能遇到的坑:
3.由於個人眼界以及信息不對稱,目前大部分公司都是在公司區域網內自行用GitLab搭建代碼託管系統。部署Gitlab 是對伺服器有配置要求的建議是CPU兩核,內存4G以上。個人經驗,勿噴啦。
二、搭建過程(這里僅是作者接觸的,其實還有很多更高級的盤法)
Gitlab的服務構成
1.搭建方法分為:傳統方式安裝GitLab和Docker安裝(推薦)。
2.傳統安裝過程(平台使用centos7安裝)
安裝和配置必要的依賴項:
安裝Postfix以發送通知郵件:
在安裝Postfix期間,可能會出現配置屏幕。選擇「Internet Site」並按enter鍵。使用您的伺服器的外部DNS以「mail name」並按enter。如果出現額外的屏幕,繼續按enter鍵接受默認值。
添加GitLab鏡像源並安裝gitlab伺服器:
注意這里設置的埠不能被佔用,默認是8080埠,如果8080已經使用,請自定義其它埠,並在防火牆設置開放相對應得埠。
重置並啟動GitLab:
訪問 GitLab頁面:如果沒有域名,直接輸入伺服器ip和指定埠進行訪問
獲取/修改超級管理員root的密碼:
最後我們使用默認的賬號:root 和剛剛設置好的密碼12345678進行登錄。
後面的步驟配置SSH key,git Bash的global config等初始化設置跟GitHub一樣。可是還有一點就是「漢化」。(英文不好的小夥伴)但是有一定風險,後面我打開報502錯誤。有兩種方法:用git比對出英文與中文的補丁,將英文打補丁。第二是直接下載中文版,替換英文。
3.Docker安裝(推薦)
(1)配置docker鏡像
直接從 docker hub 獲取的話速度非常慢,所以需要配置一個鏡像。我使用的是 cloud.io提供的加速器,速度很快。
(2)獲取 GitLab 鏡像
下載完成後,查看鏡像列表
(3)啟動容器
3個--publish指定容器與主機的埠映射,分別是 http、https、ssh
3個--volume指定數據卷的映射,分別是 gitlab 的 配置、日誌、數據
(4)配置外部訪問 URL
修改 gitlab 配置文件:
找到 external_url 這一項修改為自己伺服器的訪問地址:
保存後,重啟容器
(5)訪問
初次訪問時,gitlab 要求我們重置管理員密碼,修改完成後登錄。默認用戶root。
當然以上為個人實驗,公司裡面大部分為CTO等大佬已經搭建完畢,我們主要是折騰。
最後推薦個人用很順手的工具: SourceTree (可視化界面的Git),當然啦要想成為大牛或者裝13也好,還是從Git Bash里敲命令行。
『叄』 如何在CentOS 7中安裝Git
CentOS下Git伺服器搭建與客戶端安裝
時間:2014-05-14 來源:blog.51cto.com
大綱:
一、前言
二、搭建Git伺服器
yum安裝Git伺服器
創建一個git用戶,用來運行git服務
創建客戶端登錄證書
初始化Git倉庫
禁用shell登錄
克隆遠程倉庫
三、安裝客戶端
Windows 客戶端
Linux 客戶端
四、總結
注,測試機 CentOS 5.5 x86_64,Git 伺服器版本:git version 1.8.2.1,客戶端版本:git version 1.9.2.msysgit.0。所有軟體請到這里下載:http://msysgit.github.io/。
一、前言
在上一篇博客中我們主要講解Git是什麼,Git的基本原理,講解一些有關Git的基礎知識,讓我們簡單的了解一下Git,當然我們還有很多問題沒有搞清楚,嘿嘿!不管理怎麼樣,在我們弄清楚這些問題之前,我們得有台Git伺服器是吧,嘿嘿!好了,下面我們就來一起搭建一台Git伺服器。
二、搭建Git伺服器
1.yum安裝Git伺服器
[root@git ~]# cd src/
[root@git src]# wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
[root@git src]# rpm -ivh epel-release-5-4.noarch.rpm
Preparing... ########################################### [100%]
package epel-release-5-4.noarch is already installed
[root@git ~]# yum list
[root@git ~]# yum install -y git
2.創建一個git用戶,用來運行git服務
[root@git ~]# adser git
3.創建客戶端登錄證書
注,收集所有需要登錄的用戶的公鑰,就是他們自己生成的id_rsa.pub文件,把所有公鑰復制到/home/git/.ssh/authorized_keys文件里,一行一個。嘿嘿!
1).客戶端生成id_rsa.pub文件的命令
$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub
ssh-rsa ++N3wEAQRYDmcYo1wmnm/4NQ+CAN45tqfsRuf58Uba9QNK7/6xSUiIKXQiILz8PMGJ3MnlV+== leo@LEO-PC
注,一路回車即可,將生成的id_rsa.pub,復制給管理員,幫你在伺服器上增加一下,下次你用git時就不需要輸入用戶名和密碼了。
2).查看伺服器上authorized_keys文件
[root@git ~]# cat /home/git/.ssh/authorized_keys
ssh-rsa wBVd++YmJFhqwkITNGccrO5sycROs9+Fbjgd6oBSzNuaBtCIbwNNsEyM/henTl2euI3XsnJQ/ITr6c/q0P3WoGl4E2QFQ2kZqs++/+kJzJSKUTKDVSwY3/+Q== root@CHENMINGQIAN
ssh-rsa +PSK9PSg+bwiJ2iQRa39rXck35r+//RiCiYzd3RT/+S/LD3vx2MN+FNOHwvqcE+/5yEqSgAkioa8SVMOsikYJG//RZ54Q== Administrator@WIN2003X323
ssh-rsa ++N3wEAQRYDmcYo1wmnm/4NQ+CAN45tqfsRuf58Uba9QNK7/6xSUiIKXQiILz8PMGJ3MnlV+== leo@LEO-PC
說明:我這里有三個用戶登錄伺服器,所以我這里就有三個ssh-rsa,大家可以看一下。
4.初始化Git倉庫
注,先選定一個目錄作為Git倉庫,這里是/data/git/project.git。
[root@git ~]# cd /data/git/
[root@git git]# git init --bare project.git
[root@git project.git]# ls
branches config description HEAD hooks index info objects refs
執行以上命令 Git命令,會創建一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git結尾。然後,把owner改為git:
[root@git git]# chown -R git.git project.git
[root@git git]# ls -l
總計 4
drwxr-xr-x 7 git git 4096 05-09 13:50 project.git
5.禁用shell登錄
注,出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
[root@git ~]# cat /etc/passwd | grep git
git:x:1001:1001:git version control:/home/git:/bin/bash
改為:
[root@git ~]# vim /etc/passwd
git:x:1001:1001:git version control:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。
6.克隆遠程倉庫
注,現在可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:
注,$ git clone [email protected]:/data/git/project.git,其中git用戶名,git.jjhh.com伺服器,/data/git/prgject.git是倉庫路徑。好了,到這里伺服器的搭建到這里就完成了,下面我們來安裝一下客戶端。
三、安裝客戶端
1.Windows 客戶端
1).下載客戶端
注,大家到這里下載http://msysgit.github.io/。下面簡單演示一下安裝過程,比較簡單:
好了,到這里就安裝完成了,安裝好以後會在桌面上有個圖標,你雙擊打開即可。如下圖:
2.Linux 客戶端
注,Linux客戶端安裝就比較簡單了,直接用yum安裝一下就好!
1
[root@test ~]# yum install -y git
到這里git就安裝完成了,下面我們查看一下版本:
1
2
[root@test ~]# git --version
git version 1.8.2.
下面我們生成公鑰並復制到伺服器上:
[root@test ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
48:3c:22:76:02:f1:a2:e5:27:22:cb:4f:a7:a0:98:9d [email protected]
[root@test ~]# cat .ssh/id_rsa.pub
ssh-rsa ++U7zP/hr6HzfqeZU09Ccis4yK3RMwip2f+/ug2M68Z0jQk5DVG8w5+/V7eOkrvBMDh9nDdwvDhPhuhBDSfE++B18MQ== [email protected]
下面我們復制id_rsa.pub里的公鑰到伺服器的authorized_keys文件中。
[root@git ~]# su git
bash-3.2$ cd
bash-3.2$ vim .ssh/authorized_keys
ssh-rsa wBVd++YmJFhqwkITNGccrO5sycROs9+Fbjgd6oBSzNuaBtCIbwNNsEyM/henTl2euI3XsnJQ/ITr6c/q0P3WoGl4E2QFQ2kZqs++/+kJzJSKUTKDVSwY3/+Q== root@CHENMINGQIAN
ssh-rsa +PSK9PSg+bwiJ2iQRa39rXck35r+//RiCiYzd3RT/+S/LD3vx2MN+FNOHwvqcE+/5yEqSgAkioa8SVMOsikYJG//RZ54Q== Administrator@WIN2003X323
ssh-rsa ++N3wEAQRYDmcYo1wmnm/4NQ+CAN45tqfsRuf58Uba9QNK7/6xSUiIKXQiILz8PMGJ3MnlV+== leo@LEO-PC
ssh-rsa ++U7zP/hr6HzfqeZU09Ccis4yK3RMwip2f+/ug2M68Z0jQk5DVG8w5+/V7eOkrvBMDh9nDdwvDhPhuhBDSfE++B18MQ== [email protected]
下面我們clone一個倉庫到本地的目錄中。
[root@test ~]# cd /data/dev
[root@test dev]# git clone [email protected]:/data/git/project.git
Cloning into 'project'...
The authenticity of host 'git.jjhh.com (114.112.173.150)' can't be established.
RSA key fingerprint is ca:ec:a2:7e:e6:89:ca:19:d3:93:7f:4b:c3:c0:c7:fd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'git.jjhh.com,114.112.173.150' (RSA) to the list of known hosts.
remote: Counting objects: 50, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 50 (delta 21), reused 0 (delta 0)
Receiving objects: 100% (50/50), 4.02 KiB, done.
Resolving deltas: 100% (21/21), done.
[root@test dev]# ls
project
[root@test dev]# cd project/
[root@test project]# ls
index.html
好了,到這里我們的git客戶端到這里就全部安裝完成了。
『肆』 搭建GitLab伺服器
GitLab是GitHub的免費私有庫替代方案,並且安裝與配置都很方便。
GitLab要求最少4GB內存,支持小團隊使用沒問題,實測2GB內存的VPS基本沒法用,開swapfile也不行,動不動就60秒超時。因此4GB內存是必須的。
關於這一點,內存大戶主要是Unicorn,基於ruby的http伺服器。Unicorn會在啟動後預先佔用大部分內存,內存會隨著使用逐漸增長,並且不會釋放。根據GitLab和Unicorn的官方文檔,這不是它們的鍋,那麼這個鍋可能是ruby和rails了。解決方法是unicorn-work-kill,會根據請求次數和內存佔用自動重啟Unicorn。Omnibus版的GitLab是默認開啟的。
GitLab分為社區版和企業版,在未付費的情況下,兩者的功能是一樣的。並且社區版整合了CI/CD,因此可以滿足絕大部分的開發需求。
安裝包主要包括Omnibus整合包,Docker、AWS等的雲鏡像,以及一些第三方維護的版本。其中Omnibus直接整合了所有服務端組件,適合自用和練手。
安裝以Omnibus整合包為例,操作系統為Ubuntu16.04。
Gitlab需要 curl,openSSH 和 ca-certificates 這幾個組件:
不過伺服器系統一般自帶,所以是可選的。
郵件服務,用於GitLab發送找回密碼的郵件:
不過如果伺服器沒有域名的話,大部分郵箱會拒收郵件,而管理員帳號可以直接重置其他賬號的密碼,所以是可選的。
官方提供的腳本:
這個腳本會自動添加源到apt 的source list,以及安全key。另外,如果自己伺服器在國內,腳本會自動添加清華的鏡像,速度還行。
先更新apt緩存:
推薦使用 apt 而不是 apt-get ,前者大多數情況下更簡單一點。
然後是安裝:
其中 EXTERNAL_URL ,改成自己的域名。沒有域名的話,可以直接設置成IP的形式: http://1.2.3.4 ,這個推測跟nginx服務以及GitLab中的項目地址有關,所以最好正確設置。當然也可以之後在配置文件里更改。
安裝完成後,可以在配置文件中修改配置 /etc/gitlab/gitlab.rb 。
比如之前的 EXTERNAL_URL :
官方還有一個關於 unicorn 的優化建議:
默認值是2,如果伺服器只用於GitLab的話,官方建議是CPU核心數加一,可以提高伺服器的響應速度。不過如果內存只有4G,或者伺服器同時承載其他服務,就不要改了,以免內存不足。另外,這個參數最小值是2,設為1,伺服器可能會卡死。
配置完成後,刷新配置:
每次修改完 gitlab.rb ,都要刷新配置。
如果沒有報錯的話,GitLab就配置完畢並且正常運行了。接下來可以打開瀏覽器開始訪問了。
『伍』 如何使用centos 搭建git
在很多Linux系統庫中都有Git,可以直接用命令行安裝。
例如Fedora中可以直接用yum install git等,參考如下:
Debian/Ubuntu
$ apt-get install git
Fedora
$ yum install git
Gentoo
$ emerge --ask --verbose dev-vcs/git
Arch Linux
$ pacman -S git
openSUSE
$ zypper install git
FreeBSD
$ cd /usr/ports/devel/git$ make install
Solaris 11 Express
$ pkg install developer/versioning/git
OpenBSD
$ pkg_add git
新版的CentOS後續好像也支持了這個功能,但是這種方法雖然簡單,但是一般倉庫里的版本更新不及時,比如 CentOS 倉庫中的 git 最新版是1.7.1,但是 git 官方已經到2.x 的版本了。對於想要獲取最新git的系統,只能下rpm包或者用源碼。
步驟如下:
1、下載編譯工具
yum groupinstall 「Development Tools」
2、下載依賴包
yum install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel
3、下載 git 最新版本的源代碼
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
或者
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.xz
4、解壓源文件
tar -zxvf git-latest.tar.gz
或者
xz -d git-latest.tar.xz
tar -xvf git-latest.tar
5、編譯安裝
autoconf
./configure
make -jn && make -jn install
其中make -j n中的n為指定線程數,對於多核處理器這樣可以加快編譯安裝的速度
6、添加link
ln -s /usr/local/bin/git /usr/bin/
這一步對於原本系統中有舊版git的系統很重要,會報告Link已存在,此時要刪除原來的Link即/usr/bin/git,再執行第六步。
7、檢查版本號
git --version
對於系統中存在老版的git的系統,安裝了新git後用git --version查看仍然顯示為老版就是因為i忽略了第六步,這是很重要的!
『陸』 個人Gitlab搭建及配置
訪問http:// ip地址
設置密碼,然後通過 root + password 登錄,當然也可以自己新建用戶。
之後,將要訪問此GitLab的伺服器上的公鑰添加進來就可以進行愉快的玩耍了 (Linux 系統一般在 /root/.ssh 目錄下,Windows一般在 C:\Users\用戶名.ssh 目錄下)
當你完成以上操作之後,你會發現你倉庫中的SSH和HTTP地址是下圖這樣的,所以我們要對GitLab進行IP顯示的配置及埠配置。
修改如下項
修改 gitlab.rb
當你完成以上配置後,還是不能通過 http:// ip location : prot 來訪問你的GitLab倉庫。
修改GitLab ngnix 監聽埠
完成以上設置之後,就可以通過 IP + PORT 來訪問你的GitLab庫了,同時倉庫的HTTP地址顯示也正常
修改SSH埠首先要修改伺服器的SSH埠,這會影響到 Xshell 對伺服器的連接。
完成以上操作之後,一切就都正常了
『柒』 如何在git-CentOS7下安裝GitLab
首先利用如下圖所示的命令打開HTTP與SSH訪問。
步驟二:添加GitLab軟體包伺服器並安裝軟體包
然後新建 /etc/yum.repos.d/gitlab-ce.repo,
並且,對代碼進行運行