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

Gitea是轻型应用程序,可以安装在低配置系统。如果您正在寻找内存占用量少得多的Gitlab替代产品,并且不需要Gitlab提供的所有功能,那么您绝对应该尝试Gitea。

本教程介绍如何在Ubuntu 18.04安装Gitea。相同的说明适用于基于Ubuntu 18.04的Linux发行版。

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

我们将使用SQLite作为Gitea的数据库。 如果您的Ubuntu 18.04未安装SQLite,则运行命令sudo apt update && sudo apt install sqlite3安装SQLite。

Gitea提供Docker映像,可以从源码,二进制文件和软件包中安装。我们将从二进制文件安装Gitea。

安装Gitea的第一步是安装git。当git安装完成后,可以运行git --version命令验证git的安装。

我们将创建一个普通用户运行Gitea。运行命令adduser命令创建用户git。命令将创建一个名为git的用户和组,并将家目录设置为/home/git

sudo apt update
sudo apt install sqlite3 git

sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
Adding system user `git' (UID 111) ...
Adding new group `git' (GID 116) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...

下载Gitea

访问Gitea下载页面,并下载适用于您的系统架构二进制文件。在撰写本文时,最新版本为1.17.3。

如果有可用的新版本,请在下面的命令中更改VERSION变量。然后运行wget命令下载Gitea二进制文件到/tmp目录。

gitea二进制文件可以在任何目录运行。我们将遵循约定并将二进制文件移动到/usr/local/bin目录。

Linux在默认情况下二进制文件不具有可执行权限。因此需要为gitea二进制文件添加可执行权限,运行chmod命令

运行mkdir命令创建目录并设置所需的权限和所有权。这是官方的Gitea文档建议使用目录结构。

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

VERSION=1.17.3
sudo 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

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

创建Systemd服务

Gitea提供已配置的Systemd Unit文件。运行wget命令将Systemd Unit文件下载到/etc/systemd/system/目录。

完成后,重新加载Systemd,运行命令sudo systemctl daemon-reload。然后启用并启动Gitea服务。

验证Gitea服务的运行状态,运行命令sudo systemctl status gitea。你将会看到Gitea服务已成功启动。

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

sudo systemctl daemon-reload
sudo systemctl start gitea
sudo systemctl enable 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 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,是时候通过Web界面完成安装。默认情况下,Gitea监听所有接口在端口3000的连接。

如果您Ubuntu 18.04正在运行运行UFW防火墙,则需要打开Gitea端口。允许端口3000的连接。运行命令sudo ufw allow 3000/tcp

sudo ufw allow 3000/tcp

打开浏览器,输入http://127.0.0.1:3000。将数据库设置的为以下参数。

Database Type: SQLite3。路径:/var/lib/gitea/data/gitea.db,必须是绝路径。

应用的设置,Site Title可是你喜欢的任意名称。Repository Root Path: /home/git/gitea-repositories。Git LFS Root Path: /var/lib/gitea/data/lfs

Run As Username: git。SSH Server Port: 22,如果SSH正在监听其他端口,请更改它端口。

Server Domain: localhost。Gitea HTTP Listen Port: 3000。Gitea Base URL: http://localhost:3000/。Log Path: /var/lib/gitea/log

您可以随时通过编辑Gitea配置文件来更改设置。完成后,点击install Gitea按钮。安装是实时的。

完成后,您将被重定向到登录页面。点击立即注册。 第一个注册用户将自动添加到管理员组。

然后运行命令sudo chmod 750 /etc/gitea将Gitea配置文件的权限更改为只读。至此, Gitea已安装在您的Ubuntu 18.04。

如何在Ubuntu 18.04安装Nginx | myfreax
Nginx发音为engine x,是开源的高性能HTTP和反向代理服务器,负责处理Internet上一些最大站点的负载
Ubuntu 18.04 安装 Nginx
如何在Ubuntu 18.04配置Nginx虚拟主机 | myfreax
server是Nginx指令,用于定义特定域的设置,从而使您可以在一台服务器上运行多个网站
Ubuntu 18.04 配置 Nginx虚拟主机

Nginx Gitea

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

使用你喜欢的文本编辑器创建文件Nginx配置文件git.example.com.conf。在本教程中,我们将使用vim创建文件

复制Nginx配置内容文件到文件/etc/nginx/conf.d/git.example.com.conf。完成后保存文件并退出vim

sudo vim /etc/nginx/conf.d/git.example.com.conf
server {
    listen 80;
    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;
    # 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;
    }
}
/etc/nginx/conf.d/git.example.com.conf

你应该在每次编辑Nginx配置文件后,使用nginx -t命令测试Nginx配置的语法是否正确。然后重新启动Nginx服务,以使更改生效。

为了能够正确解释域名domain1.com。因此我们还需要映射domain1.com本地回环地址127.0.0.1

运行命令echo "127.0.0.1 git.example.com" | sudo tee -a /etc/hosts

接下来,更改Gitea域和根URL。继续使用你喜欢编辑器,打开Gitea配置文件修改DOMAIN和ROOT_URL。

完成gitea的配置更改后,重启gitea服务运行命令sudo systemctl restart gitea。至此,已配置Gitea代理,您可以在以下位置访问它:https://git.example.com

sudo systemctl restart nginx
echo "127.0.0.1 git.example.com" | sudo tee -a /etc/hosts

sudo vim /etc/gitea/app.ini
sudo systemctl restart gitea
[server]
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/
/etc/gitea/app.ini

如果你需要配置SSL为你的Nginx虚拟主机,请参考我们的教程如何在Ubuntu 18.04 Nginx配置Let's Encrypt SSL证书

如何在Ubuntu 18.04 Nginx配置Let’s Encrypt SSL证书 | myfreax
Web进行安全通信依赖于HTTPS,这需要使用数字证书,以便浏览器验证Web服务器的身份,比如说,google.com是真的吗
如何在Ubuntu 18.04 Nginx配置Let's Encrypt SSL证书

电子邮件通知

为了使Gitea能够发送通知电子邮件,您可以安装Postfix或使用某些事务性邮件服务,例如SendGrid,MailChimp,MailGun或SES。

要启用电子邮件通知,继续使用你喜欢编辑器,打开Gitea配置文件app.ini。修改以下内容。

请确保您输入了正确的SMTP服务器信息。重新启动Gitea服务以使更改生效。

sudo vim /etc/gitea/app.ini
sudo systemctl restart gitea
[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD
/etc/gitea/app.ini

升级Gitea

要升级到最新的Gitea版本,只需下载并替换二进制文件。首先是停止Gitea服务。

下载最新的Gitea版本并将其移动到/usr/local/bin目录。运行chmod命令使Gitea二进制具有可执行权限。

最后重启Gitea服务,运行命令sudo systemctl restart gitea

sudo systemctl stop gitea
VERSION=<THE_LATEST_GITEA_VERSION>
sudo chmod +x /usr/local/bin/gitea
sudo systemctl restart gitea

结论

本教程向您介绍了在Ubuntu 18.04安装Gitea的过程。您现在应该访问Gitea文档页面,并学习如何配置Gitea实例并创建第一个项目。

如果您有任何疑问,请随时在下面发表评论。