如何在Ubuntu/Fedora/Debian中安裝開源Web應(yīng)用GitLab
在 Git 問世之前,分布式版本控制從來都不是一件簡單的事。Git 是一個自由開源的軟件,旨在輕松且快速地對從小規(guī)模到非常巨大的項(xiàng)目進(jìn)行管理。Git 最開始由 Linus Torvalds 開發(fā),他同時也是著名的 Linux 內(nèi)核的創(chuàng)建者。在 Git 和分布式版本控制系統(tǒng)領(lǐng)域中,GitLab 是一個極棒的新產(chǎn)品。它是一個基于 Web 的 Git 倉庫管理應(yīng)用,包含代碼審查、Wiki、問題跟蹤等諸多功能。使用 GitLab 可以很方便、快速地創(chuàng)建、審查、部署及托管代碼。盡管它在其官方的服務(wù)器提供了與 Github 類似的免費(fèi)托管的代碼倉庫,但它也可以運(yùn)行在我們自己的服務(wù)器上。GitLab 有兩個不同的版本:社區(qū)版Community Edition和企業(yè)版Enterprise Edition。社區(qū)版本完全免費(fèi)且開源,遵循 MIT 協(xié)議;而企業(yè)版則遵循一個專有的協(xié)議,包含一些社區(qū)版中沒有的功能。下面介紹的是有關(guān)如何在我們自己的運(yùn)行著 Ubuntu、Fedora 或 Debian 操作系統(tǒng)的機(jī)器上安裝 GitLab 社區(qū)版的簡單步驟。
1.安裝先決條件
首先,我們需要安裝 GitLab 所依賴的軟件包。我們將安裝 curl,用以下載我們所需的文件;安裝openssh-server ,以此來通過 ssh 協(xié)議登錄到我們的機(jī)器上;安裝ca-certificates,用它來添加 CA 認(rèn)證;以及 postfix,把它作為一個 MTA(Mail Transfer Agent,郵件傳輸代理)。
注:若要安裝 GitLab 社區(qū)版,我們需要一個至少包含 2 GB 內(nèi)存和 2 核 CPU 的 linux 機(jī)器。
在 Ubuntu 14 .04/Debian 8.x 中
鑒于這些依賴包都可以在 Ubuntu 14.04 和 Debian 8.x 的官方軟件倉庫中獲取到,我們只需通過使用 apt-get 包管理器來安裝它們。為此,我們需要在一個終端或控制臺中執(zhí)行下面的命令:
- # apt-get install curl openssh-server ca-certificates postfix
install dependencies gitlab ubuntu debian
在 Fedora 22 中
在 Fedora 22 中,由于 yum 已經(jīng)被棄用了,默認(rèn)的包管理器是 dnf。為了安裝上面那些需要的軟件包,我們只需運(yùn)行下面的 dnf 命令:
- # dnf install curl openssh-server postfix
install dependencies gitlab fedora
2.打開并開啟服務(wù)
現(xiàn)在,我們將使用我們默認(rèn)的初始化系統(tǒng)來打開 sshd 和 postfix 服務(wù)。并且我們將使得它們在每次系統(tǒng)啟動時被自動開啟。
在 Ubuntu 14.04 中
由于在 Ubuntu 14.04 中安裝的是 SysVinit 初始化系統(tǒng),我們將使用 service 命令來開啟 sshd 和 postfix 守護(hù)進(jìn)程:
- # service sshd start
- # service postfix start
現(xiàn)在,為了使得它們在每次開機(jī)啟動時被自動開啟,我們需要運(yùn)行下面的 update-rc.d 命令:
- # update-rc.d sshd enable
- # update-rc.d postfix enable
在 Fedora 22/Debian 8.x 中
鑒于 Fedora 22 和 Debian 8.x 已經(jīng)用 Systemd 代替了 SysVinit 來作為默認(rèn)的初始化系統(tǒng),我們只需運(yùn)行下面的命令來開啟 sshd 和 postfix 服務(wù):
- # systemctl start sshd postfix
現(xiàn)在,為了使得它們在每次開機(jī)啟動時可以自動運(yùn)行,我們需要運(yùn)行下面的 systemctl 命令:
- # systemctl enable sshd postfix
- Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
- Created symlink from /etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service.
3.下載 GitLab
現(xiàn)在,我們將使用 curl 從官方的 GitLab 社區(qū)版?zhèn)}庫下載二進(jìn)制安裝文件。首先,為了得到所需文件的下載鏈接,我們需要瀏覽到該軟件倉庫的頁面。為此,我們需要在運(yùn)行著相應(yīng)操作系統(tǒng)的 Linux 機(jī)器上運(yùn)行下面的命令。
在 Ubuntu 14.04 中
由于 Ubuntu 和 Debian 使用相同的 debian 格式的安裝包,我們需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 下搜索所需版本的 GitLab,然后點(diǎn)擊有著 ubuntu/trusty 標(biāo)簽的鏈接,即我們運(yùn)行著的 Ubuntu 14.04。接著一個新的頁面將會出現(xiàn),我們將看到一個下載按鈕,然后我們在它的上面右擊,得到文件的鏈接,然后像下面這樣使用 curl 來下載它。
- # curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.1.2-ce.0_amd64.deb
Downloading Gitlab Ubuntu
在 Debian 8.x 中
與 Ubuntu 類似,我們需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 頁面中搜索所需版本的 GitLab,然后點(diǎn)擊帶有 debian/jessie 標(biāo)簽的鏈接,即我們運(yùn)行著的 Debian 8.x。接著,一個新的頁面將會出現(xiàn),然后我們在下載按鈕上右擊,得到文件的下載鏈接。***,我們像下面這樣使用 curl 來下載該文件。
- # curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_8.1.2-ce.0_amd64.deb/download
Downloading Gitlab Debian
在 Fedora 22 中
由于 Fedora 使用 rpm 文件來作為軟件包,我們將在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=rpms 頁面下搜索所需版本的 GitLab,然后點(diǎn)擊所需發(fā)行包的鏈接,這里由于我們運(yùn)行的是 Fedora 22,所以我們將選擇帶有 el/7 標(biāo)簽的發(fā)行包。一個新的頁面將會出現(xiàn),在其中我們可以看到一個下載按鈕,我們將右擊它,得到所需文件的鏈接,然后像下面這樣使用 curl 來下載它。
- # curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm/download
Downloading Gitlab Fedora
4. 安裝 GitLab
在相應(yīng)的軟件源被添加到我們的 Linux 機(jī)器上之后,現(xiàn)在我們將使用相應(yīng) Linux 發(fā)行版本中的默認(rèn)包管理器來安裝 GitLab 社區(qū)版。
在 Ubuntu 14.04/Debian 8.x 中
要在運(yùn)行著 Ubuntu 14.04 或 Debian 8.x linux 發(fā)行版本的機(jī)器上安裝 GitLab 社區(qū)版,我們只需運(yùn)行如下的命令:
- # dpkg -i gitlab-ce_8.1.2-ce.0_amd64.deb
Installing Gitlab Ubuntu Debian
在 Fedora 22 中
我們只需執(zhí)行下面的 dnf 命令來在我們的 Fedora 22 機(jī)器上安裝 GitLab。
- # dnf install gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm
Installing Gitlab Fedora
5.配置和開啟 GitLab
GitLab 社區(qū)版已經(jīng)成功地安裝在我們的 Linux 系統(tǒng)中了,接下來我們將要配置和開啟它了。為此,我們需要運(yùn)行下面的命令,這在 Ubuntu、Debian 和 Fedora 發(fā)行版本上,都一樣:
- # gitlab-ctl reconfigure
Reconfiguring Gitlab
6. 允許通過防火墻
假如在我們的 Linux 機(jī)器中已經(jīng)啟用了防火墻程序,為了使得 GitLab 社區(qū)版的 Web 界面可以通過網(wǎng)絡(luò)進(jìn)行訪問,我們需要允許 80 端口通過防火墻,這個端口是 GitLab 社區(qū)版的默認(rèn)端口。為此,我們需要運(yùn)行下面的命令。
在 iptables 中
Ubuntu 14.04 默認(rèn)安裝和使用的是 iptables。所以,我們將運(yùn)行下面的 iptables 命令來打開 80 端口:
- # iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
- # /etc/init.d/iptables save
在 firewalld 中
由于 Fedora 22 和 Debian 8.x 默認(rèn)安裝了 systemd,它包含了作為防火墻程序的 firewalld。為了使得 80 端口(http 服務(wù)) 能夠通過 firewalld,我們需要執(zhí)行下面的命令。
- # firewall-cmd --permanent --add-service=http
- success
- # firewall-cmd --reload
- success
7.訪問 GitLab Web 界面
***,我們將訪問 GitLab 社區(qū)版的 Web 界面。為此,我們需要將我們的 Web 瀏覽器指向 GitLab 服務(wù)器的網(wǎng)址,根據(jù)我們的配置,可能是 http://ip-address/ 或 http://domain.com/ 的格式。在我們成功指向該網(wǎng)址后,我們將會看到下面的頁面。
Gitlab Login Screen
現(xiàn)在,為了登錄進(jìn)面板,我們需要點(diǎn)擊登錄按鈕,它將詢問我們的用戶名和密碼。然后,我們將輸入默認(rèn)的用戶名和密碼,即 root 和 5iveL!fe 。在登錄進(jìn)控制面板后,我們將被強(qiáng)制要求為我們的 GitLab root 用戶輸入新的密碼。
Setting New Password Gitlab
8.創(chuàng)建倉庫
在我們成功地更改密碼并登錄到我們的控制面板之后,現(xiàn)在,我們將為我們的新項(xiàng)目創(chuàng)建一個新的倉庫。為此,我們需要來到項(xiàng)目欄,然后點(diǎn)擊“新項(xiàng)目” 綠色按鈕。
Creating New Projects
接著,我們將被詢問給我們的項(xiàng)目輸入所需的信息和設(shè)定,正如下面展示的那樣。我們甚至可以從其他的 Git 倉庫提供商和倉庫中導(dǎo)入我們的項(xiàng)目。
Creating New Project
做完這些后,我們將能夠使用任何包含基本 Git 命令行的 Git 客戶端來訪問我們的 Git 倉庫。我們可以看到在倉庫中進(jìn)行的任何活動,例如創(chuàng)建一個里程碑,管理問題,合并請求,管理成員,便簽,Wiki 等。
Gitlab Menu
總結(jié)
GitLab 是一個用來管理 Git 倉庫的很棒的開源 Web 應(yīng)用。它有著漂亮的帶有諸多酷炫功能的響應(yīng)式界面。它還打包有許多酷炫功能,例如管理群組,分發(fā)密鑰,持續(xù)集成,查看日志,廣播消息,鉤子,系統(tǒng) OAuth 應(yīng)用,模板等。(注:OAuth 是一個開放標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問該用戶在某一網(wǎng)站上存儲的私密的資源(如照片,視頻,聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應(yīng)用。--- 摘自 維基百科上的 OAuth 詞條) 它還可以和大量的工具進(jìn)行交互如 Slack,Hipchat,LDAP,JIRA,Jenkins,有很多類型的鉤子和完整的 API。它至少需要 2 GB 的內(nèi)存和 2 核 CPU 來流暢運(yùn)行,支持多達(dá) 500 個用戶,但它也可以被擴(kuò)展到多個工作服務(wù)器上。
假如你有任何的問題,建議,回饋,請將它們寫在下面的評論框中,以便我們可以提升或更新我們的內(nèi)容。謝謝!