#阿里雲#雲服務器搭建git服務器


前言:你們都知道,git是很是方便的版本控制工具,目前網上有不少免費的git倉庫能夠給咱們使用,可是有些時候咱們並不放心將咱們的項目寄放在別人的服務器上,這個時候就須要本身搭建一個git服務器,十分的簡單。這文介紹如何在阿里雲服務器上搭建本身的git服務器。html


 

1.安裝git

在Ubuntu系統中,git安裝只須要簡單命令就能夠完成,只須要打開終端,輸入以下命令:git

sudo apt-get update
sudo apt-get install git

git是分佈式的,每個安裝了git的電腦,既是客戶端,也是服務器,git與git之間能夠相互通訊,而咱們所謂的git服務器,實際上和咱們本身的電腦沒有什麼本質上的差異。可是,咱們爲了更有效的管理項目,都採起中心化的管理方式,所以建立一個「git服務器」,做爲其餘全部人提交代碼的最終終端。shell

2.建立git用戶及權限

咱們固然不容許直接使用root用戶來與服務器進行通訊交互了,因此,咱們建立一個git用戶,做爲從此提交代碼的用戶。vim

使用命令:adduser git,建立新用戶。能夠在/home目錄下看到新出現的git目錄。bash

因爲git用戶的特殊性,咱們不但願用戶經過ssh鏈接到服務器上面去,因此,須要給git用戶添加必定的權限。編輯系統權限文件:服務器

  • 使用命令:vi /etc/passwd,打開文件;
  • 找到相似一行:git:x:1001:1001:,,,:/home/git:/bin/bash,應該是在最後一行;
  • 修改成:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell。

3.公鑰

git裏面比較特殊的一步操做,通訊的時候,客戶端與服務器須要一個證書進行驗證。ssh

(1)客戶端(本機)如何生成公鑰?可參考:生成 SSH 公鑰分佈式

Linux自帶ssh工具,能夠很方便地生成和查看ssh公鑰。工具

  • 查看本機時候存在ssh公鑰,命令:cat ~/.ssh/id_rsa.pub。
  • 若存在公鑰,上述命令會返回一個很長的字符串,那個東西就是咱們想要的公鑰。
  • 若不存在公鑰,返回爲空或者報錯,使用命令:ssh-keygen。不用管問什麼,默認直接回車就行,建立完畢以後再次查詢公鑰,返回咱們須要的字符串了。

(2)服務器添加公鑰:在/home/git目錄下,使用命令:mkdir .ssh,cd .ssh,vi authorized_keys。而後把本身的公鑰粘貼進去,保存退出。(vim經常使用命令總結測試

若是團隊很小,把每一個人的公鑰收集起來放到服務器的/home/git/.ssh/authorized_keys文件裏就是可行的。若是團隊有幾百號人,就無法這麼玩了,這時,能夠用Gitosis來管理公鑰。

4.初始化一個git倉庫

我選擇把個人倉庫放在/var目錄下,固然能夠放在其餘地方,最後只須要記住完整目錄便可。

新建git目錄並修改其權限,使用git命令初始化一個倉庫:

  • 進入想要的目錄:cd /var。
  • 建立文件夾:mkdir git。
  • 修改權限:chown -R git:git git,chmod 777 git。
  • 進入git目錄:cd git。
  • 初始化本身的倉庫:git init --bare MyWeb.git。

完成以後,咱們的遠程倉庫地址爲:git@IP地址:/var/git//MyWeb.git。這的遠程地址在以後會用得上。

注意:.git目錄必需要有可讀寫權限,由於當咱們在push的時候,是使用git用戶推送到服務器上面去,會有一個寫入的過程,若是不賦予可寫權限,push就會失敗。因此使用命令:chown -R git:git MyWeb.git。

5.測試

(1)克隆項目:git clone git@IP地址:/var/git/MyWeb.git

(2)上傳項目:

  • 本地項目文件夾目錄下,鼠標右鍵「Git Bash Here」
  • 創建本地倉庫,命令:git init。
  • 添加目錄全部文件,命令:git add *。提交命令:git commit -m "init files"。
  • 與遠程倉庫綁定,命令:git remote add origin git@47.95.192.***:/var/git/MyWeb.git。
  • 綁定成功後就可使用push和pull命令進行上傳和下拉了,建議先pull一下:git pull --rebase origin master。成功後在push上去:git push -u origin master。

在push的時候克隆會遇到一些問題,根據錯誤提示百度解決方案就行了,有多是權限緣由,或者是文件衝突等。好比我遇到了錯誤:failed to push some refs to 'git@47.95.192.***:/var/git/MyWeb.git' ,緣由是遠程倉庫中有文件不在本地倉庫,須要先pull才能push。

 

好了,如今能夠正常使用本身的git服務器了,後續更多git操做就很少說了,初學者能夠看看廖雪峯的git教程

 

參考連接

在阿里雲上搭建本身的git服務器:http://www.javashuo.com/article/p-bokkzapt-ce.html

push出現錯誤:https://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html

 


 本文版權歸做者AlvinZH和博客園全部,歡迎轉載和商用,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利.

相關文章
相關標籤/搜索