git 入門教程之 git 私服搭建教程
git 私服搭建教程
前幾節我們的遠端倉庫使用的是github
網站,託管專案大多是公開的,如果不想讓任何人都能看到就需要收費,而且github
網站畢竟在國外,訪問速度太慢,基於上述兩點原因,我們有必要搭建自己的git
伺服器.
雖然我們能搭建基本的git
伺服器,但是想要做到github
網站那種規模還不是目前能夠探討的,本節的主要目標是使用我們私有伺服器對我提供類似於github
的遠端倉庫託管服務,以下示例以centos
伺服器為例說明:
安裝 git 服務
執行以下命令安裝git
服務
# 安裝 git 相關依賴 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel # 安裝 git yum install git # 檢視 git 版本 git --version
詳情請參考安裝 git
配置 git 使用者
建立git
使用者組和git
使用者,以便對外提供git
服務
# 新增 git 使用者組 groupadd git # 新增 git 使用者並歸屬於 git 使用者組 useradd git -g git
收集 git 公鑰
回憶一下,在我們使用github
網站時,我們是不是曾經將本地電腦生成的公鑰~/.ssh/id_rsa.pub
複製到Account -> Settings -> SSH and GPG keys -> New SSH key
,而我們現在搭建的git
服務還是簡單,但是這步驟必不可少,因此只能手動收集
素有需要訪問我們伺服器的公鑰檔案.
我們知道需要登入我們伺服器的使用者公鑰一般是存放在~/.ssh/id_rsa.pub
,那當前伺服器作為遠端伺服器將這些公鑰存放到哪裡呢?還記得上一步我們建立了git
使用者嗎?
因為linux
系統支援多使用者操作,而git
使用者就用於專門執行git
服務,負責所有和git
有關的事宜.因此,匯入公鑰檔案的目錄就是/home/git/.ssh/authorized_keys
檔案.一個使用者公鑰佔用一行,幾個使用者就有幾行.
# 切換到 git 使用者主目錄 cd /home/git/ # 建立.ssh 目錄 mkdir .ssh # 賦予標準目錄許可權 chmod 755 .ssh # 建立authorized_keys檔案 touch .ssh/authorized_keys # 賦予標籤檔案許可權 chmod 744 .ssh/authorized_keys
初始化 git 倉庫
同樣我們和github
網站類比,在github
建立倉庫時都會在當前賬號下建立專案,完整的訪問路徑大概是這樣的:[email protected]:snowdreams1006/git-demo.git
,從中我們可以看出專案倉庫都有一個字首即名稱空間,這和上一步操作是不是很類似,上一步收集git
公鑰時我們也有統一的目錄,這次也不例外.
假設git
倉庫存放目錄在/home/git/repos/
,同樣的先建立該目錄並賦予響應許可權.
# 切換到 git 使用者主目錄 cd /home/git/ # 建立 repos 目錄 mkdir repos # 更改 repos 目錄屬主 chown git:git repos/ # 切換到 repos 目錄 cd repos # 初始化 git 倉庫 git init --bare git-demo.git # 更改 git-demo.git 倉庫屬主 chown -R git:git git-demo.git
經過上述操作,我們成功在遠端伺服器部署了git
服務,並且建立了git-demo
測試專案,實際訪問路徑大概是這樣的
[email protected]:/home/git/repos/git-demo.git
本地克隆遠端倉庫
身份回到本地電腦,假設本地已搭建好git
環境,並且生成的ssh
公鑰上傳到遠端伺服器,那麼我們接下來就可以和之前遠端伺服器是github
網站那樣的方式開發我們的專案了,唯一不同的是,接下來我們推送的遠端伺服器均是我們剛搭建好的主機.
需要做好心裡準備,我們搭建的伺服器還很簡單,沒有github
網站那樣可以直觀操作遠端倉庫,但是這並不影響我們的pull push merge
等操作喲!
git clone [email protected]:/home/git/repos/git-demo.git
git-指的是 git 使用者,snowdreams1006.cn-指的是遠端主機域名或ip,/home/git/repos-指的是 git 倉庫的目錄,git-demo.git-指的是專案名稱
現在我們已經成功搭建好自己的git
私服了,是不是很簡單呢?有沒有對git
和github
進一步理解?歡迎大家一起探討!