如何在 CentOS 7 上安装和配置 Gogs

戈格斯是 最著名和使用最广泛的 Git 应用程序之一. 它为 Gitlab 或 Gitea 等其他服务提供了一种低消耗的替代方案。 Gogs 是一个开源的自托管 Git 服务,它提供了所有必要的功能和优势,以建立一个私有和安全的版本控制系统。

优势和权衡

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

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

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

我们将介绍 CentOS 7 上 Gogs 的安装、配置和升级过程。如果您使用 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

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

为了 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 应该可以运行了。 我们介绍了 Gogs 的安装、设置和维护。 这是一项专业服务,涵盖所有基础知识,同时保持易于使用的体验和很少的整体维护。 虽然在寻找私有和自托管 Git 服务时几乎没有理由不选择 Gogs,但有经验的用户将获得 Gogs 所提供的好处。