Gitea是用Go语言编写的自托管开源git服务器。它是Gogs的分支。Gitea包括存储库文件编辑器,项目问题跟踪,用户管理,通知,内置Wiki等。
Gitea是轻型应用程序,可以安装在低配置系统。如果您正在寻找内存占用量少得多的Gitlab替代产品,并且不需要Gitlab提供的所有功能,那么您绝对应该尝试Gitea。
本教程介绍如何在CentOS 8安装Gitea。相同的说明适用于基于CentOS 8的Linux发行版。
Gitea支持SQLite,PostgreSQL和MySQL/MariaDB作为数据库后端。
我们将使用SQLite作为Gitea的数据库。 如果您的CentOS 8未安装SQLite,则运行命令sudo dnf install sqlite3
安装SQLite。
Gitea提供Docker映像,可以从源码,二进制文件和软件包中安装。我们将从二进制文件安装Gitea。
安装Gitea的第一步是安装git。当git安装完成后,可以运行git --version
命令验证git的安装。
我们将创建一个普通用户运行Gitea。运行useradd命令创建用户git。命令将创建一个名为git
的用户和组,并将家目录设置为/home/git
。
sudo dnf install sqlite git
sudo useradd \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--create-home \
--home /home/git \
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命令。
在CentOS 8如果你打开SeLinux,你还需要运行命令sudo chcon -v -t bin_t /usr/local/bin/gitea
。
运行mkdir命令创建目录并设置所需的权限和所有权。这是官方的Gitea文档建议使用目录结构。
将/etc/gitea
目录的权限设置为770
,以便安装向导可以创建配置文件。安装完成后,我们将设置更多限制性权限。
最后改变/var/lib/gitea/目录的selinux上下文,运行命令sudo chcon -Rv -t var_lib_t /var/lib/gitea/
。
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 chcon -v -t bin_t /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
sudo chcon -Rv -t var_lib_t /var/lib/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
的连接。
如果您CentOS 8正在运行运行Firewalld防火墙,则需要打开Gitea端口。允许端口3000
的连接。运行firewall-cmd命令。
sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
sudo firewall-cmd --reload
打开浏览器,输入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已安装在您的CentOS 8。
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;
}
}
你应该在每次编辑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/
如果你需要配置SSL为你的Nginx虚拟主机,请参考我们的教程如何在CentOS 8 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
升级Gitea
要升级到最新的Gitea版本,只需下载并替换二进制文件。首先是停止Gitea服务。
下载最新的Gitea版本并将其移动到/usr/local/bin
目录。运行chmod命令使Gitea二进制具有可执行权限。
最后重启Gitea服务,运行命令sudo systemctl restart gitea
。
sudo systemctl stop gitea
VERSION=
sudo chmod +x /usr/local/bin/gitea
sudo systemctl restart gitea
结论
本教程向您介绍了在CentOS 8安装Gitea的过程。您现在应该访问Gitea文档页面,并学习如何配置Gitea实例并创建第一个项目。
如果您有任何疑问,请随时在下面发表评论。