戈格斯是 最常用的 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 已安装并正常工作。 虽然不是强制性的,但我们可以从为我们的应用程序设置反向代理中受益。 它可以增强安全性和性能,同时使审计和日志记录更加简单。 此外,在不涉及端口的情况下更容易访问域。
要设置反向代理,我们必须为 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 所提供的好处。