私立gitlab服務器

環境描述:
ubuntu16.04 LTS
1核CPU,1G內存,20G存儲
AWS服務器(免費試用一年)前端

免費一年雲服務器
https://aws.amazon.comnginx

主要參考文件:
https://about.gitlab.com/installation/#ubuntugit

理論:

1,前言

若是您是一個後端開發,運維工程師,前端開發等等與代碼打打交道的,基本都用過Git工具。然而代碼倉庫有GitHub(全球最大代碼倉庫),Krugle,Koders,Codaes,DZone等等,據說微軟創建全球最大的代碼倉庫...不知道如今如何,可是如論如何,我依然想把代碼放在本身的服務器上面,畢竟這樣能管理全部東西,並且服務器能夠任意放本身想放的,主要仍是想本身管理。web

2,Gitlab介紹

GitLab 是一個用於倉庫管理系統的開源項目,使用Git做爲代碼管理工具,並在此基礎上搭建起來的web服務。ubuntu

用於項目

一個 GitLab 的項目至關於 git 的版本庫。 每個項目都屬於一個用戶或者一個組的單個命名空間。 若是這個項目屬於一個用戶,那麼這個擁有者對全部能夠獲取這個項目的人擁有直接管理權;若是這個項目屬於一個組,那麼該組中用戶級別的權限也會起做用。vim

每個項目都有一個可視級別,控制着誰能夠看到這個項目頁面和倉庫。 若是一個項目是 私有 的,這個項目的擁有者必須明確受權從而使特定的用戶能夠訪問。 一個 內部 的項目能夠被全部登陸的人看到,而一個 公開 的項目則是對全部人可見的。 注意,這種控制既包括 git 「fetch」 的使用也包括對項目 web 用戶界面的訪問。後端

用於鉤子

GitLab 在項目和系統級別上都支持鉤子程序。 對任意級別,當有相關事件發生時,GitLab 的服務器會執行一個包含描述性 JSON 數據的 HTTP 請求。 這是自動化鏈接你的 git 版本庫和 GitLab 實例到其餘的開發工具,好比 CI 服務器,聊天室,或者部署工具的一個極好方法。瀏覽器

用途

在一個 GitLab 項目上一塊兒工做的最簡單方法就是賦予協做者對 git 版本庫的直接 push 權限。 你能夠經過項目設定的 「Members(成員)」 部分向一個項目添加寫做者,而且將這個新的協做者與一個訪問級別關聯(不一樣的訪問級別在 組 中已簡單討論)。 經過賦予一個協做者 「Developer(開發者)」 或者更高的訪問級別,這個用戶就能夠毫無約束地直接向版本庫或者向分支進行提交。安全

另一個讓合做更解耦的方法就是使用合併請求。 它的優勢在於讓任何可以看到這個項目的協做者在被管控的狀況下對這個項目做出貢獻。 能夠直接訪問的協做者可以簡單的建立一個分支,向這個分支進行提交,也能夠開啓一個向 master 或者其餘任何一個分支的合併請求。 對版本庫沒有推送權限的協做者則能夠 「fork」 這個版本庫(即建立屬於本身的這個庫的副本),向 那個 副本進行提交,而後從那個副本開啓一個到主項目的合併請求。 這個模型使得項目擁有者徹底控制着向版本庫的提交,以及何時容許加入陌生協做者的貢獻。bash

在 GitLab 中合併請求和問題是一個長久討論的主要部分。 每個合併請求都容許在提出改變的行進行討論(它支持一個輕量級的代碼審查),也容許對一個整體性話題進行討論。 二者均可以被分配給用戶,或者組織到 milestones(里程碑) 界面。

這個部分主要聚焦於在 GitLab 中與 Git 相關的特性,可是 GitLab 做爲一個成熟的系統,它提供了許多其餘產品來幫助你協同工做,例如項目 wiki 與系統維護工具。 GitLab 的一個優勢在於,服務器設置和運行之後,你將不多須要調整配置文件或經過 SSH 鏈接服務器;絕大多數的管理和平常使用均可以在瀏覽器界面中完成。

3,gitlab對個人意義

相對公共雲倉庫,我更偏心部署一個屬於本身的雲倉庫來存儲代碼,麻煩的是在部署本身的服務器,還有成本,好比學習成本,時間成本,資金等等。可是爲了能作一個屬於本身的雲倉庫,付出也是必定的。想要收穫,必需要拿點東西去換吧?我深信這些是得失之道。意義遠不止這些,在部署的過程當中,學到的知識,付出的時間精力,收穫到的成果,這一過程讓我寫下這篇文章,記錄在運維路上的點滴。


實戰:

1,安裝必備軟件:

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates

2,啓動郵件通知系統

sudo apt-get install -y postfix
service postfix start
chkconfig --add postfix

3,更新系統倉庫源

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

4,安裝gitlab

sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee

5,啓動相關服務

service sshd restart
service postfix restart

6,啓動運行gitlab

sudo gitlab-ctl reconfigure

7,報錯處理

...cannot allocate memory ...
屏幕報紅一片:內容意思說你的機器內存不足

8,報錯處理

增長虛擬內存:

dd if=/dev/zero of=/var/swap bs=1024 count=2048000 #增長2G左右SWAP
mkswap /var/swap #設置交換文件
swapon /var/swap #激活啓用交換分區

添加以下內容到/etc/fstab,交換分區每次開機啓動自動掛載做爲系統內存使用(當系統內存不足的時候)
echo '/var/swap swap swap defaults 0 0' >> /etc/fstab

9,再次啓動gitlab

sudo gitlab-ctl reconfigure

出現以下截圖,就證實完成啓動:
私立gitlab服務器

10,查看啓動的服務狀態

`sudo gitlab-ctl status``

出現如下的run:~~ 後面顯示還有log,pid就證實啓動成功,出現down或者timeout就說明該服務未啓動
私立gitlab服務器

11,查看網絡端口跟防火牆放行

若是沒有80端口,說明gitlab的nginx服務沒有啓動,須要從新是gitlab啓動
私立gitlab服務器

實驗爲了方便驗證結果,放行全部端口,等啓動完成必須在安全組設置特定放行端口,避免沒必要要的損失。
私立gitlab服務器

12,訪問服務器的網頁

在地址欄輸入http://ip
私立gitlab服務器

13,設置root密碼,而後從新登陸,便可正常訪問

user:root
passwd:passwrds

私立gitlab服務器

14,設置服務器的域名或者IP,修改gitlab的配置文件

sudo vim /etc/gitlab/gitlab.rb

私立gitlab服務器

15,重配置gitlab服務

sudo gitlab-ctl reconfigure
私立gitlab服務器

私立gitlab服務器

16,使用域名訪問gitlab服務器

私立gitlab服務器

17,建立一個新用戶,並建立項目,添加ssh密鑰,在項目裏新增成員

私立gitlab服務器

私立gitlab服務器

私立gitlab服務器

添加ssh密鑰
私立gitlab服務器

私立gitlab服務器

18,下載和上傳代碼文件

私立gitlab服務器

私立gitlab服務器

19,非建立者沒法下載源代碼報錯

私立gitlab服務器

20,報錯處理

將本地的knowhosts刪除,從新下載源代碼
私立gitlab服務器

21,嘗試上傳代碼

私立gitlab服務器

22,在網頁上查看項目文件

私立gitlab服務器

23,查看服務器打開的端口,並在安全組或者防火牆中設置放行端口

私立gitlab服務器


感謝

若是對您有幫助,順手點個贊,我更多動力寫更多東西。....註釋:踏上運維之路,學習更多知識,以回饋社會。

相關文章
相關標籤/搜索