Serv00 部署 Gogs 属于你自己的 Git 服务

1. 前言

最近想搭建一个属于自己的 GIT 服务,看中了 Gogs ,它基于 Git 并使用 Go 语言开发,支持跨平台,易于安装和使用,相比 GitlabGitea 更轻量一些,深得我意;虽然功能并没有以上两个完全,但个人使用足够了;于是我打算把吃灰的 Serv00 利用起来,将 Gogs 部署在 Serv00

Serv00 是一家总部位于波兰的免费主机服务提供商,以提供长达 10 年且无广告的免费虚拟主机而知名;它基于 FreeBSD 系统,提供 3GB SSD 存储、不限流量、支持 PHP、Node.js、Python 以及 SSH 连接,适合搭建小网站、个人网盘或轻量级应用

2. Serv00准备工作

开放一个端口:

1778318925779.png
1 . 左侧菜单找到 Port reservation -> Add port
2 . 随便输入一个端口号(建议在 10000 - 65000 之间,比如 31000),类型选 TCP
3 . 记住这个端口号,下面会用到

创建 Mysql 数据库:

1778319011126.png
1 . 左侧菜单找到 MySQL -> Add database
2 . 创建一个数据库(比如命名为 gogs),并设置密码。
3 . 记住:数据库名、用户名、密码、以及页面上方显示的 MySQL 服务器地址

设置域名反向代理:

1778319061890.png
1 . 左侧菜单找到 WWW websites -> Add new website
2 . Domain 填你要访问 Gogs 的域名(可以是 Serv00 送你的免费二级域名,比如 git.你的用户名.serv00.net,也可以是你自己的域名)
3 . 点击 Advanced settings 展开高级设置
4 . Website type 选择 Proxy
5 . Proxy target 选择:localhost
6 . Proxy port 选择:你上一步开放的端口;最后点击 Add 添加

注意:如果选择添加的域名是你自己的域名,需要在你的域名托管处添加指向 Serv00 的解析,这里以 CloudFlare 为例,在你的域名下按以下添加记录

  • 类型 (Type):CNAME
  • 主机记录 (Name/Host):填你想要的前缀,比如 git(这样你的网址就是 git.你的域名.com)
  • 记录值 (Value/Target):panelx.serv00.com;比如我的面板是S13的,那么就是 panel13.serv00.com

3. 部署 Gogs

需要 SSH 登录 Serv00 服务器,Serv00 的系统是 FreeBSD,使用上和 Linux 很相似;用户名和密码就是面板的用户名和密码,登录之后即可接下来的步骤

3.1 下载并编译 Gogs 源码

由于官方不提供 FreeBSD 系统的现成文件,你只能自己编译;好在 Go 语言的交叉编译非常简单,并且 Serv00 自带了 Go 语言环境

下载源码:

wget -O gogs-src.tar.gz https://codeload.github.com/gogs/gogs/tar.gz/refs/tags/v0.14.2

解压缩并重命名:

tar -zxvf gogs-src.tar.gz
mv gogs-0.14.2 gogs

进入 gogs 目录:

cd gogs\

开始安全编译,注意这里需要等待几分钟的时间,编译完成如下图:

go build -p 1 -tags "sqlite cert" -o gogs
1778321684159.png

删除压缩包释放宝贵的硬盘空间:

rm ~/gogs-src.tar.gz

gogs 赋予可执行权限:

chmod +x gogs
3.2 更改运行端口

自定义配置文件夹;确保当前在 gogs 根目录:

mkdir -p custom/conf

写入你的 Serv00 开通的端口号:

echo "[server]" > custom/conf/app.ini
echo "HTTP_PORT = 你的端口号" >> custom/conf/app.ini
3.3 启动并测试Gogs
./gogs web

正常情况下,应该已经运行成功了,可以访问你的域名测试一下,不出意外你应该能看到数据库配置的页面了

1778324829716.png
  • 数据库类型: 点击下拉菜单,改成 SQLite3
  • 数据库文件路径: /usr/home/username/gogs/data/gogs.db;这里的 username 填你的用户名

接下来是用户名和密码的填写,自定义即可,完成后将进入首页:

1778322900814.png
3.4 申请 SSL 证书

1 . 左侧菜单找到 SSL -> WWW websites

1778329078151.png

2 . 这里有两个IP,ping 一下你的面板地址,返回是哪个就选哪个,点击右侧的 Manage,进入后点击 + Add new website

1778328859599.png

3 . Type 选择:Generate Let's Encrypt certificate
4 . Domain 选择:你之前设置的域名,点击添加即可

5 . 回到你的域名界面,点击 Manage -> Details

1778329923060.png

在弹出的界面中,把 Force SSL 右边的开关,从 Off 点一下,变成 On 即可;现在将 SSH 终端上的服务取消掉,后续将在后台运行

4. 将Gogs在后台运行

现在是前台模式运行的,一旦你关闭 SSH 或者取消,Gogs 就会立刻断开;为了让它成为一个真正的服务器程序,我们需要让它在后台静默运行,这里推荐使用 PM2 来完成

安装 PM2Serv00 默认已经预装了 Node.jsnpm 环境):

npm install -g pm2

进入 Gogs 目录,并让 PM2 把它跑起来(运行状态如图):

cd ~/gogs
pm2 start ./gogs --name "gogs" --interpreter none -- web
1778323997604.png

保存 PM2 的运行列表:

pm2 save

5. 保活

由于现在 Serv00 不需要3个月内登录一次了,所以只需要保活 Gog 应用就行,这里只需要通过定时任务保活 PM2 服务即可,因为 pm2 save 命令会记住现在跑的程序,下次你启动时,把它们全拉起来

编辑 cron 文件:

crontab -e

将以下内容添加到最后(把用户名换成你自己的):

*/10 * * * * pgrep -x pm2 > /dev/null || /usr/home/用户名/.npm-global/lib/node_modules/pm2/bin/pm2 resurrect > /dev/null 2>&1

6. 结尾

至此,在 Serv00 上成功部署 Gogs,值得注意的是,Serv00 提供的免费 3GB 硬盘空间,确实比较小,个人用可能也有些捉襟见肘,不过对于我来说,还是够了的😊

想了解更多的 SerV00 相关的部署教程,可以尝试访问:Serv00 部署教程合集

文章分享到:

一条评论

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注