前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。
簡介
GitLab CE(Community Edition)是一個開源應用程序,主要用于托管 Git 倉庫,并提供額外的與開發相關的功能,如問題跟蹤。它旨在使用您自己的基礎設施進行托管,并提供靈活性,可將其部署為開發團隊的內部倉庫存儲,公開作為與用戶交互的方式,甚至作為貢獻者托管其自己項目的方式。
GitLab 項目使在自己的硬件上設置 GitLab 實例相對簡單,具有簡單的安裝機制。在本指南中,我們將介紹如何在 Ubuntu 16.04 服務器上安裝和配置 GitLab。
先決條件
本教程假定您可以訪問一個全新的 Ubuntu 16.04 服務器。發布的 GitLab 硬件要求建議使用具有以下配置的服務器:
- 2 個核心
- 4GB 的 RAM
盡管您可能可以通過將一些交換空間替換為 RAM 來滿足要求,但不建議這樣做。在本指南中,我們將假設您至少具有上述資源。
為了開始,您需要在服務器上配置一個具有 sudo
訪問權限的非根用戶。另外,設置一個基本的防火墻以提供額外的安全層也是一個好主意。您可以按照我們的 Ubuntu 16.04 初始服務器設置指南中的步驟進行設置。
當您滿足上述先決條件后,繼續開始安裝過程。
安裝依賴項
在安裝 GitLab 本身之前,重要的是安裝一些在安裝過程中和持續運行中它所利用的軟件。幸運的是,所有必需的軟件都可以輕松地從 Ubuntu 的默認軟件包存儲庫中安裝。
由于這是我們在本次會話中第一次使用 apt
,我們可以通過輸入以下命令來刷新本地軟件包索引,然后安裝依賴項:
sudo apt-get update
sudo apt-get install ca-certificates curl openssh-server postfix
您可能已經安裝了其中一些軟件。對于 postfix
安裝,選擇在提示時選擇 Internet Site。在下一個屏幕上,輸入您的服務器域名或 IP 地址以配置系統發送郵件的方式。
安裝 GitLab
現在依賴項已經就位,我們可以安裝 GitLab 本身了。這是一個直接的過程,利用安裝腳本來配置您的系統與 GitLab 倉庫。
進入 /tmp
目錄,然后下載安裝腳本:
cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
隨時隨地檢查下載的腳本,以確保您對它將要執行的操作感到滿意。您也可以在這里找到托管版本的腳本:
less /tmp/script.deb.sh
一旦您對腳本的安全性感到滿意,運行安裝程序:
sudo bash /tmp/script.deb.sh
該腳本將設置您的服務器以使用由 GitLab 維護的倉庫。這使您可以使用用于其他系統軟件包的包管理工具來管理 GitLab。完成后,您可以使用 apt
安裝實際的 GitLab 應用程序:
sudo apt-get install gitlab-ce
這將在您的系統上安裝必要的組件。
調整防火墻規則
在配置 GitLab 之前,您需要確保您的防火墻規則足夠寬松,以允許 Web 流量。如果您按照先決條件中的鏈接中的指南進行操作,您將啟用 ufw
防火墻。
通過輸入以下命令查看當前活動防火墻的狀態:
sudo ufw status
狀態:activeTo Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
如您所見,當前規則允許 SSH 流量通過,但對其他服務的訪問受限。由于 GitLab 是一個 Web 應用程序,我們應該允許 HTTP 訪問。如果您的 GitLab 服務器關聯有域名,GitLab 還可以請求并啟用來自 Let’s Encrypt 項目的免費 TLS/SSL 證書以保護您的安裝。在這種情況下,我們還需要允許 HTTPS 訪問。
由于 HTTP 和 HTTPS 的協議到端口的映射在 /etc/services
文件中可用,我們可以通過名稱允許該流量進入。如果您之前未啟用 OpenSSH 流量,現在應該允許該流量:
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH
如果再次運行 ufw status
命令,您應該至少看到已配置訪問這兩個服務:
sudo ufw status
狀態:activeTo Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
上述輸出表明一旦我們配置應用程序,GitLab Web 界面將是可訪問的。
編輯 GitLab 配置文件
在使用該應用程序之前,您需要更新一個配置文件并運行重新配置命令。首先,打開 Gitlab 的配置文件:
sudo nano /etc/gitlab/gitlab.rb
在文件頂部附近是 external_url
配置行。將其更新為與您自己的域名或 IP 地址匹配。如果您有一個域名,請將 http
更改為 https
,這樣 GitLab 將自動將用戶重定向到由我們將要請求的 Let’s Encrypt 證書保護的站點。
# 如果您的 GitLab 服務器沒有域名,您將需要使用 IP 地址而不是域名,并保持協議為 `http`。
external_url 'https://yourdomain'
接下來,如果您的 GitLab 服務器有一個域名,請搜索文件以查找 letsencrypt['enable']
設置。取消注釋該行并將其設置為 true
。這將告訴 GitLab 為您的 GitLab 域請求 Let’s Encrypt 證書并配置應用程序以使用它提供流量。
在下面,查找 letsencrypt['contact_emails']
設置。此設置定義了 Let’s Encrypt 項目可以使用的電子郵件地址列表,以便在您的域名出現問題時與您聯系。取消注釋并填寫這個設置也是個好主意,這樣您就會知道是否有任何問題:
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['sammy@yourdomain.com']
保存并關閉文件。現在,運行以下命令以重新配置 Gitlab:
sudo gitlab-ctl reconfigure
這將使用它可以找到的關于您的服務器的信息初始化 GitLab。這是一個完全自動化的過程,因此您不必回答任何提示。如果您啟用了 Let’s Encrypt 集成,證書應該已經為您的域配置好了。
通過 Web 界面執行初始配置
現在 GitLab 正在運行并且允許訪問,我們可以通過 Web 界面對應用程序進行一些初始配置。
首次登錄
在 Web 瀏覽器中訪問您的 GitLab 服務器的域名:
http://gitlab_domain_or_IP
如果您啟用了 Let’s Encrypt 并在您的 external_url
中使用了 https
,您應該會被重定向到一個安全的 HTTPS 連接。
在首次訪問時,您應該會看到一個初始提示,要求為管理員帳戶設置密碼:
!GitLab 初始密碼設置提示
在初始密碼提示中,提供并確認管理員帳戶的安全密碼。完成后,單擊 Change your password 按鈕。
您將被重定向到常規的 GitLab 登錄頁面:
!GitLab 首次登錄提示
在這里,您可以使用剛剛設置的密碼登錄。憑證為:
- 用戶名:root
- 密碼:[您設置的密碼]
將這些值輸入到現有用戶字段中,然后單擊 Sign in 按鈕。您將登錄到應用程序,并被帶到一個提示您開始添加項目的著陸頁面:
!GitLab 初始登錄著陸頁面
現在,您可以進行一些簡單的更改,以使 GitLab 以您喜歡的方式設置。
調整您的個人資料設置
在新安裝后,您應該做的第一件事之一是將您的個人資料整理好。GitLab 選擇了一些合理的默認值,但一旦您開始使用該軟件,這些通常是不合適的。
要進行必要的修改,請單擊界面右上角的用戶圖標。在出現的下拉菜單中,選擇 Settings:
!GitLab 個人資料設置按鈕
您將被帶到您的設置的 Profile 部分:
!GitLab 個人資料設置頁面
將 Name 和 Email 地址從 “Administrator” 和 “admin@example.com” 調整為更準確的內容。您選擇的名稱將顯示給其他用戶,而電子郵件將用于默認頭像檢測、通知、通過界面進行的 Git 操作等。
完成后,單擊底部的 Update Profile settings 按鈕:
!GitLab 更新個人資料設置按鈕
確認電子郵件將發送到您提供的地址。按照電子郵件中的說明確認您的帳戶,以便您可以開始在 GitLab 中使用它。
更改您的帳戶名
接下來,單擊左側菜單欄中的 Account 項目:
!GitLab 帳戶菜單項
在這里,您可以找到您的私人 API 令牌或配置雙因素身份驗證。但是,我們目前感興趣的功能是 Change username 部分。
默認情況下,第一個管理員帳戶被賦予名稱 root。由于這是一個已知的帳戶名,將其更改為不同的名稱更安全。您仍將擁有管理員權限;唯一會改變的是名稱:
!GitLab 更改用戶名部分
單擊 Update username 按鈕進行更改:
!GitLab 更新用戶名按鈕
下次登錄到 GitLab 時,請記住使用您的新用戶名。
將 SSH 密鑰添加到您的賬戶
在大多數情況下,您會希望使用 SSH 密鑰與 Git 交互以訪問您的 GitLab 項目。為此,您需要將您的 SSH 公鑰添加到您的 GitLab 賬戶。
如果您已經在本地計算機上創建了 SSH 密鑰對,您通常可以通過輸入以下命令查看公鑰:
cat ~/.ssh/id_rsa.pub
您應該會看到一大段文本,就像這樣:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
復制這段文本,然后返回到 GitLab 網頁界面的個人資料設置頁面。
如果您得到的是以下消息,說明您的計算機上尚未配置 SSH 密鑰對:
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
如果是這種情況,您可以通過輸入以下命令來創建 SSH 密鑰對:
ssh-keygen
接受默認設置,并可選擇提供密碼以在本地保護密鑰:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work
The key's randomart image is:
+---[RSA 2048]----+
| ..%o==B|
| *.E =.|
| . ++= B |
| ooo.o . |
| . S .o . .|
| . + .. . o|
| + .o.o ..|
| o .++o . |
| oo=+ |
+----[SHA256]-----+
完成后,您可以通過輸入以下命令顯示您的公鑰,就像之前一樣:
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
復制顯示的文本塊,然后返回到 GitLab 網頁界面的個人資料設置。
點擊左側菜單中的SSH Keys項:
!GitLab SSH Keys 菜單項
在提供的空間中粘貼您從本地計算機復制的公鑰。給它一個描述性的標題,然后點擊Add key按鈕:
!GitLab 添加 SSH 密鑰
現在,您應該能夠在本地計算機上管理您的 GitLab 項目和倉庫,而無需提供您的 GitLab 賬戶憑據。
限制或禁用公共注冊(可選)
您可能已經注意到,當您訪問您的 GitLab 實例的登錄頁面時,任何人都可以注冊帳戶。如果您希望托管公共項目,這可能是您想要的。然而,許多時候,更嚴格的設置是可取的。
首先,點擊頁面頂部主菜單欄中的扳手圖標,進入管理區域:
!GitLab 管理區域按鈕
在接下來的頁面上,您可以看到整個 GitLab 實例的概述。要調整設置,請點擊左側菜單底部的設置選項。
!GitLab 管理設置按鈕
您將進入到 GitLab 實例的全局設置頁面。在這里,您可以調整一些影響新用戶是否可以注冊以及他們的訪問級別的設置。
禁用注冊
如果您希望完全禁用注冊(您仍然可以手動創建新用戶的帳戶),請滾動到注冊限制部分。
取消選擇啟用注冊復選框:
!GitLab 取消選擇啟用注冊
滾動到頁面底部,點擊保存按鈕:
!GitLab 保存設置按鈕
注冊部分現在應該從 GitLab 登錄頁面中移除了。
按域限制注冊
如果您正在使用 GitLab 作為提供與域相關的電子郵件地址的組織的一部分,您可以通過域來限制注冊,而不是完全禁用它們。
在注冊限制部分,首先選擇注冊時發送確認電子郵件框,只有在用戶確認了他們的電子郵件后才允許登錄。
接下來,將您的域或域添加到注冊白名單域框中,每行一個。您可以使用星號“*”來指定通配符域:
!GitLab 按域限制注冊
滾動到頁面底部,點擊保存按鈕:
!GitLab 保存設置按鈕
注冊部分現在應該從 GitLab 登錄頁面中移除了。
限制項目創建
默認情況下,新用戶可以創建多達 10 個項目。如果您希望允許外部新用戶進行可見性和參與,但希望限制他們創建新項目的訪問權限,您可以在帳戶和限制設置部分進行設置。
在其中,您可以將默認項目限制更改為 0,以完全禁止新用戶創建項目:
!GitLab 將項目設置為零
新用戶仍然可以手動添加到項目中,并且可以訪問其他用戶創建的內部或公共項目。
滾動到頁面底部,點擊保存按鈕:
!GitLab 保存設置按鈕
新用戶現在可以創建帳戶,但無法創建項目。
創建定期任務以自動更新 Let’s Encrypt 證書
根據設計,Let’s Encrypt 證書僅有效期為 90 天。如果您之前為您的 GitLab 域啟用了 Let’s Encrypt,您需要確保定期更新您的證書,以避免服務中斷。GitLab 提供了gitlab-ctl renew-le-certs
命令,在當前資產接近到期時請求新證書。
為了自動化這個過程,我們可以創建一個定期任務,定期運行這個命令。該命令只會在證書接近到期時進行更新,因此我們可以安全地定期運行它。
首先,在您的文本編輯器中創建并打開/etc/cron.daily/gitlab-le
文件:
sudo nano /etc/cron.daily/gitlab-le
在其中,粘貼以下腳本:
#!/bin/bashset -e/usr/bin/gitlab-ctl renew-le-certs > /dev/null
完成后保存并關閉文件。
通過輸入以下命令將文件標記為可執行:
sudo chmod +x /etc/cron.daily/gitlab-le
現在,GitLab 應該每天自動檢查其 Let’s Encrypt 證書是否需要更新。如果需要,命令將自動更新證書。
結論
您現在應該在自己的服務器上擁有一個正常運行的 GitLab 實例。您可以開始導入或創建新項目,并為您的團隊配置適當的訪問級別。GitLab 定期添加功能并對其平臺進行更新,因此請務必查看項目的主頁,以了解任何改進或重要通知的最新信息。