2019年10月17日木曜日

在 Ubuntu 18.04 上架設 GitLab

就像這篇的標題一樣
這篇主要是用來記錄怎麼架設 GitLab
GitLab 主要有 2 個版本
一個是 CE
一個是 EE
CE 是 Community Edition
EE 是 Enterprise Edition
因為 CE 不用錢
所以這篇裝的是 CE 版

TL;DR

安裝指令

sudo apt update
sudo apt upgrade -y
sudo apt install curl openssh-server ca-certificates postfix -y

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce -y

設定

安裝完之後開啟 /etc/gitlab/gitlab.rb 這個檔案

sudo gedit /etc/gitlab/gitlab.rb

找到 external_url 這行
然後把 URL 寫進去
看起來會像下面這樣

external_url 'http://any.address'

然後讓 gitlab 做一次重新設定

sudo gitlab-ctl reconfigure

最後設定防火牆

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

下面這行可以確認防火牆服務的狀態

sudo ufw status

就這樣沒了!!



硬體需求

根據官方文件描述

CPU 的部分

1 core supports up to 100 users but the application can be a bit slower due to having all workers and background jobs running on the same core
2 cores is recommended minimum number of cores and supports up to 100 users
4 cores supports up to 500 users
8 cores supports up to 1,000 users
32 cores supports up to 5,000 users

基本上如果有大於 5,000 使用者的需求
就需要做其他的設定來換取系統的效能
不過因為我用不到這麼多人的需求
所以就不考慮了

是說現在這個時間點也找不到一台 1 核心的電腦就是了
當然如果是用 VM 架的那就另當別論了...

記憶體的部分

4GB RAM + 4GB swap supports up to 100 users but it will be very slow
8GB RAM is the recommended minimum memory size for all installations and supports up to 100 users
16GB RAM supports up to 500 users
32GB RAM supports up to 1,000 users
128GB RAM supports up to 5,000 users

官方文件上是建議最少 8GB 啦
雖然它說 4GB 也可以
但是另外 4GB 是靠 swap 來運作的話基本上就慢了呀 @@
而且根據 repo 的大小有可能會需要更多或更少的記憶體
這就要看使用情況而定了

資料庫的部分

官方建議至少 5 ~ 10 GB
看需求而定
目前 12.1 以上的版本是支援 PostgreSQL
之前的 MySQL/MariaDB 建議是在升級之前移動到 PostgreSQL 去

支援的網頁瀏覽器

Firefox
Chrome/Chromium
Safari
Microsoft Edge
Internet Explorer 11
※不支援 JavaScript disabled 的環境

安裝

更新 package

反正在 ubuntu 上不管做什麼
只要用到 package 相依的東西就會要做這個動作
不過其實也不是這麼必要就是了
就自己選擇看要不要做就好...

sudo apt update
sudo apt upgrade -y

安裝相依套件

sudo apt install curl openssh-server ca-certificates postfix -y

安裝 GitLab

先追加 GitLab package repository

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

追加完之後先暫停一下
在執行安裝之前
要講一個東西叫做 EXTERNAL_URL
這個東西就是之後要被外部存取的 URL
依照官方文件的描述
要先指定這個變數再進行安裝
所以看起來會像下面這樣

sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

但是如果這個時候還沒有要決定 url 的話也沒關係
就直接向下面這樣給他安裝也不會有問題

sudo apt install gitlab-ce -y

為什麼要把這個拿出來講的的原因是因為
我一開始沒有看文件就隨邊敲了個安裝指令
然後他就跳警告訊息了 =口=

不過這個值可以從檔案直接改所以也沒什麼影響就是了w
這個檔案是 /etc/gitlab/gitlab.rb
找個 editor 把這個檔案打開

sudo gedit /etc/gitlab/gitlab.rb

然後在裡面可以找到一行

external_url 

然後空空的東西
這邊就是可以填入 url 的地方
填完看起來會像下面這樣

external_url 'http://192.168.8.106'

這邊因為沒有要上 global 的需求
所以只給個 local ip 就可以了

然後就是跑一次 GitLab 的重新設定

sudo gitlab-ctl reconfigure

防火牆設定

這個沒設的話可能會沒辦法存取喔...
這裡用 ufw 來設定

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

然後啟動它

sudo ufw allow enable

檢查它的狀態

sudo ufw status

其他

HTTP server

是說因為 GitLab 本身已經內建 Nginx 了
所以原本如果有執行其他 httpd 的話可能會衝突
它的預設 port 是 80
如果已經有其他 web 也佔用了的話
這樣就要另外設定了!!

GitLab 的啟動跟停止

sudo gitlab-ctl stop
sudo gitlab-ctl start