优选主流主机商
任何主机均需规范使用

基于Ubuntu 20.04安装Gitea自建Git服务环境

Gitea 是一个用 Go 编写的快速且易于使用的自托管 Git 服务器应用。 Gitea包括存储库文件编辑器、项目问题跟踪、用户管理、通知、内置 wiki 等等。Gitea 是一个轻量级的应用程序,可以安装在低功耗系统上。 如果我们有在寻找具有更小的内存占用的 Gitlab 替代品,并且您不需要 Gitlab 提供复杂的功能的,那我们可以使用比较简单的 Gitea。

基于Ubuntu 20.04安装Gitea自建Git服务环境

在这篇文章中,我们搬瓦工中文网介绍了如何在 Ubuntu 20.04 上安装和配置 Gitea。

第一、必备兼容环境

Gitea 安装环境需要我们当前服务器支持 SQLite、PostgreSQL 和 MySQL /MariaDB 作为数据库后端。如果我们的数据比较小,可以用SQLite 数据库,如果我们的数据较大建议使用 MySQL 或 PostgreSQL。

sudo apt update
sudo apt install sqlite3

第二、安装Gitea服务

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

1、安装 Git:

sudo apt update
sudo apt install git

这里我们采用的是Ubuntu镜像。

git --version

安装完毕之后,我们用命令检查版本。如果有反馈的数据版本说明安装完毕。

2、创建用户

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' ...

3、下载文件

前往 Gitea 下载页面并下载适用于您的架构的最新二进制文件。 在撰写本文时,最新版本为 1.10.2。 如果有可用的新版本,请在下面的命令中更改 VERSION 变量。

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

VERSION=1.14.1
sudo 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/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

上面的目录结构是 Gitea 官方文档推荐的。/etc/gitea 目录的权限设置为770,以便安装向导可以创建配置文件。 安装完成后,我们将设置更严格的权限。

4、创建系统单元文件

我们将 Gitea 作为系统服务运行。

通过键入以下命令将示例 systemd 单元文件下载到 /etc/systemd/system 目录:

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

然后我们需要启动。

sudo systemctl daemon-reload
sudo systemctl enable --now 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
...

5、配置 Gitea

现在 Gitea 已下载并运行,我们可以通过 Web 界面完成安装。默认情况下,Gitea 在所有网络接口上侦听端口 3000 上的连接。如果我们的服务器上运行着 UFW 防火墙,则需要打开 Gitea 端口。 要允许端口 3000 上的流量,请输入以下命令:

sudo ufw allow 3000/tcp

打开浏览器,输入http://YOUR_DOMAIN_IR_IP:3000,会出现类似如下画面:

对应我们需要填写数据信息,才可以安装,比较类似我们安装网站CMS一样。

如果不好安装需要给文件授权:

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

第三、Nginx 配置为 SSL

对于是否安装SSL,我们是可选的,但是建议还是安装。 SSL 安装后意味着 Nginx 将充当 Gitea 应用程序和 Web 客户端之间的中介点,因此您可以通过 HTTPS 访问 Gitea。

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

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

sudo nano /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 证书文件的正确路径。

最后要重启Nginx生效。

sudo systemctl restart nginx

实际上我们安装SSL,最好是用免费或者付费证书,然后我们配置SSL文件即可。

接下来,更改 Gitea 域和根 url。 我们需要打开配置文件并编辑以下行:

sudo nano /etc/gitea/app.ini

编辑:

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

保存后重启生效

sudo systemctl restart gitea

第四、配置邮件通知

如果我们希望我们的 Gitea 实例发送通知电子邮件,我们可以安装 Postfix 或使用一些事务性邮件服务,例如 SendGrid、MailChimp、MailGun 或 SES。

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

sudo nano /etc/gitea/app.ini

编辑:

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

然后重启生效

sudo systemctl restart gitea

第五、如何升级Gitea 

如果有新版本,我们如何升级Gitea 。

1、先关闭服务

sudo systemctl stop gitea

2、下载最新文件到/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

3、执行文件

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

4、重启生效

sudo systemctl restart gitea

这样,我们就可以完成在服务器中部署Gitea ,如果我们是个人或者小团队使用是够用的。

未经允许不得转载:搬瓦工中文网 » 基于Ubuntu 20.04安装Gitea自建Git服务环境