如何在 Ubuntu 18.04 上安装和配置 Gogs

戈格斯是 最常用的 Git 应用程序之一. 它是一种开源自托管 Git 服务,提供了设置私有和安全版本控制系统所需的所有基本功能和优势。

优势和权衡

与所有事情一样,Gogsha 有一些缺点和权衡。 最值得注意的是,最近开发受到限制,因此更新和新功能可能需要一些时间才能实现。 Gogs 还缺乏高级功能,例如内置 CI/CD、对 Git LFS 2.0 或 Git Protocol V2 的支持、压缩合并以及有限的第三方集成。

但是,由于 Gogs 的特点是效率高、内存占用少、核心功能无痛,所以它有很多优点:

  • 资源使用率低(RAM/CPU)。
  • 独立于平台。
  • 存储库管理和 Web 代码编辑器。
  • 内置维基。
  • 新版本和错误的文档和跟踪功能。
  • 外部 Git 镜像。
  • 轻松设置。

我们将介绍在 Ubuntu 18.04 上安装、配置和升级 Gogs 的过程,但我们也介绍了如何在 CentOS 7 上安装和配置 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

Gogs 安装

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;

确保更改 ‘我的密码‘ 到您要使用的实际密码。

或者,我们可以创建 admin 立即帐户,尽管我们可以稍后进行设置。 准备好后,点击 安装 Gogs 按钮。

3-gogs-安装

安装成功后,您将看到以下屏幕。

4-gogs-successful-installation

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;         } }

注意:请务必将配置文件符号链接到 /etc/nginx/sites-enabled/ 目录。 将 mydomain.com 替换为实际域,将 /var/www/gogs.mydomain.com/html 替换为所述域的根目录。

为了 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.升级Gogs

升级过程很简单。 我们需要下载新的核心文件并替换旧的安装。 使用我们创建的 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 的安装、设置和维护。 这是一项专业服务,涵盖所有基础知识,同时保持易于使用的体验和很少的整体维护。 虽然在寻找私有和自托管 Git 服务时几乎没有理由不选择 Gogs,但有经验的用户将获得 Gogs 所提供的好处。