Gitea

Github私有仓库已经免费很久了,但是协同开发只能三人,再往上就要交钱了,如果自己有服务器的话,在服务器上搭一个gitea也是很不错的,能省下不少钱。

gitea是一款易搭建,运行快的Git服务器应用,比起Gitlab动辄4个G的内存占用,gitea一般保持在100M内存消耗以内。但是功能比起Gitlab要少许多,但是已经够基本的使用了,跟Github差不多。

安装流程

数据库的安装配置

我用的是Mysql,相信大多数人也都是Mysql,数据库的安装不介绍了,需要手动创建一个gitea库,如果有必要的话,也可以为gitea分配一个数据库用户。

安装Git

包管理器直接安装

#Debian和Ubuntu系统
apt-get -y install git
 
#CentOS系统
yum -y install git

分配系统用户

不是很建议用root用户执行gitea,一般是再创建一个git组和一个git用户(这里是指linux系统用户)。因为我部署的所有的网站应用都是用的www用户管理,所以自然选择了www用户来执行。

下载安装

gitea创建一个文件夹,cd到该目录
下载地址:https://dl.gitea.io/gitea/

wget -O gitea https://dl.gitea.io/gitea/1.8.0/gitea-1.8.0-linux-amd64
chmod +x gitea

使用命令./gitea web启动应用程序,能看到应用启动并默认使用的3000端口。

配置反代理

官方教程 - 反向代理
我使用的Apache,贴一下我的配置。
html.conf

<VirtualHost *:80>
DocumentRoot /var/www/gitea
# 你分配给gitea的域名
ServerName git.sakuradon.com

# 这四段是反向代理的关键配置
ProxyPreserveHost On
ProxyRequests off
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

# 下面是Let's Encrypt的Certbot自己生成的跳转https
RewriteEngine on
RewriteCond %{SERVER_NAME} =git.sakuradon.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

html-le-ssl.conf

# 在html.conf中配置好后下面均是用Certbot生成的
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /var/www/gitea
ServerName git.sakuradon.com

ProxyPreserveHost On
ProxyRequests off
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

SSLCertificateFile /etc/letsencrypt/live/git.sakuradon.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/git.sakuradon.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/git.sakuradon.com/chain.pem
</VirtualHost>
</IfModule>

配置好后重启Apache,浏览器访问一下域名,就能看到gitea的主页了。

配置gitea

在首页点登录/注册直接进入配置页,填写配置即可。配置文件在/gitea/custom/conf/app.ini里,之后可以随意修改。
以用户名运行 填写执行该应用的linux用户。
Gitea 基本 URL 填写网站的url,如果是https记得加上https,如https://git.sakuradon.com
SSH 服务域名 填写不带http://的url,如git.sakuradon.com

在 Linux 中以 service 方式运行

gitea也是要一直运行的,可以使用nohuppm2等程序让它在后台运行,但是官方已经给出了解决方案让其能以service的方式运行在后台。

新建一个gitea.service文件:

vi /usr/lib/systemd/system/gitea.service

写入

[Unit]
Description=gitea

[Service]
User=root
#gitea的执行文件
ExecStart=/usr/local/gitea/gitea
Restart=on-abort

[Install]
WantedBy=multi-user.target

重载daemon,让新的服务文件生效:

systemctl daemon-reload

启动服务

systemctl start gitea

设置开机启动

systemctl enable gitea

浏览器访问测试一下

测试.png

至此,gitea安装部署完成