搬瓦工VPS
拥有10+机房且可自主切换机房

基于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 ,如果我们是个人或者小团队使用是够用的。

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