Gitea是用Go语言编写的自托管开源git服务器。 它带有存储库文件编辑器,项目问题跟踪,用户管理,通知,内置Wiki等。

Gitea是轻型应用程序,可以安装在硬件较差的系统上。 如果您正在寻找内存占用空间更小的Gitlab替代品,而又不需要Gitlab提供的所有功能,则应尝试Gitea。

本文介绍了如何在CentOS 8上安装和配置Gitea。

先决条件

Gitea支持SQLite, PostgreSQL MySQL / MariaDB 作为数据库后端。

我们将使用SQLite。 它是一个轻量级数据库,将数据存储在单个文件中。 如果您的CentOS计算机上未安装SQLite,则可以以 sudo用户的身份运行以下命令来安装它:

sudo dnf install sqlite

我们假设 SELinux被禁用或设置为许可模式。

安装Gitea

Gitea可以从源代码,二进制文件和软件包中安装。 也可以将其部署为Docker映像。 我们将使用二进制文件安装Gitea。

安装Git

第一步是在CentOS上安装 Git

sudo dnf install git

通过显示Git版本来验证安装:

git --version
git version 2.18.4

创建Git用户

创建新的系统用户以运行Gitea应用程序:

sudo useradd \
   --system \
   --shell /bin/bash \
   --comment 'Git Version Control' \
   --create-home \
   --home /home/git \
   git

该命令将创建一个名为git的新用户和组,并将主目录设置为/home/git

下载Gitea二进制文件

最新的Gitea二进制文件可以从 Gitea下载页面下载。 确保为您的系统架构下载正确的二进制文件。

在撰写本文时,最新版本为1.12.3。 如果有可用的新版本,请在下面的命令中更改VERSION变量。

使用 wget /tmp目录中下载Gitea二进制文件:

VERSION=1.12.3
sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64

您可以从任何位置运行二进制文件。 我们将遵循约定并将二进制文件移至/usr/local/bin目录:

sudo mv /tmp/gitea /usr/local/bin

使二进制文件可执行:

sudo chmod +x /usr/local/bin/gitea

以下命令将创建必要的目录并设置所需的权限和所有权

sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo mkdir -p /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git: /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

上述目录结构是Gitea官方文档推荐的。

/etc/gitea目录的权限设置为770,以便安装向导可以创建配置文件。 安装完成后,我们将设置更多限制性权限。

创建Systemd Unit文件

Gitea提供了一个Systemd Unit文件,该文件已配置为与我们的设置匹配。

通过键入命令将文件下载到/etc/systemd/system/目录。

sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/

完成后,启用并启动Gitea服务:

sudo systemctl daemon-reload

验证服务已成功启动:

sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
   Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-01-04 21:27:23 UTC; 3s ago
 Main PID: 14804 (gitea)
    Tasks: 9 (limit: 1152)
   CGroup: /system.slice/gitea.service
           └─14804 /usr/local/bin/gitea web --config /etc/gitea/app.ini
...

配置Gitea

现在Gitea已启动并正在运行,是时候通过网络界面完成安装了。

默认情况下,Gita侦听所有网络接口上端口3000上的连接。 您需要配置防火墙才能访问Gitea网络界面:

sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp

打开浏览器,输入http://YOUR_DOMAIN_IR_IP:3000/install,然后会出现初始配置页面:

填写必填字段,如下所示:

数据库设置:

  • 数据库类型:SQLite3
  • 路径:使用绝对路径,/var/lib/gitea/data/gitea.db

应用常规设置:

  • 站点标题-输入您的组织名称。
  • 存储库根路径-保留默认值/home/git/gitea-repositories
  • Git LFS根路径-保留默认值/var/lib/gitea/data/lfs
  • 以用户名身份运行-git
  • SSH服务器域-输入您的域或服务器IP地址。
  • SSH端口-22,如果SSH正在监听其他端口,请更改该端口 端口
  • Gitea HTTP监听端口-3000
  • Gitea基本URL-使用http和您的域或服务器IP地址。
  • 日志路径-保留默认值/var/lib/gitea/log

以后,您可以通过编辑Gitea配置文件来更改设置。

完成后,点击“安装Gitea”按钮。 安装是即时的。 完成后,您将被重定向到登录页面。

点击“立即注册”链接。 第一个注册用户将自动添加到管理员组。

为使安装更加安全,请使用以下方法将Gitea配置文件的权限更改为只读:

sudo chmod 750 /etc/gitea

Gitea已安装在您的CentOS计算机上。

将Nginx配置为SSL代理

此步骤是可选的,但强烈建议您这样做。 要将 Nginx用作反向代理,您需要具有一个指向服务器公共IP的域或子域。 在本教程中,我们将使用git.example.com

首先,安装Nginx并使用以下指南生成免费的“加密SSL”证书:

完成后,打开文本编辑器并编辑域服务器块文件:

sudo nano /etc/nginx/conf.d/git.example.com.conf

/etc/nginx/conf.d/git.example.com.conf

server {
    listen 80;
    server_name git.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://git.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    client_max_body_size 50m;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/git.example.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/git.example.com.access.log;
    error_log /var/log/nginx/git.example.com.error.log;

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}

请不要忘记将git.example.com替换为您的Gitea网域,并为SSL证书文件设置正确的路径。 HTTP流量重定向到HTTPS

完成后,重新启动Nginx服务以使更改生效:

sudo systemctl restart nginx

接下来,更改Gitea域和根URL。 为此,请打开配置文件并编辑以下行:

sudo nano /etc/gitea/app.ini

/etc/gitea/app.ini

[server]
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

通过键入以下内容来重新启动Gitea服务:

sudo systemctl restart gitea

至此,已配置Gitea代理,您可以在以下位置访问它:https://git.example.com

配置电子邮件通知

要发送通知电子邮件,可以安装Postfix或使用事务邮件服务,例如SendGrid,MailChimp,MailGun或SES。

要启用电子邮件通知,请打开配置文件并编辑以下行:

sudo nano /etc/gitea/app.ini

/etc/gitea/app.ini

[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD

确保使用正确的SMTP服务器信息。

每次编辑app.ini文件时,都需要重新启动Gitea服务才能使更改生效:

sudo systemctl restart gitea

要验证设置并发送测试电子邮件,请登录Gitea并转到:网站管理>配置> SMTP邮件程序配置。

Gitea还允许您通过创建 web webhook 并将其发送到 Slack频道

升级Gitea

升级到最新的Gitea版本是一项简单的任务。 您只需要下载并替换二进制文件即可。

停止Gitea服务:

sudo systemctl stop gitea

下载最新的Gitea二进制文件并将其移至/usr/local/bin目录:

VERSION=<THE_LATEST_GITEA_VERSION>
wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
sudo mv /tmp/gitea /usr/local/bin

让二进制文件可执行:

sudo chmod +x /usr/local/bin/gitea

重新启动Gitea服务:

sudo systemctl restart gitea

结论

我们已向您展示了如何在CentOS 8上安装Gitea。您现在应该访问 Gitea文档页面,并学习如何配置安装并创建第一个项目。

如有疑问,请在下面发表评论。