
Gitea是一个用Go编写的自我托管的开源git服务器。它带有一个仓库文件编辑器,项目问题跟踪,用户管理,通知,内置维基等功能。
Gitea是一个轻量级的应用程序,可以安装在不太强大的系统上。如果你正在寻找一个内存占用更小的Gitlab替代品,并且不需要Gitlab提供的所有功能,你应该试试Gitea。
本文将告诉你如何在 CentOS 8 上安装和配置 Gitea。
前提条件
Gitea支持SQLite、PostgreSQL和MySQL/MariaDB作为数据库后端。
我们将使用SQLite。它是一个轻量级的数据库,将数据存储在一个文件中。如果你的CentOS机器上没有安装SQLite,你可以以sudo用户身份运行以下命令来安装它。
sudo dnf install sqlite
我们假设SELinux被禁用或设置为允许模式。
安装Gitea
Gitea 可以从源代码、二进制文件和软件包的形式安装。它也可以作为Docker镜像部署。我们将使用二进制文件来安装Gitea。
安装Git
第一步是在你的CentOS上安装Git。
sudo dnf install git
通过显示Git的版本来验证安装情况。
git --version
git version 2.18.4
创建一个 Git 用户
创建一个新的系统用户来运行Gitea应用程序。
sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
git
该命令将创建一个名为git的新用户和组,并将主目录设为/home/git。
下载Gitea二进制文件
最新的 Gitea 二进制文件可以从 Gitea 下载页面下载。请确保你下载的是适合你的架构的二进制文件。
在撰写本文时,最新的版本是1.12.3。如果有新的版本,请修改下面命令中的VERSION变量。
使用wget将Gitea二进制文件下载到/tmp目录中。
VERSION=1.12.3
sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
你可以从任何位置运行二进制文件。我们将遵循惯例,把二进制文件移到 /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,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
上面的目录结构是Gitea官方文档所推荐的。
/etc/gitea目录的权限被设置为770,以便安装向导能够创建配置文件。一旦安装完成,我们将设置更多的限制性权限。
创建一个Systemd单元文件
Gitea 提供了一个 Systemd 单元文件,该文件的配置与我们的设置相符。
通过键入将该文件下载到/etc/systemd/system/目录中。
sudo wget https://raw.githubusercontent.com/go-gitea/gitea/master/contrib/systemd/gitea.service -P /etc/systemd/system/
完成后,启用并启动Gitea服务。
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 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端口的连接。你需要配置你的防火墙,以便能够访问Gitea的网页界面。
sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
sudo firewall-cmd --reload
打开浏览器,输入http://YOUR_DOMAIN_IR_IP:3000/install,就会出现初始配置页面。

填写以下所需字段。
数据库设置。
- 数据库类型。SQLite3
- 路径。使用绝对路径,/var/lib/gitea/data/gitea.db
应用程序一般设置。
- 网站标题 – 输入你的组织名称。
- 仓库根目录 – 保留默认的/home/git/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/gitea
sudo chmod 640 /etc/gitea/app.ini
这就是了。Gitea已经安装在你的CentOS机器上了。
配置Nginx作为SSL终端代理
这一步是可选的,但强烈建议。要使用Nginx作为反向代理,你需要有一个域名或子域名指向你的服务器公共IP。在本教程中,我们将使用git.example.com。
首先,安装Nginx并使用下面的指南生成一个免费的Let’s Encrypt SSL证书。
- 如何在CentOS 8上安装Nginx
- 在CentOS 8上用Let’s Encrypt保护Nginx
完成后,打开你的文本编辑器,编辑域名服务器块文件。
sudo nano /etc/nginx/conf.d/git.example.com.conf
/etc/nginx/conf.d/git.example.com.conf
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
配置电子邮件通知
对于要发送的通知邮件,可以安装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服务器信息。
每次编辑app.ini文件时,都需要重新启动Gitea服务,以使更改生效。
sudo systemctl restart gitea
要验证设置并发送测试邮件,请登录Gitea并进入。网站管理 > 配置 > SMTP邮件配置。
Gitea还允许你通过创建一个webhook连接到Slack,并发送通知到你的Slack频道。
升级Gitea
升级到最新的Gitea版本是一个简单的任务。你只需要下载并替换二进制文件。
- 停止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-amd64
sudo mv /tmp/gitea /usr/local/bin
使该二进制文件可执行。
sudo chmod +x /usr/local/bin/gitea
重新启动Gitea服务。
sudo systemctl restart gitea
就这样了。
总结
我们已经展示了如何在 CentOS 8 上安装 Gitea。现在你应该访问Gitea文档页面,学习如何配置你的安装和创建你的第一个项目。