git 入門教程之 git 私服搭建教程

git 私服搭建教程

前幾節咱們的遠程倉庫使用的是 github 網站,託管項目大可能是公開的,若是不想讓任何人都能看到就須要收費,並且 github 網站畢竟在國外,訪問速度太慢,基於上述兩點緣由,咱們有必要搭建本身的 git 服務器.linux

雖然咱們能搭建基本的 git 服務器,可是想要作到 github 網站那種規模還不是目前可以探討的,本節的主要目標是使用咱們私有服務器對我提供相似於github的遠程倉庫託管服務,如下示例以centos 服務器爲例說明:git

安裝 git 服務

運行如下命令安裝 git 服務github

# 安裝 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 服務centos

# 新增 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 用戶嗎?ssh

由於 linux 系統支持多用戶操做,而 git 用戶就用於專門運行 git 服務,負責全部和 git 有關的事宜.所以,導入公鑰文件的目錄就是/home/git/.ssh/authorized_keys文件.一個用戶公鑰佔用一行,幾個用戶就有幾行.curl

# 切換到 git 用戶主目錄
cd /home/git/

# 建立.ssh 目錄
mkdir .ssh

# 賦予標準目錄權限
chmod 755 .ssh

# 建立authorized_keys文件
touch .ssh/authorized_keys

# 賦予標籤文件權限
chmod 744 .ssh/authorized_keys

初始化 git 倉庫

一樣咱們和github 網站類比,在 github 建立倉庫時都會在當前帳號下建立項目,完整的訪問路徑大概是這樣的: git@github.com: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 測試項目,實際訪問路徑大概是這樣的
git@snowdreams1006.cn:/home/git/repos/git-demo.giturl

本地克隆遠程倉庫

身份回到本地電腦,假設本地已搭建好 git 環境,而且生成的ssh 公鑰上傳到遠程服務器,那麼咱們接下來就能夠和以前遠程服務器是 github 網站那樣的方式開發咱們的項目了,惟一不一樣的是,接下來咱們推送的遠程服務器均是咱們剛搭建好的主機.

須要作好內心準備,咱們搭建的服務器還很簡單,沒有 github 網站那樣能夠直觀操做遠程倉庫,可是這並不影響咱們的 pull push merge 等操做喲!

git clone git@snowdreams1006.cn:/home/git/repos/git-demo.git
git-指的是 git 用戶,snowdreams1006.cn-指的是遠程主機域名或ip,/home/git/repos-指的是 git 倉庫的目錄,git-demo.git-指的是項目名稱

如今咱們已經成功搭建好本身的 git私服了,是否是很簡單呢?有沒有對 gitgithub 進一步理解?歡迎你們一塊兒探討!

相關文章
相關標籤/搜索