Linux中國

搭建屬於你自己的 Git 伺服器

Git 是由 Linux Torvalds 開發的一個版本控制系統,現如今正在被全世界大量開發者使用。許多公司喜歡使用基於 Git 版本控制的 GitHub 代碼託管。根據報道,GitHub 是現如今全世界最大的代碼託管網站。GitHub 宣稱已經有 920 萬用戶和 2180 萬個倉庫。許多大型公司現如今也將代碼遷移到 GitHub 上。甚至於谷歌,一家搜索引擎公司,也正將代碼遷移到 GitHub 上。

運行你自己的 Git 伺服器

GitHub 能提供極佳的服務,但卻有一些限制,尤其是你是單人或是一名 coding 愛好者。GitHub 其中之一的限制就是其中免費的服務沒有提供代碼私有託管業務。你不得不支付每月 7 美金購買 5 個私有倉庫,並且想要更多的私有倉庫則要交更多的錢。

萬一你想要私有倉庫或需要更多許可權控制,最好的方法就是在你的伺服器上運行 Git。不僅你能夠省去一筆錢,你還能夠在你的伺服器有更多的操作。在大多數情況下,大多數高級 Linux 用戶已經擁有自己的伺服器,並且在這些伺服器上方式 Git 就像「啤酒一樣免費」(LCTT 譯註:指免費軟體)。

在這篇教程中,我們主要講在你的伺服器上,使用兩種代碼管理的方法。一種是運行一個純 Git 伺服器,另一個是使用名為 GitLab 的 GUI 工具。在本教程中,我在 VPS 上運行的操作系統是 Ubuntu 14.04 LTS。

在你的伺服器上安裝 Git

在本篇教程中,我們考慮一個簡單案例,我們有一個遠程伺服器和一台本地伺服器,現在我們需要使用這兩台機器來工作。為了簡單起見,我們就分別叫它們為遠程伺服器和本地伺服器。

首先,在兩邊的機器上安裝 Git。你可以從依賴包中安裝 Git,在本文中,我們將使用更簡單的方法:

sudo apt-get install git-core

為 Git 創建一個用戶。

sudo useradd git
passwd git

為了容易的訪問伺服器,我們設置一個免密 ssh 登錄。首先在你本地電腦上創建一個 ssh 密鑰:

ssh-keygen -t rsa

這時會要求你輸入保存密鑰的路徑,這時只需要點擊回車保存在默認路徑。第二個問題是輸入訪問遠程伺服器所需的密碼。它生成兩個密鑰——公鑰和私鑰。記下您在下一步中需要使用的公鑰的位置。

現在您必須將這些密鑰複製到伺服器上,以便兩台機器可以相互通信。在本地機器上運行以下命令:

cat ~/.ssh/id_rsa.pub | ssh git@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

現在,用 ssh 登錄進伺服器並為 Git 創建一個項目路徑。你可以為你的倉庫設置一個你想要的目錄。

現在跳轉到該目錄中:

cd /home/swapnil/project-1.git

現在新建一個空倉庫:

git init --bare
Initialized empty Git repository in /home/swapnil/project-1.git

現在我們需要在本地機器上新建一個基於 Git 版本控制倉庫:

mkdir -p /home/swapnil/git/project

進入我們創建倉庫的目錄:

cd /home/swapnil/git/project

現在在該目錄中創建項目所需的文件。留在這個目錄並啟動 git:

git init
Initialized empty Git repository in /home/swapnil/git/project

把所有文件添加到倉庫中:

git add .

現在,每次添加文件或進行更改時,都必須運行上面的 add 命令。 您還需要為每個文件更改都寫入提交消息。提交消息基本上說明了我們所做的更改。

git commit -m "message" -a
[master (root-commit) 57331ee] message
 2 files changed, 2 insertions(+)
 create mode 100644 GoT.txt
 create mode 100644 writing.txt

在這種情況下,我有一個名為 GoT(《權力的遊戲》的點評)的文件,並且我做了一些更改,所以當我運行命令時,它指定對文件進行更改。 在上面的命令中 -a 選項意味著提交倉庫中的所有文件。 如果您只更改了一個,則可以指定該文件的名稱而不是使用 -a。

舉一個例子:

git commit -m "message" GoT.txt
[master e517b10] message
 1 file changed, 1 insertion(+)

到現在為止,我們一直在本地伺服器上工作。現在我們必須將這些更改推送到遠程伺服器上,以便通過互聯網訪問,並且可以與其他團隊成員進行協作。

git remote add origin ssh://git@remote-server/repo-<wbr< a="">>path-on-server..git

現在,您可以使用 pull 或 push 選項在伺服器和本地計算機之間推送或拉取:

git push origin master

如果有其他團隊成員想要使用該項目,則需要將遠程伺服器上的倉庫克隆到其本地計算機上:

git clone git@remote-server:/home/swapnil/project.git

這裡 /home/swapnil/project.git 是遠程伺服器上的項目路徑,在你本機上則會改變。

然後進入本地計算機上的目錄(使用伺服器上的項目名稱):

cd /project

現在他們可以編輯文件,寫入提交更改信息,然後將它們推送到伺服器:

git commit -m &apos;corrections in GoT.txt story&apos; -a

然後推送改變:

git push origin master

我認為這足以讓一個新用戶開始在他們自己的伺服器上使用 Git。 如果您正在尋找一些 GUI 工具來管理本地計算機上的更改,則可以使用 GUI 工具,例如 QGit 或 GitK for Linux。

使用 GitLab

這是項目所有者和協作者的純命令行解決方案。這當然不像使用 GitHub 那麼簡單。不幸的是,儘管 GitHub 是全球最大的代碼託管商,但是它自己的軟體別人卻無法使用。因為它不是開源的,所以你不能獲取源代碼並編譯你自己的 GitHub。這與 WordPress 或 Drupal 不同,您無法下載 GitHub 並在您自己的伺服器上運行它。

像往常一樣,在開源世界中,是沒有終結的盡頭。GitLab 是一個非常優秀的項目。這是一個開源項目,允許用戶在自己的伺服器上運行類似於 GitHub 的項目管理系統。

您可以使用 GitLab 為團隊成員或公司運行類似於 GitHub 的服務。您可以使用 GitLab 在公開發布之前開發私有項目。

GitLab 採用傳統的開源商業模式。他們有兩種產品:免費的開源軟體,用戶可以在自己的伺服器上安裝,以及類似於 GitHub 的託管服務。

可下載版本有兩個版本,免費的社區版和付費企業版。企業版基於社區版,但附帶針對企業客戶的其他功能。它或多或少與 WordPress.org 或 WordPress.com 提供的服務類似。

社區版具有高度可擴展性,可以在單個伺服器或群集上支持 25000 個用戶。GitLab 的一些功能包括:Git 倉庫管理,代碼評論,問題跟蹤,活動源和維基。它配備了 GitLab CI,用於持續集成和交付。

Digital Ocean 等許多 VPS 提供商會為用戶提供 GitLab 服務。 如果你想在你自己的伺服器上運行它,你可以手動安裝它。GitLab 為不同的操作系統提供了軟體包。 在我們安裝 GitLab 之前,您可能需要配置 SMTP 電子郵件伺服器,以便 GitLab 可以在需要時隨時推送電子郵件。官方推薦使用 Postfix。所以,先在你的伺服器上安裝 Postfix:

sudo apt-get install postfix

在安裝 Postfix 期間,它會問你一些問題,不要跳過它們。 如果你一不小心跳過,你可以使用這個命令來重新配置它:

sudo dpkg-reconfigure postfix

運行此命令時,請選擇 「Internet Site」並為使用 Gitlab 的域名提供電子郵件 ID。

我是這樣輸入的:

xxx@x.com

用 Tab 鍵並為 postfix 創建一個用戶名。接下來將會要求你輸入一個目標郵箱。

在剩下的步驟中,都選擇默認選項。當我們安裝且配置完成後,我們繼續安裝 GitLab。

我們使用 wget 來下載軟體包(用 最新包 替換下載鏈接):

wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.9.4-omnibus.1-1_amd64.deb

然後安裝這個包:

sudo dpkg -i gitlab_7.9.4-omnibus.1-1_amd64.deb

現在是時候配置並啟動 GitLab 了。

sudo gitlab-ctl reconfigure

您現在需要在配置文件中配置域名,以便您可以訪問 GitLab。打開文件。

nano /etc/gitlab/gitlab.rb

在這個文件中編輯 external_url 並輸入伺服器域名。保存文件,然後從 Web 瀏覽器中打開新建的一個 GitLab 站點。

默認情況下,它會以系統管理員的身份創建 root,並使用 5iveL!fe 作為密碼。 登錄到 GitLab 站點,然後更改密碼。

密碼更改後,登錄該網站並開始管理您的項目。

GitLab 有很多選項和功能。最後,我借用電影「黑客帝國」中的經典台詞:「不幸的是,沒有人知道 GitLab 可以做什麼。你必須親自嘗試一下。」

via: https://www.linux.com/learn/how-run-your-own-git-server

作者:Swapnil Bhartiya 選題:lujun9972 譯者:wyxplus 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理。

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...