Gitea 是一个用 Go 编写的快速且易于使用的自托管 Git 服务器应用。 Gitea包括存储库文件编辑器、项目问题跟踪、用户管理、通知、内置 wiki 等等。Gitea 是一个轻量级的应用程序,可以安装在低功耗系统上。 如果我们有在寻找具有更小的内存占用的 Gitlab 替代品,并且您不需要 Gitlab 提供复杂的功能的,那我们可以使用比较简单的 Gitea。
在这篇文章中,我们搬瓦工中文网介绍了如何在 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 ,如果我们是个人或者小团队使用是够用的。