写在前边
为什么要打造一个属于自己的代码托管平台呢?这个事情还要从我刚开始工作说起。
我是在大三下学期的时候,大概是2017年三月份,以个人身份做过一些小项目,接收不了学校的课程无趣无意义,最后实在耐不住呆在学校的无聊和寂寞(是的,那个时候还是条单身狗),就天天逃课出去找了个工作,算是第一份工作吧。
想想过得好快,现在已经是2019年的2月了(传说中的两年工作/划水经验?)期间换了两家公司,工作方式也改变了许多。
- 第一家公司时期,sftp一把梭
- 第二家公司时期,svn 版本控制,写了钩子,能够提交代码以后自动拉取
- 第三家公司(现在),GitLab,由团队的leader来把控代码的合并
我自己的使用习惯也发生了很大变化。想我在写下基于Nginx的高可用大并发微信电子商城系统设计与实现——毕业设计的时候,还是分别在两台服务器写了 php
脚本,通过配置 svn
的钩子来请求两个 php
脚本来同时拉取代码的。
在熟悉了 git workflow
后,自己也慢慢习惯使用 git
来管理自己的代码。But,我相信你也和我一样在很多时候,并不希望自己的仓库是公开的(在开始决定使用 gitea
的时候 github
私仓还不免费),毕竟有些东西是敏感的。
让我们来比较一下各种代码托管平台
- 自建Git服务器(
git init --bare test.git
),一开始我确实这么干的,但是讲道理太不方便管理了 - GitLab,资源占用比较高,放弃。
- Gitee,码云,对于国内团队无疑是最好的,但是国际化支持不太好。
- GitHub,花钱,我是穷鬼,跳过。
- Gogs,资源占用低,配置方便,支持迁移,一开始用的这个,个人维护的,更新有点慢。
- Gitea,Gogs的Fork版本,团队维护,功能更加丰富,支持代码审计,更加活跃和激进。
一开始我确实是自建Git服务器,太不方便了,后来了解了 Gogs
,开始使用 Gogs
的,再后来就是了解到 Gitea
这个 Gogs
的Fork版本,一样的特性,功能更加丰富,于是我选择了升级到 Gitea
部署自己的 gitea
说干就干,开始搞事情吧,接下来都是干货
准备工作
准备为
Gitea
使用的域名为gittest.yiranzai.top
如果要将git和其它数据持久化,你需要创建一个目录来作为数据存储的地方
1 | mkdir -p /var/lib/gitea |
编写 docker-compose.yml
文件
还不了解docker-compose?点击这里了解学习配置docker-compose
我们需要
nginx
(使用nginx
来做对外的服务代理,不要让gitea
直接对外暴露web服务)memcached
(为gitea
提供Cache
服务)mysql
(存储gitea
所需要存储的数据)gitea
(代码托管平台)
1 | version: "3.7" |
运行服务并初始化
- 运行服务
1 | $ docker-compose up -d |
- 编写
nginx
配置文件
1 | server { |
- 重启
nginx
使配置生效 - 访问
gittest.yiranzai.top
完成初始化配置
长图显示配置过程
- 编辑查看gitea的配置
1 | $ vim /var/lib/gitea/gitea/app.ini |
创建仓库,开始起飞
啥?不会创建仓库?劝退劝退
友情提示,右上角的
+
可以迁移别的仓库到gitea
END
每次到了结束,都莫名其妙的有一些成就感,大概是因为折腾出来一个新东西。
总之,终于搞好了,先慢慢随便点点,熟悉熟悉这个简单又强大的代码托管平台吧。
Happy Coding!