戈格斯 最著名和使用最廣泛的 Git 應用程序之一.. 它為 Gitlab 和 Gitea 等其他服務提供低成本的替代方案。 Gogs 是一個開源的自託管 Git 服務,它提供了構建私有且安全的版本控制系統所需的所有功能和優勢。

優勢和權衡

像所有東西一樣,Gogsha 也有一些缺點和取捨。特別是,由於最近對開發的限制,更新或實施新功能可能需要一些時間。 Gogs 還缺乏內置 CI/CD、GitLFS 2.0 或 Git Protocol V2 支持、壓縮合併和有限的第三方集成等高級功能。

但是,Gogs 具有許多優點,因為它具有高效率、低內存佔用和無痛的核心特性。

  • 資源使用率低(RAM / CPU)。
  • 獨立於平台。
  • 存儲庫管理和 Web 代碼編輯器。
  • 內置維基。
  • 新版本和錯誤文檔和跟踪功能。
  • 外部 Git 鏡像。
  • 易於設置。

介紹 Gogs 在 CentOS 7 上的安裝、配置和升級過程。 如果您使用的是 Ubuntu,請查看我們的教程,了解如何在 Ubuntu 18.04 上安裝和配置 Gogs。

我需要

在開始安裝過程之前,您需要做三件事:

  • 數據庫管理軟件(支持以下之一):
    • MySQL(5.7 或更高版本)/MariaDB(10.2 或更高版本)
    • PostgreSQL(9.4.4 或更高版本)
    • SQLite3
  • 吉特:
    • 服務器和客戶端上的 1.8.3 或更高版本
  • SSH 訪問

注意:安裝數據庫管理軟件超出了本文的範圍,但您可以查看一些資源。 MYSQL//瑪麗亞數據庫, PostgreSQL, 什麼時候 SQLite3..

在服務器上安裝 git 之前,最好確保本地包索引已更新。

LiquidWeb_Ubuntu # sudo apt-get update
Reading package lists... Done

現在讓我們繼續安裝 git。 您可以通過運行帶有版本標籤的 git 來檢查已安裝的版本。

LiquidWeb_Ubuntu # sudo apt-get install git
... 
Preparing to unpack .../git_1%3a2.17.1-1ubuntu0.8_amd64.deb ...
Unpacking git (1:2.17.1-1ubuntu0.8) ...
Setting up git (1:2.17.1-1ubuntu0.8) …

LiquidWeb_Ubuntu # git --version
git version 2.17.1

安裝

1.設置環境

作為安全措施,我們建議您為 gogs 創建一個新用戶,以防止高權限用戶(尤其是 root)與此服務交互。

LiquidWeb_Ubuntu # sudo adduser --disabled-login --home /home/git --shell /bin/bash --gecos 'Gogs' git
Adding user `git' ...
Adding new group `git' (1001) ...
Adding new user `git' (1001) with group `git' ...
Creating home directory `/home/git' ...
Copying files from `/etc/skel' ...

2.從二進制安裝

然後下載需要的文件到 從二進制安裝解壓文件,啟動服務,運行初始配置腳本。

檢查服務器架構(amd64 或 x86_64)後,下載核心文件。

LiquidWeb_Ubuntu # uname -m
x86_64

LiquidWeb_Ubuntu # su git
[email protected]:/root$ cd ~
[email protected]:~$ pwd
/home/git

##Download the files (we can pull the link from the official download page)
[email protected]:~$ curl -O https://dl.gogs.io/0.12.3/gogs_0.12.3_linux_amd64.tar.gz
...
[email protected]:~$ ls|grep gogs
gogs_0.12.3_linux_amd64.tar.gz

下一步是提取文件並確保已創建目錄。

tar -xzvf gogs_0.12.3_linux_amd64.tar.gz

ls|grep gogs
gogs

如果您以 root(或其他用戶)身份運行,則需要確保您的目錄和文件具有適當的權限。

sudo chown -R git: /home/git/gogs

將設置的單元文件複製到服務管理器目錄。

sudo cp -a /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/

最後一步是啟動並啟用該服務。

sudo systemctl start gogs

sudo systemctl enable gogs
Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.

作為預防措施,請確保服務已啟動。

systemctl status gogs
● gogs.service - Gogs
   Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
   Active: active (running)

默認情況下,gogs 在 3000 端口上啟動 HTTP 服務。如果其他服務已經在使用此端口,則在第一次運行之前,您需要編輯配置文件以將 HTTP 端口更改為空閒端口。該文件位於 /home/git/gogs/custom/conf/app.ini 中,除非您設置了不同的安裝目錄。

/home/git/gogs/custom/conf/app.ini
[server]
...
HTTP_PORT        = 3000

使用服務器的 IP 地址 (https://Server_IP: 3000) 從 Web 瀏覽器訪問初始運行配置設置。)。

您可以保留大部分默認設置,但請記住以下幾點:

  • 數據庫類型: 必須與服務器上安裝的相同。
  • 運行用戶: 這將是您之前創建的用戶 (git)。
  • 場地 什麼時候 申請網址: 鏈接服務的域。如果您沒有該服務的主域,則可以使用服務器的 IP 地址。

如果不使用 SQLite3,則需要創建數據庫和數據庫用戶。有兩種不同的方法可以做到這一點。

MySQL / MariaDB

mysql> CREATE DATABASE gogs;
mysql> CREATE USER 'gogs'@'localhost' IDENTIFIED BY 'MY_PASSWORD';
mysql> GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'localhost';

PostgreSQL

sudo -u postgres psql

postgres=# CREATE DATABASE gogs;
postgres=# CREATE USER gogs WITH ENCRYPTED PASSWORD 'MY_PASSWORD';
postgres=# GRANT ALL PRIVILEGES ON DATABASE gogs TO gogs;

請務必更改。”我的密碼‘更改為您要使用的實際密碼。

或者,您可以稍後進行設置,也可以現在創建管理員帳戶。準備好後點擊 安裝 Gogs 按鈕。

3-gogs-安裝

如果安裝成功完成,您將看到以下屏幕。

4-gogs-安裝成功

3. 可選:反向代理

在這個階段,Gogs 已安裝並開始工作。雖然不是必需的,但您可以從在應用程序中設置反向代理中受益。增強安全性和性能,同時簡化審計和日誌記錄。不使用端口也更容易訪問域。

要設置反向代理,必須使用 gogs 服務的域名,而不是服務器的 IP 地址。擁有域後,您需要更新應用程序的配置文件。

/home/git/gogs/custom/conf/app.ini
[server]
DOMAIN           = gogs.mydomain.com
HTTP_PORT        = 3000
EXTERNAL_URL     = https://gogs.mydomain.com:3000/

此示例的目標是通過在 Web 瀏覽器中鍵入 gogs.mydomain.com 來訪問應用程序。

配置完成後,讓我們繼續進行反向代理本身。 如果您使用的是 Nginx,則需要將此塊添加到域的配置文件中。通常的位置是 /etc/nginx/sites-available/mydomain.com(使用 mydomain.com 而不是實際的域)。

server {
        listen 80;
        listen [::]:80;

        root /var/www/gogs.mydomain.com/html;
        index index.html index.php index.nginx-debian.html;

        server_name gogs.mydomain.com www.gogs.mydomain.com;

        location / {
               proxy_pass https://127.0.0.1:3000;
        }
}

對於 Apache 用戶來說,原理是一樣的,只是語法不同。

<VirtualHost *:80>
ServerName gogs.mydomain.com
ProxyPreserveHost On
ProxyPass /  https://gogs.mydomain.com:3000/
ProxyPassReverse /  https://gogs.mydomain.com:3000/
</VirtualHost>

對於 Ubuntu,配置文件通常位於 /etc/apache2/sites-available/mydomain.com。 如果使用 cPanel,請使用 /etc/apache2/conf.d/userdata/std/2_4/some_user/gogs.mydomain.com/gogs_mydomain.conf 創建自定義條目。

4.升級go

升級過程很簡單。您需要下載新的核心文件並替換舊的安裝。使用您創建的 Git 用戶移動舊安裝,然後下載新文件。

su git 
cd /home/git 
mv gogs gogs_bk 

curl -O https://dl.gogs.io/new_version/gogs_new_version_linux_amd64.tar.gz
tar -xzvf gogs_new_version_linux_amd64.tar.gz

ls|grep gogs
gogs

然後同步舊安裝文件夾中的自定義數據。

rsync -avHl gogs_bk/{custom,data,log} gogs

最後,重新啟動服務以測試您的工作。如果一切正常,您應該能夠像往常一樣訪問門戶。

systemctl restart gogs.service 

結論是

本教程到此結束。此時,您應該已準備好運行 Gogs。 描述了 Gogs 的安裝、設置和維護。這是一項涵蓋所有基礎知識的專業服務,保持易於使用的體驗並且幾乎不需要整體維護。在尋找私有和自託管 Git 服務時,您不應該選擇 Gogs 的原因有很多,但有經驗的用戶可以享受 Gogs 提供的好處。