最近在用unity模仿做出一个12年的Flash游戏,我用Git做数据备份,但是随着不断的新资源加进来以后,Git目录开始变得越来越大,推到Github上已经满足不了我的要求,正好家里有个正在吃灰中的树莓派,还有一个闲置的硬盘,便心血来潮准备搭建一个Git服务器,顺便记录一些过程
原材料
- 吃灰中的树莓派ZeroW x 1
- 8GB SD卡 x 1
- 320GB 笔记本硬盘 x 1
- SATA to USB3.0 硬盘盒 x 1
- Putty软件
- 蓝牙串口模块 x 1
- 一堆杜邦线
- 笨拙的双手 x 1

之所以要用到蓝牙串口模块,是因为树莓派没有屏幕(外接不方便),有时候ssh怎么都连不上,也不知道发生什么了,更不敢贸然断电重启,庆幸的是树莓派上有一组串口接口,通过它可以很方便地在无网络环境下登录shell
物理连线
首先开始连线,将硬盘通过usb连接到树莓派的OTG接口上(我的硬盘盒只剩下一个电路板了,hiahiahia)
因为手上没有microusb线,就只好用typec线加转接头了
把蓝牙串口模块连接到树莓派的串口上
模块的vcc连接到树莓派物理引脚1号(3.3v)上
模块的gnd连接到树莓派物理引脚6号(gnd)上
模块的tx连接到树莓派物理引脚10号(RXD)上
模块的rx连接到树莓派物理引脚1号(TXD)上


注意模块的tx、rx和树莓派的tx、rx是相互反接的,一方的发送,当然就是另一方的接收了
上电开机
线接好后就可以开机啦,直接插上电源就会启动
启动完毕后看一下功率,PiZeroW相当省电,平时待机大约5v * 0.1a = 0.5w的样子,满载时是0.2a,差不多1w的功耗(我拍照时硬盘已经休眠了,当然硬盘唤醒时大概有0.2a的额外电流)

打开串口Shell登录
第一次使用需要先打开树莓派串口登录功能,先从ssh远程登录,输入sudo raspi-config打开配置界面,找到5 Interfacing Options(接口设置)按Enter确定

再切换到P6 Serial(串口),按Enter键

这时,它会问你是否开启通过串口登录Shell的功能,我们选择是yes,按Enter键,然后重启树莓派,配置完成

如果你确实不想用官方提供的raspi-config来配置,也可以这样操作
- 编辑
/boot/cmdline.txt,在文件开头添加console=serial0,115200 console=tty1和一个额外的空格,注意整个文件都只有一行,请不要多打回车 - 编辑
/boot/config.txt,找到[all],在[all]下方添加一行enable_uart=1 - 保存重启
从蓝牙串口登录
现在已经打开串口登录功能了,等待系统重启完毕

可以看到蓝牙模块上的灯已经在闪烁了,我们就通过蓝牙登录树莓派吧。
打开系统设置,添加蓝牙设备,找到蓝牙串口模块的名字,连接,输入PIN,一气呵成



打开设备管理器,找到对应的串口号,不知道为啥会有2个,但是以我的经验来说选数字小的那一个就对了,就是COM6

找到了串口号后,打开putty,将ConnectionType从SSH切到Serial(串口)上,会发现SerialLine会变成COM1

我们将COM1修改为设备管理器里的COM6,并将Speed设置为115200,这个Speed代表串口波特率,只有双方都使用同样的波特率才能够正常传输数据,树莓派默认的波特率是115200(可以通过编辑/boot/cmdline.txt修改)
输入好串口号和Speed后,点击下方的Open按钮,等待3-5秒就会出现登录的界面啦

我们输入用户名pi和自己的密码,看到这个光标就代表登录成功啦,就可以执行任何命令了
由于串口不依赖网络,我们可以用这个特性配置wifi,或者出现故障时进行救援连接,非常方便

搭建Git服务端
接下来开始搭建Git服务端,考虑到ZeroW的性能(bcm2835单核处理器),直接放弃Gitlab了,也许树莓派4的配置勉强一战。
由于是在局域网里,不会对外开放,我就选择最最最简单的搭建方式了,具体可以参考廖雪峰大佬的这篇文章,我这里讲一下大致流程
首先要给树莓派设置秘钥登录,设置好后开始安装Git,执行sudo apt install git等待安装/升级完毕就好了
接着在树莓派上创建一个目录用来存放Git仓库,其实远程仓库和本地仓库并没有什么不同,纯粹为了7x24小时开机并交换大家的修改。
我这里就创建在mkdir /home/pi/git-repositories这里了
如果是新项目,就在/home/pi/git-repositories下执行命令,git init --bare example
加上参数--bare后就会创建一个裸仓库(所谓裸仓库就是指没有工作区的git仓库,因为共享仓库不需要工作区),这样服务端就搭建好了
如果是已经存在的项目,先在/home/pi/git-repositories中创建一个空目录example2,然后将本地项目的.git目录复制到example2中就搭建好了(只需要复制.git目录就好了)
接着是配置git客户端,我们首先Clone仓库,比如我的什么树莓派ip是192.168.1.100,使用pi用户进行登录,那么就执行命令git clone pi@192.168.1.100:/home/pi/git-repositories/example就可以克隆到本地了
后续也可以把这个Git地址添加到仓库中,用于后续的推代码步骤
最后要说一下,蓝牙串口不用时一定要使用exit命令退出登录,并且一定要修改默认的pi用户和root用户的密码,尤其是root用户,不然你的邻居可能无意间连接上来,直接黑掉你的树莓派
为了保险起见,可以给蓝牙模块设置一个PIN,再配对时需要输入正确的密码才能连接
后话
Git服务器虽然搭建起来了,但由于受到CPU性能的限制,Git上传速度只有可怜的500kb/s,下载只有700kb/s,这还是外置硬盘的读写速度,不过好歹能用,等明年有钱了就上咸鱼淘一个树莓派3b去,先将就着用一下吧,反正也是备份数据,对速度要求并不高
(可以看到Clone时CPU已经接近100%了,而Push时的网速更慢)
