自建低成本代码托管与文档管理平台经验分享

在这里插入图片描述
直入入正题,自建代码托管平台其实市面上早有成熟的方案,svn,gitlab,gitea等等。所谓低成本指的是只需一台远程云服务器即可,如果有多备份的需求则追加一台树莓派。随着个人代码量的增长,版本管理经历了本机SVN服务 —> 自建svn —> 自建svn与github并存 —> gitea —> 局域网gitea+远程gitea多备份。跳过中间的演变历程,接下来分享的是局域网gitea+远程gitea多备份的方案。

云服务器选择

远程代码托管需要自备云服务器,如今云服务器早已白菜价国内外的选择很多。特别到了年末各大云厂商的打折套餐相当给力。

搭建Gitea服务

作为个人代码的托管的首选gitea服务,原因也很简单,得益于golang的特性,gitea的配置比gitlab简单,基本就是开箱即用的程度。
在这里插入图片描述

参考官方文档使用二进制安装即可:

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

虽说可以使用官网推荐的服务方式运行,但配合screen却是最简单的

screen ./gitea web

启动后,可以在当前目录下找到custom/conf/app.ini文件,对端口和存放路径做一些个性化调整。

[repository]
ROOT = /home/git/gitea-repositories

[server]
SSH_DOMAIN       = localhost
DOMAIN           = xxx.xxx.xxx
HTTP_PORT        = 6666
ROOT_URL         = http://xxx.xxx.xxx:6666/
DISABLE_SSH      = false
SSH_PORT         = 22
LFS_START_SERVER = true
LFS_CONTENT_PATH = /home/git/data/lfs
LFS_JWT_SECRET   = xxxxxxxxxxxx
OFFLINE_MODE     = false

仓库镜像管理

gitea服务搭建完成后,除了自己的项目外还可以同步外部镜像,用于镜像加速。

在这里插入图片描述

以上步骤已经完成的自建代码托管的全部流程。接下来的树莓派只属于锦上添花,如无必要无需往下阅读


树莓派备份节点

树莓派的应用场景很多,路由器、电视盒子、自建NAS等等都能得到极好的体验。加之低功耗比较合适用来做备份节点。本文使用的是3B+版本(最新的树莓派4有更好的性能)。树莓派官方暂未放出64位版本系统(32位版本系统偶有卡顿),而要发挥出64位硬件的性能只能使用开源的64位的系统。

如Ubuntu的版本:http://cdimage.ubuntu.com/ubuntu/releases/bionic/release/ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img.xz

刷好64位系统,在树莓派上安装gitea。然后重复上面的仓库同步任务就基本完成了代码仓库的局域网备份。在github或外网无法提交时可以先提交到局域网仓库,网络好转时同步到外网即可。

在这里插入图片描述

顺带一提很多人会质疑树莓派的性能如何。就我近一年的使用来看,3B+在64位系统的表现来看丝毫不比1核1G的云主机逊色。通常将树莓派当做验证环境使用,下图是其中一台树莓派部署的任务详情。3台树莓派可以组成一个集群验证更复杂的情景。
在这里插入图片描述

Nextcloud文件管理

其实写到这里已经超出锦上添花的范畴了。但程序开发时不光是纯粹的文本代码。一些常用的开发工具和大型文档提交到git上会造成极大地性能损耗。如程序的迭代版本打包通常是发布在ftp或云存储上。这时候你可以选择百度云盘等,但下面会介绍一种更友好的文件同步工具——NextCloud。

在这里插入图片描述

NextCloud是近年来少有良心私有化云盘开源方案。因服务器上PHP版本是7.0的,选用的15.0.12的版本。最新的版本需要升级到PHP 7.2。为什么说NextCloud良心呢?主要是文档相当完备,安装向导上事无巨细都帮你考虑到了。甚至MySQL上的utf8mb4兼容问题都帮你解答好了。

附上地址:https://docs.nextcloud.com/server/15/admin_manual/installation/index.html

需要微调的是上传文件大小,默认文件最大是512M改成2G的话,编辑文件/var/www/nextcloud/.user.ini,修改如下配置:

upload_max_filesize=2G
post_max_size=2G
memory_limit=512M
mbstring.func_overload=0
always_populate_raw_post_data=-1
default_charset='UTF-8'
output_buffering=0

还得修改PHP配置,编辑文件/var/www/nextcloud/.htaccess,修改如下配置:

<IfModule mod_php5.c>
  php_value upload_max_filesize 2G
  php_value post_max_size 2G
  php_value memory_limit 512M
  php_value mbstring.func_overload 0
  php_value always_populate_raw_post_data -1
  php_value default_charset 'UTF-8'
  php_value output_buffering 0
  <IfModule mod_env.c>
    SetEnv htaccessWorking true
  </IfModule>
</IfModule>
<IfModule mod_php7.c>
  php_value upload_max_filesize 2G
  php_value post_max_size 2G
  php_value memory_limit 512M
  php_value mbstring.func_overload 0
  php_value default_charset 'UTF-8'
  php_value output_buffering 0
  <IfModule mod_env.c>
    SetEnv htaccessWorking true
  </IfModule>
</IfModule>

下载PC客户端后,可以很方便的同步文件。

在这里插入图片描述

在Web端对文件进行删改也会同步到本地

在这里插入图片描述

写在最后

自建代码托管和文档管理系统并不是什么刚需,只是代码和文档积累到了自身难以管理的程度的无奈之举。自建的方式虽不复杂,但还是存在一些物质上的成本。也完全可以选用免费的解决方案替代(免费的私有仓库+云盘)。愿每个程序员的代码和文档都能得到妥善的安置。

发布了87 篇原创文章 · 获赞 42 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/vipshop_fin_dev/article/details/102772323