搭建git server

git是常用的代碼版本管理工具,github是最知名的公共代碼托管網(wǎng)站。有的時(shí)候不想在公共網(wǎng)絡(luò)上共享,需要自己搭建一個(gè)私有的代碼管理服務(wù)器,比如只限于公司或者實(shí)驗(yàn)室內(nèi)網(wǎng)使用。使用git和gitlab可以方便地搭建自己私有的git代碼托管服務(wù)器。本文將介紹git,gitlab兩種方法搭建服務(wù)器,以及gitlab備份管理工作。

1 git Server安裝

git server安裝有很多參考資料,不多介紹,筆者根據(jù)下面的參考資料成功搭建了git server。登陸服務(wù)器,根據(jù)參考添加源目錄后,需要上傳代碼,在pc端執(zhí)行如下操作:

git remote add origin git@xx.75.221.xxx:/home/git/xxxx.git
git push origin master

對(duì)于源git@xx.75.221.xxx:/home/git/xxxx.git的格式分析如下:

  • xx.75.221.xxx是服務(wù)器ip地址,或者是域名(如果有域名)
  • git是在服務(wù)器上申請(qǐng)的名叫g(shù)it的賬號(hào)名
  • /home/git/xxxx.git是服務(wù)器上保存git源的路徑

代碼源保存后,別的pc機(jī)就可以拷貝代碼以及相關(guān)的git操作了。注意,有可能會(huì)遇到訪(fǎng)問(wèn)權(quán)限報(bào)錯(cuò)的問(wèn)題,很可能是因?yàn)閟erver上沒(méi)有保存pc端的ssh公鑰,這時(shí)需要生成ssh公鑰,向服務(wù)器管理員申請(qǐng)將自己的公鑰添加進(jìn)去。

git clone git@xx.75.221.xxx:/home/git/xxxx.git

git server沒(méi)有圖形界面,需要管理員上服務(wù)器手動(dòng)添加git代碼源,手動(dòng)管理ssh公鑰,不是很方便。如果想擁有想github那樣托管網(wǎng)站,需要安裝gitlab。
參考資料:
中文參考:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000
英文參考:
https://git-scm.com/book/ca/v1/Git-on-the-Server-Setting-Up-the-Server
ssh公鑰:
https://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7%94%9F%E6%88%90-SSH-%E5%85%AC%E9%92%A5

2 Gitlab安裝

gitlab是個(gè)開(kāi)源的git托管工具,在服務(wù)器上安裝好后用戶(hù)將能像使用github一樣使用自己的代碼托管工具。官網(wǎng)提供了源碼版和安裝包版,本文采用安裝包版在ubuntu上實(shí)現(xiàn)了gitlab server。gitlab是非常成熟的開(kāi)源工具,只需要一步步跟隨官網(wǎng)的指引就可以完成,不多贅述。

安裝好后配置文件如下,文件中給出了詳細(xì)的配置說(shuō)明。

/etc/gitlab/gitlab.rb

刷新配置:

gitlab-ctl reconfigure

3 gitlab 備份

為防止gitlab服務(wù)器出現(xiàn)災(zāi)難性的問(wèn)題導(dǎo)致代碼丟失,需要考慮到日常備份的問(wèn)題。這里介紹服務(wù)器本地備份以及將本地備份定期上傳至另一臺(tái)ftp服務(wù)器。

3.1 本地定期備份:

在配置文件/etc/gitlab/gitlab.rb中添加如下內(nèi)容,意思是保存7天內(nèi)的備份文件。

# limit backup lifetime to 7 days - 604800 seconds
gitlab_rails['backup_keep_time'] = 604800

服務(wù)器定期執(zhí)行備份工作,執(zhí)行如下命令

sudo –u
crontab –e

添加如下內(nèi)容:

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

意思是每到2:00, 執(zhí)行備份. 備份文件目錄是:

 /var/opt/gitlab/backups/

備份恢復(fù)參考如下:
https://docs.gitlab.com/ce/raketasks/backup_restore.html

3.2 遠(yuǎn)程定期備份

參考前面一節(jié)添加定期任務(wù):

#每天3:00啟動(dòng)上傳腳本uploadbackup.sh 
0 3 * * * /bin/sh /home/username/uploadbackup.sh CRON=1

每到3:00執(zhí)行遠(yuǎn)程上傳腳本,腳本內(nèi)容如下:

$ cat ~/uploadbackup.sh 
#!/bin/sh
#找到一天以?xún)?nèi)的備份文件,并以星期號(hào)命名,拷貝至新的路徑下
```shell
find /var/opt/gitlab/backups/ -mtime -1 -name "*" -exec cp -f {} /home/username/gitbackup/`date +%a`.gitlab_backup.tar \;

#登陸ftp服務(wù)器并上傳文件
ftp -n 10.xx.xx.151 << EOF
user username password
bin
cd ftpuser/gitbackup/
lcd /home/username/gitbackup/
prompt
mput *
bye
EOF

以星期號(hào)重命名是為了只保存一個(gè)星期內(nèi)的備份文件,因?yàn)槊窟^(guò)一個(gè)星期將會(huì)有新的同樣命名的文件覆蓋一個(gè)星期之前的舊文件。如果每次備份的名字都一樣,那么可能會(huì)遇到磁盤(pán)空間不夠的問(wèn)題。也可以研究備份的時(shí)間,備份文件的命名規(guī)則,自己定義備份的策略。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,525評(píng)論 19 139
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,837評(píng)論 9 163
  • GIT分布式版本控制系統(tǒng)最佳實(shí)踐 這篇文章來(lái)自于老男孩教育高級(jí)架構(gòu)師班12期的徐亮偉同學(xué)。 首先感謝老男孩架構(gòu)師班...
    meng_philip123閱讀 3,808評(píng)論 4 36
  • 對(duì)的人,會(huì)在對(duì)的時(shí)間,用對(duì)的姿態(tài)出現(xiàn)、相遇和相識(shí)相知。 對(duì)的人,不在于價(jià)值觀(guān),不在于學(xué)識(shí),更不是地域或者年齡。簡(jiǎn)單...
    門(mén)前柳樹(shù)閱讀 665評(píng)論 0 0
  • 蒙城舊稱(chēng)漆園,這是一座位于皖西北的小城。它太普通太渺小了,以至于在許多舊版本的中國(guó)地圖上,你都尋不到它的蹤影。但...
    青辰_閱讀 409評(píng)論 0 0

友情鏈接更多精彩內(nèi)容