如何在Ubuntu 20.04上安装Gitea

Gitea是一个用Go语言编写的快速且易于使用的自我托管的git服务器。它包括一个仓库文件编辑器,项目问题跟踪,用户管理,通知,内置维基,以及更多。

Gitea是一个轻量级的应用程序,可以安装在低功率的系统上。如果你正在寻找Gitlab的替代品,但内存占用更小,而且你不需要Gitlab提供的所有功能,那么你应该试试Gitea。

本文将介绍如何在Ubuntu 20.04上安装和配置Gitea。

前提条件

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

SQLite只推荐用于小型安装。更大的安装应该使用MySQL或PostgreSQL。

我们将使用 SQLite 作为 Gitea 的数据库。如果你的Ubuntu系统没有安装SQLite,请以sudo用户身份输入以下命令来安装它。

sudo apt updatesudo apt install sqlite3

安装Gitea

Gitea提供了Docker镜像,可以从源码、二进制和打包的方式安装。我们将从二进制安装Gitea。

安装Git

第一步是在你的服务器上安装Git。

sudo apt updatesudo apt install git

通过显示Git的版本来验证安装情况。

git --version
git version 2.25.1

创建一个Git用户

创建一个新的系统用户,该用户将运行Gitea应用程序,键入

sudo adduser \   --system \   --shell /bin/bash \   --gecos 'Git Version Control' \   --group \   --disabled-password \   --home /home/git \   git

上面的命令创建了一个名为git的新用户和组,并将主目录设为/home/git。输出结果将如下所示。

Adding system user `git' (UID 112) ...
Adding new group `git' (GID 118) ...
Adding new user `git' (UID 112) with group `git' ...
Creating home directory `/home/git' ...

下载Gitea二进制文件

前往Gitea下载页面,下载适合你的架构的最新二进制文件。在撰写本文时,最新的版本是1.10.2。如果有新的版本,请修改下面命令中的VERSION变量。

使用wget下载/tmp目录下的Gitea二进制文件。

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

你可以从任何位置运行gitea二进制文件。我们将遵循惯例,把二进制文件移到/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,log}sudo chown -R git:git /var/lib/gitea/sudo chmod -R 750 /var/lib/gitea/sudo mkdir /etc/giteasudo chown root:git /etc/giteasudo chmod 770 /etc/gitea

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

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

创建一个Systemd单元文件

我们将以 systemd 服务的形式运行 Gitea。

通过键入将样本systemd单元文件下载到/etc/systemd/system目录下。

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

你不需要编辑该文件,它已经根据我们的设置进行了配置。

启用并启动 Gitea 服务。

sudo systemctl daemon-reloadsudo systemctl enable --now gitea

确认Gitea正在运行。

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 Thu 2021-05-06 05:32:04 UTC; 7s ago
   Main PID: 77781 (gitea)
      Tasks: 6 (limit: 470)
     Memory: 130.6M
     CGroup: /system.slice/gitea.service
             └─77781 /usr/local/bin/gitea web --config /etc/gitea/app.ini
...

配置Gitea

现在Gitea已经下载并运行,我们可以通过Web界面完成安装。

默认情况下,Gitea在所有的网络接口上侦听3000端口的连接。

如果你的服务器上运行了UFW防火墙,你需要打开Gitea的端口。要允许3000端口的流量,请输入以下命令。

sudo ufw allow 3000/tcp

打开浏览器,输入http://YOUR_DOMAIN_IR_IP:3000,会出现与下面类似的屏幕。

Gitea install

数据库设置。

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

应用程序常规设置。

  • 网站标题。输入你的组织名称。
  • 仓库根路径。保留默认的var/lib/gitea/data/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配置文件随时改变这些设置。

要开始安装,点击 “Install Gitea “按钮。

安装是即时的。完成后,你会被重定向到登录页面。

点击 “需要一个账户?现在就注册。”链接。第一个注册用户会被自动添加到管理员组。

将Gitea配置文件的权限改为只读使用。

sudo chmod 750 /etc/giteasudo chmod 640 /etc/gitea/app.ini

就这样了。Gitea已经安装在你的Ubuntu机器上了。

配置Nginx作为SSL终端代理

这一步是可选的,但强烈建议。SSL终止意味着Nginx将作为Gitea应用程序和Web客户端之间的一个中介点,这样你就可以通过HTTPS访问Gitea。

要使用Nginx作为反向代理,你需要有一个域名或子域名指向你服务器的公共IP。在这个例子中,我们将使用git.example.com。

首先,安装Nginx并使用下面的指南生成一个免费的Let’s Encrypt SSL证书。

  • 如何在Ubuntu 20.04上安装Nginx
  • 在Ubuntu 20.04上用Let’s Encrypt保护Nginx

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

sudo nano /etc/nginx/sites-enabled/git.example.com

/etc/nginx/sites-enabled/git.example.com

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

不要忘记用你的Gitea域名替换git.example.com,并设置SSL证书文件的正确路径。HTTP流量被重定向到HTTPS

重新启动Nginx服务以使更改生效。

sudo systemctl restart nginx

接下来,改变Gitea的域名和根网址。要做到这一点,打开配置文件,编辑以下几行。

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

配置电子邮件通知

如果你想让你的Gitea实例发送通知邮件,你可以安装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服务器信息。

重新启动Gitea服务以使更改生效。

sudo systemctl restart gitea

要验证设置并发送测试邮件,请登录Gitea,并进入。网站管理 > 配置 > SMTP邮件配置。

Gitea还允许你通过创建一个webhook连接到Slack,并发送通知到你的Slack频道。

升级Gitea

要升级到最新的Gitea版本,只需下载并替换二进制文件。

  1. 停止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-amd64sudo mv /tmp/gitea /usr/local/bin

使二进制文件可执行。

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

重新启动Gitea服务。

sudo systemctl restart gitea

就这样了。

总结

本教程指导你完成了Gitea在Ubuntu 20.04上的安装。关于如何配置Gitea实例和创建第一个项目的更多信息,请访问Gitea文档页面。


已发布

分类

作者:

标签