《企業(yè)級Git Server服務的部署與應用》要點:
本文介紹了企業(yè)級Git Server服務的部署與應用,希望對您有用。如果有疑問,可以聯(lián)系我們。
開源的普及,讓使用Git來進行版本控制管理的開發(fā)者、團隊、企業(yè)也越來越多.
市場上,無論國內(nèi)外,提供的免費的Git托管服務商也越來越多.Github當然首當其沖,還有Gitlab、Bitbucket等.國內(nèi)基于Git的代碼托管也非常多,如果是面向企業(yè),收費其實都不低.最重要的,也不是收費問題,源代碼對于企業(yè)來說是機密等級非常高的東東,放在自己的服務器上安全等級相對來說要高一點.所以企業(yè)就需要有自己內(nèi)部的Git服務解決方案了.
今天就來說說企業(yè)級的Git應用部署.
當然先說Git的安裝,這里都以CentOS 6.x 64位操作系統(tǒng)為例.
首先去下載Git的源代碼,當然從下面的網(wǎng)址去下載:
https://github.com/git/git/releases
或者:
https://www.kernel.org/pub/software/scm/git
目前可以看到Git的最新版已經(jīng)發(fā)布到了2.12,我們就以這個Releases版本為例(懂C和C++的童鞋可以去折騰下Git的開發(fā)版).
Git軟件版本的迭代更新還是發(fā)布的比較頻繁的.下載了Git源碼(從Github下載可能還是需要花費一些時間,原因你懂的),先別急著解壓,先來做另一件事.
直接使用yum進行安裝:
yum install perl-ExtUtils-MakeMaker expat expat-devel xmlto perl-ExtUtils-MakeMakerasciidoc
如果有些軟件提示找不到的,給CentOS裝上epel的Yum源,即可安裝成功.
拿到源代碼之后就行就是下面的三步了:
這里重點說說編譯配置,來看看配置參數(shù):
./configure –prefix=/usr/local/git \
–with-gitconfig=/usr/local/git/etc/gitconfig \
–with-gitattributes=/usr/local/git/etc/gitattributes \
–with-editor=/usr/bin/vim \
–with-expat \
–with-shell=/bin/bash \
–with-perl=/usr/bin/perl \
–with-zlib=/usr \
–with-curl \
–with-libpcre \
–with-openssl \
–with-iconv
這里我們把Git安裝到/usr/local/git目錄下面,如果有Python環(huán)境的也可以通過–with-python指定Python解釋器.
在執(zhí)行完configure配置命令后,編譯有兩種方式:
常規(guī)編譯:
make all -j 2
make install
這樣安裝,不會編譯man文檔,編譯的時間比較快.
帶man文檔的安裝方式:
wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/extras/RPMS/asciidoc-8.6.9-1.el6.rfx.noarch.rpm
wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/docbook2x-0.8.8-1.el6.rf.x86_64.rpm
yum localinstall asciidoc-8.6.9-1.el6.rfx.noarch.rpm docbook2x-0.8.8-1.el6.rf.x86_64.rpm
yum install xmlto texinfo
ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
make -j 2 all doc info
make install install-gitweb install-doc install-man install-html install-info
注意這里,安裝man文檔時,需要解決幾個依賴,否則會報錯.這大概就是一個比較完整的編譯安裝,其實官方也提供man文檔的下載,可以不自行編譯.
https://www.kernel.org/pub/software/scm/git/git-manpages-2.12.0.tar.gzhttps://www.kernel.org/pub/software/scm/git/git-htmldocs-2.12.0.tar.gz
完成了Git的編譯安裝后,需要進行一些初始設(shè)置.如果不設(shè)置,會出現(xiàn)一些問題.
n -s /usr/local/git/bin/git /usr/bin/
ln -s /usr/local/lib/libcharset.so.1 /lib/libcharset.so.1
ldconfig
mkdir /usr/local/git/etc
git –version
這里有一個動態(tài)庫的鏈接配置,需要留意.執(zhí)行g(shù)it –version的時候,就可以看到顯示為2.12的版本.到這里,git就正式可用了,但是還是作為客戶端來使用的.
安裝了Git之后,就需要整合Apache,來提供基于http的Git服務.Apache服務器可以使用Yum來安裝,這里不多贅述.整合Apache配置:
<VirtualHost *:80>
ServerName git.test.com
ServerAdmin git@test.com
SetEnv GIT_PROJECT_ROOT /data/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/local/git/libexec/git-core/git-http-backend/
<Location />
AuthType Basic
AuthName “Test Git Repository”
AuthUserFile /etc/httpd/conf.d/git.auth
Require valid-user
</Location>
</VirtualHost>
注意加粗部分的配置,這一句“/usr/local/git/libexec/git-core/git-http-backend/”就是用來整合Git和Apache的.
另外git.auth是用來做登錄授權(quán)配置的,配置這授權(quán)文件使用htpasswd命令進行配置.配置了git.auth之后,啟動Apache,就可以使用http來提供Git服務了.
我們來創(chuàng)建第一個版本庫:
cd /data/git
git init –bare TestPorject.git
這里還需要注意一個問題,需要把版本庫所在目錄授權(quán)給Apache的運行用戶,否則會出現(xiàn)無法進行g(shù)it push的操作.這是Linux層的文件權(quán)限控制問題.
這里就屬于客戶端的操作了.在創(chuàng)建好了上面的第一個版本庫后,就可以在客戶端進行Git操作了:
git clone http://git.test.com/TestPoject.git
在Clone的過程中,需要輸入在git.auth文件中配置的用戶名和密碼,這點需要注意.
完成Clone操作了,就看可以在客戶端完全使用git來管理你的代碼了.
這樣把Git部署在自己的服務器上,就完全不限制倉庫的數(shù)量和容量問題,想創(chuàng)建多少就多少.
我們在配置好了上面的http服務后,可以使用git clone http://git.test.com/project.git進行代碼的克隆,這里雖然提供了http服務,但還不能在瀏覽器里訪問,要實現(xiàn)這一Web基礎(chǔ)功能,還需要對Apache進行下一步的配置:
<VirtualHost *:81>
ServerName git.test.com
ServerAdmin git@test.com
<Location />
AuthType Basic
AuthName “Test Git Repository”
AuthUserFile /etc/httpd/conf.d/git.auth
Require valid-user
</Location>
DocumentRoot /var/www/gitweb
<Directory /var/www/gitweb>
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
</Directory>
</VirtualHost>
注意這里使用的81端口,不能再用80端了.
上面有一個/var/www/gitweb的目錄,這個目錄需要放置一些腳本文件:
cp -rap /usr/local/git/share/gitweb/* /var/www/gitweb/
然后需要配置/var/www/gitweb/gitweb.cgi這個文件:
our $projectroot = “/data/git“;
our $home_link_str = “Projects”;
這里$projectroot就需要改成版本庫的根目錄,這里使用的是/data/git目錄.
重啟下Apache,然后就可以在瀏覽器上訪問:http://git.test.com:81/,這里也是需要輸入用戶名和密碼(也即里git.auth文件里配置的).
GitWeb的UI效果就如上圖所示,這里我們使用https://git.kernel.org/cgit/來演示.
服務已經(jīng)部署好了,并且運行起來了.但還有個很重要的問題需要引起注意,那就是:
備份,備份,備份!!
得說三遍才行!!
還記得今年年初Gitlab丟數(shù)據(jù)的故障,這可是國際級的版本托管且比較有影響力的故障事件了.
備份可以使用Shell腳本,設(shè)置定時任務來實現(xiàn)備份.主要注意備份下面幾個文件或目錄:
其中/data/git目錄就是倉庫的根目錄了,另外兩個文件就是與Apache進行整合的配置文件和Git訪問的用戶權(quán)限控制文件.
備份的方式注意一定要進行異地備份,不要備份在本機,這可是常識性問題了.
到這里,就可以正式啟用Git服務來給自己的企業(yè)做代碼托管了.
這里推薦幾款市場上比較火的第三方的開源的Git Server解決方案:
Gogs是基于Go語言開發(fā)的,Gitlab基于Ruby開發(fā)的.Gitlab比Gogs更重量級、更加麻煩一點,但網(wǎng)上也有一些一鍵安裝的Gitlab的腳本,基本可以成功安裝.Gogs來說相對輕量級一點,部署也比較容易一點,同時具備了Github的大部分功能.
關(guān)于Gogs和Gitlab的具體部署,這里就不多說了,官方都有提供比較詳細的教程和文檔,可以參照官方的說明來部署.其實不管是Gogs或者Gitlab,或者自己部署Git http服務,但離不開底層的Git軟件.
文章來自微信公眾號:Python運維圈
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/1973.html