如何在CentOS 8上安装Gitea
Gitea是用Go编写的自托管开源git服务器。
它带有存储库文件编辑器,项目问题跟踪,用户管理,通知,内置Wiki等。
Gitea是一个轻量级的应用程序,可以安装在功能较弱的系统上。
如果我们正在寻找内存占用空间更小的Gitlab替代品,而又不需要Gitlab提供的所有功能,则应尝试Gitea。
本文向我们展示了如何在CentOS 8上安装和配置Gitea。
准备工作
Gitea支持SQLite,PostgreSQL和MySQL/MariaDB作为数据库后端。
我们将使用SQLite。
它是一个轻量级数据库,可将数据存储在单个文件中。
如果CentOS机器上未安装SQLite,则可以通过以sudo用户身份运行以下命令来安装它:
sudo dnf install sqlite
我们假设SELinux被禁用或者设置为许可模式。
安装Gitea
Gitea可以从源代码,二进制文件和软件包中安装。
也可以将其部署为Docker镜像。
我们将使用thr二进制文件安装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.3sudo 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/giteasudo chown root:git /etc/giteasudo chmod 770 /etc/gitea
上面的目录结构由官方的Gitea文档推荐。
“/etc/gitea”目录的权限设置为“ 770”,以便安装向导可以创建配置文件。
安装完成后,我们将设置更多限制性权限。
创建一个系统单位文件
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-reloadsudo 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 2017-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/tcpsudo 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配置文件来更改设置。
完成后,点击“安装Gitea”按钮。
安装是即时的。
完成后,我们将被重定向到登录页面。
点击“立即注册”链接。
第一个注册用户将自动添加到Admin组。
为了使安装更加安全,请使用以下方法将Gitea配置文件的权限更改为只读:
sudo chmod 750 /etc/giteasudo chmod 640 /etc/gitea/app.ini
Gitea已安装在CentOS计算机上。
将Nginx配置为SSL终止代理
此步骤是可选的,但强烈建议这样做。
要将Nginx用作反向代理,我们需要具有一个指向服务器公共IP的域或者子域。
在本教程中,我们将使用'git.example.com'。
首先,请安装Nginx并使用以下教程生成免费的“加密SSL”证书:
- 如何在CentOS 8上安装Nginx
- 让我们在CentOS 8上加密来保护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域和根URL。
为此,请打开配置文件并编辑以下行:
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还允许我们通过创建Web 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-amd64sudo mv /tmp/gitea /usr/local/bin
- 使二进制文件可执行:
sudo chmod +x /usr/local/bin/gitea
- 重新启动Gitea服务:
sudo systemctl restart gitea