背景
如上篇博文所述,我的服务器主板坏了,而git又是生产学习中必不可少的服务,所以只能考虑尽快将其搭建起来。因为希望将git放在内网,所以考虑使用树莓派3b+搭建。同时,我希望git服务能够有WebUI方便浏览与管理,而gitlab的硬件要求又是树莓派无法满足的,故而尝试着搭建gogs。
在树莓派上搭建gogs
- 安装win32 disk imager
- 下载raspbian并解压得到.img文件
- 用win32 disk imager将.img文件写入tf卡
- 在内存卡根目录创建空文件'ssh'以开启ssh服务
- 各种方法查找树莓派ip地址,如路由后台或者nmap
更改/etc/ssh/sshd_config允许root登录
PermitRootLogin yes service ssh restart
更新系统
sudo apt-get update && sudo apt-get upgrade
安装并配置mysql数据库
apt install mariadb-server systemctl enable mariadb.service mysql -u root MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS gogs COLLATE utf8_general_ci; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> quit Bye
安装git
apt install git
从dl.gogs.io下载对应版本的gogs包
root@raspberrypi:~# uname -a Linux raspberrypi 4.19.57-v7+ #1244 SMP Thu Jul 4 18:45:25 BST 2019 armv7l GNU/Linux
此处我安装的版本是[0.11.91_raspi_armv7](https://dl.gogs.io/0.11.91/gogs_0.11.91_raspi_armv7.tar.gz
- 解压并移动至合适的位置(如我移动至/gogs)
授权gogs二进制文件的BIND操作
root@raspberrypi:/gogs# setcap CAP_NET_BIND_SERVICE=+eip /gogs/gogs
安装screen
apt install screen
启动gogs
root@raspberrypi:/gogs# screen ./gogs web 2019/09/01 08:41:33 [ WARN] Custom config '/gogs/custom/conf/app.ini' not found, ignore this if you're running first time 2019/09/01 08:41:33 [TRACE] Custom path: /gogs/custom 2019/09/01 08:41:33 [TRACE] Log path: /gogs/log 2019/09/01 08:41:33 [TRACE] Build Time: 2019-08-12 02:38:47 UTC 2019/09/01 08:41:33 [TRACE] Build Git Hash: c154721f4a8f3e24d2f6fb61e74b4b64529255c2 2019/09/01 08:41:33 [TRACE] Log Mode: Console (Trace) 2019/09/01 08:41:33 [ INFO] Gogs 0.11.91.0811 2019/09/01 08:41:33 [ INFO] Cache Service Enabled 2019/09/01 08:41:33 [ INFO] Session Service Enabled 2019/09/01 08:41:33 [ INFO] Run Mode: Development 2019/09/01 08:41:35 [ INFO] Listen: http://0.0.0.0:3000
- 访问gogs web http://xxx.xxx.xxx.xxx:3000
扩展swap大小
vim /etc/dphys-swapfile CONF_SWAPSIZE=8192
由于swap默认被硬编码为2047mb上限,如果要大于2gb还需要修改
vim /etc/dphys-swapfile CONF_MAXSWAP=8192
重启swap
/etc/init.d/dphys-swapfile stop /etc/init.d/dphys-swapfile start
查看新swap大小
root@raspberrypi:~# free -m total used free shared buff/cache available Mem: 926 142 123 11 660 708 Swap: 8191 0 8191
迁移数据库
一开始我以为将gitlab的仓库文件拷贝到gogs对应的目录下,重启gogs即可自动识别,但是发现并不能,于是只能用最笨的手动导入方法,还好仓库不是很多,不然还需要写个脚本。
- 在gogs创建新的仓库
添加远程仓库
git remote add origin https://git.sailark.com/User/Project.git
mirror push
git push --mirror
未尝试的迁移方法
在发现gogs无法自动导入拷贝的git仓库文件后,我逛了逛gogs的数据库,感觉可以写个脚本将仓库名字等信息直接写入数据库,但是感觉这方法有点脏,怕把gogs搞得一塌糊涂,最后没有进行尝试
上线
在将装了padavan的路由搭上nginx做反代后,将git服务连上了公网,但是发现居然无法访问了,还以为是防火墙规则没配好,但是琢磨了下发现,我家连443端口都被电信封了,据说是需要备案后才能申请解封。。。
那就只能改下端口然后用外网的服务器进行转发了,在外网服务器的nginx上再套一层跳到我家里,然后再套个cloudflare的cdn,一番操作之后果然外网可以了,虽然速度有些慢。
等等,我都这样做了为什么不干脆直接放在外网服务器上啊???