Gitea–Git with a cup of tea

Gitea是一款开源的代码托管软件

它来自于同样开源的gogs,是其一个分支,由于社区的开发贡献者与原gogs的开发者产生了意见上的分歧,社区开发者fork了gogs并不断迭代完善至今,其间还有很多有意思的事情,详情可以看这篇wolfogre.

为什么会有 Gitea

克隆一个现有的项目,然后改头换面、自立门户、重新发行,这在开源的世界上不算什么新鲜事。但这种情况的发生往往事出有因,比如原项目不维护了,原项目拒绝实现某些新特性,新项目针对特定用户群做了优化,等等等等。

但 Gogs 仍在维护,Gitea 也没有实现什么新功能,针对的用户群也是一模一样的,那为什么还会有 Gitea 呢?Gitea 的官方博客里给出了解释,翻译成中文如下:


Gitea 是一个开源社区驱动的 Gogs 克隆,后者是一个备受欢迎的 Git 自托管服务。我们是一个日益增长的群体——之前是 Gogs 的用户和贡献者,但发现了 Gogs 令人沮丧的“单一维护者”管理模式,所以决定作出努力,建立一个更加开放、更加高效的管理模式。

在此之前,我们尝试说服 Unknown 给社区中更多的人“写权限”。他理所当然地认为 Gogs 是自己的生物,不希望它在自己掌控之外生长。所以为了有效地让代码走向自由,重新克隆一份是必须的。

gogs是一个国人的产品,不得不说,确实是很优秀的个人作品,不过相对而言,我更喜欢gitea的UI风格和界面,具体的差异我暂时也还没有感受出来。

我的Gitea站点

下面是Gitea的安装与使用

安装Gitea

首先是要有一台可用的服务器。

这边我用的是宝塔面板,所以创建网站会比较轻松。用宝塔面板创建一个网站

然后用Xshell或其他类似软件链接服务器,并cd定位到所要安装的文件夹。

这边我采用的是Binary Install,二进制安装。输入以下代码:

1
2
wget -O gitea https://dl.gitea.io/gitea/1.10.1/gitea-1.10.1-linux-amd64
chmod +x gitea

很快就会完成安装包的下载。

然后可以启动服务,测试站点的使用情况。使用以下命令:

1
./gitea web

然后就可以启动了。当然,你也可以在自己本地的Linux机器上安装。

当你选择在云服务器安装时,记得在阿里云/腾讯云上打开防火墙的3000端口,还有宝塔面板的3000端口。

Gitea域名配置

当然你不会希望Gitea永远使用IP来访问,那么你就需要一个域名。解析过程不再赘述。直接修改ngnix的配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server
{
listen 80;
listen 443 ssl http2;
server_name yourdomain.com;

#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;

#如果你不需要https那么删除下面这一部分就可以了(删到SSL-END)

#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
ssl_certificate ;#--这里填你的ssl证书地址
ssl_certificate_key ;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;

#SSL-END

#重定向到Gitea
client_max_body_size 20m;
location / {
#默认的端口是3000
proxy_pass http://localhost:3000;
}

}

然后记得在gitea安装时配置好URL即可。

Gitea的使用

安装的时候还是有几个坑的

比如SSH地址如果你不更改那么就会默认为LocalHost,不太雅观,记得修改

还有就是如果你使用root用户启动的Gitea,那么ssh的默认前缀就会是root,例如这样:

1
root@git.tanknee.cn:tanknee/Xxxxx.git

十分的不友好,所以我建议新建一个git用户,然后再切换到git用户启动Gitea安装,就可以达到这种效果了:

1
git@git.tanknee.cn:tanknee/Xxxxx.git

添加git用户

1
2
useradd git
su -l git //切换用户

长期后台运行

一种做法是将Gitea作为系统服务,开机自启动,另一种做法是用nohup,挂在后台。效果一致,但我觉得第一种相对会好一点。

开机自启动

nohup挂后台

1
nohup ./gitea web &

其中 &代表一直挂在后台。

结语

从gitlab转投到gitea之后服务器的负载小了很多,效果明显。

gitlab

前后对比

gitea启用之后

负载对比

负载

还是很好的一款开源代码托管平台。