冷饭热炒-Serv00部署sub-store

冷饭热炒-Serv00部署sub-store
冷饭热炒-Serv00部署sub-store

Clawcloud Run 不让玩了,想起手里还有个吃灰的 Serv00,正好拿来废物利用一下。
参考了 Linux.do 论坛里佬的教程(https://linux.do/t/topic/499281,顺便把步骤重新精简梳理了一遍,方便以后抄作业。

一、Serv00 面板配置

  1. 添加一个端口
    登录 Serv00 面板,找到 Port reservationAdd port。类型选 TCP,系统会随机分配一个端口(比如 12345),先记下来。
  2. 开权限
    Additional services,确保 Run your own applications 处于 Enabled 状态(不然不给运行自己的程序)。
  3. 搞定域名
    WWW WebsitesAdd new website
  • Domain:填你自己的域名或者 Serv00 自带的免费二级域名。
  • Domain type:一定要选 Proxy
  • Proxy port:填刚刚申请到的端口(比如 12345)。

二、连上 SSH 下载文件

连上 Serv00 的 SSH 终端,直接无脑复制执行下面这串命令:

# 创建并进入专属文件夹
cd ~ && mkdir -p sub-store && cd sub-store

# 下载最新的后端 Bundle 文件
wget https://github.com/sub-store-org/Sub-Store/releases/latest/download/sub-store.bundle.js

# 下载最新的前端文件并解压
wget https://github.com/sub-store-org/Sub-Store-Front-End/releases/latest/download/dist.zip
unzip dist.zip && rm dist.zip

完事之后敲个 pwd,把当前文件夹的绝对路径复制存一下(一般长这样:/usr/home/你的用户名/sub-store)。

三、配置 .env 环境变量(前后端融合)

为了省心,这里直接用最新的前后端融合配置。在当前目录下新建一个配置文件:

nano .env

把下面这段配置贴进去,记得把注释里提示的地方改成你自己的

# 开启融合模式,前后端共用一个端口
SUB_STORE_BACKEND_MERGE=true 

# 接口安全路径(相当于你的专属 Token,随便编一个复杂的英文,比如 /my_secret_666)
SUB_STORE_FRONTEND_BACKEND_PATH="/linuxdo"

# 后端监听端口(改成你前面在面板申请到的端口)
SUB_STORE_BACKEND_API_PORT=12345
SUB_STORE_BACKEND_API_HOST=""

# 前端文件的绝对路径(改成你上面 pwd 查出来的实际路径)
SUB_STORE_FRONTEND_PATH="/usr/home/你的用户名/sub-store/dist"

小提示:用 nano 改完后,按 Ctrl + O 再回车保存,最后按 Ctrl + X 退出。

四、测试与首次访问

  1. 先手动跑一下试试

node sub-store.bundle.js

   没报错的话说明服务正常起来了。

2. **怎么访问?**
   因为加了 Path 路径鉴权,直接输域名是打不开的。第一次进去必须用特殊格式的 URL 来激活:
   * **格式**:`https://你的域名?api=https://你的域名/你的Path`
   * **例子**:`[https://sub.serv00.net?api=https://sub.serv00.net/linuxdo](https://sub.serv00.net?api=https://sub.serv00.net/linuxdo)`

   > **原理简述**:这样带参数访问一次后,前端会自动把这个安全路径记录到浏览器的 LocalStorage 里。以后在这台电脑上直接输入 `https://你的域名` 就能正常用了,而外面那些瞎扫描的黑客只会看到报错,安全感拉满。

测试没问题的话,在终端按 `Ctrl + C` 把程序先停掉,准备搞后台保活。

### 五、后台运行与自动保活
Serv00 经常会不定时杀进程或者重启服务器,所以必须挂个保活脚本。

1. **写个启动脚本**:
   ```bash
nano start.sh

把下面的保活代码贴进去:

#!/bin/sh
BASE_PATH=$(cd "$(dirname "$0")"; pwd)
APP_NAME="sub-store"
SCRIPT_PATH="$BASE_PATH/sub-store.bundle.js"

# 检查进程是否在运行
PID=$(pgrep -f "${SCRIPT_PATH}" | grep -v $$)
if [ -z "$PID" ]; then
 echo "Starting ${APP_NAME}..."
 cd $BASE_PATH
 # 用 nohup 挂在后台运行
 nohup node $SCRIPT_PATH > ./$APP_NAME.log 2>&1 &
 echo "${APP_NAME} started."
else
 echo "${APP_NAME} is already running with PID: $PID"
fi

给脚本加一下执行权限:

chmod +x start.sh

  1. 白嫖 Serv00 的定时任务(Cron Job)
    去 Serv00 的 Web 面板:
  • 找到 Cron jobsAdd cron job
  • Specify time:建议选每 10 分钟运行一次(自定义填 */10 * * * *),或者图省事直接选每小时(0 * * * *)。
  • Command:填你脚本的绝对路径,比如:
    /usr/home/你的用户名/sub-store/start.sh

搞定点 Add。以后就算 Serv00 重启或者抽风杀进程,脚本也会自动把 Sub-Store 重新拉起来,稳得很。

3 个帖子 - 3 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文