自建低成本代碼託管與文檔管理平臺經驗分享

在這裏插入圖片描述
直入入正題,自建代碼託管平臺其實市面上早有成熟的方案,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端對文件進行刪改也會同步到本地

在這裏插入圖片描述

寫在最後

自建代碼託管和文檔管理系統並不是什麼剛需,只是代碼和文檔積累到了自身難以管理的程度的無奈之舉。自建的方式雖不復雜,但還是存在一些物質上的成本。也完全可以選用免費的解決方案替代(免費的私有倉庫+雲盤)。願每個程序員的代碼和文檔都能得到妥善的安置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章