diff --git a/deploy/pm2/ecosystem.config.cjs b/deploy/pm2/ecosystem.config.cjs new file mode 100644 index 0000000..f2c138f --- /dev/null +++ b/deploy/pm2/ecosystem.config.cjs @@ -0,0 +1,20 @@ +module.exports = { + apps: [ + { + name: "video-hotness", + script: "src/server.js", + cwd: "/www/video-hotness", + interpreter: "node", + env: { + NODE_ENV: "production", + HOST: "0.0.0.0", + PORT: "3000", + HOTNESS_ACCESS_PASSWORD: "CHANGE_ME", + HOTNESS_DATA_DIR: "/www/video-hotness/data", + }, + max_restarts: 10, + restart_delay: 3000, + time: true, + }, + ], +}; diff --git a/deploy/systemd/video-hotness.service.example b/deploy/systemd/video-hotness.service.example new file mode 100644 index 0000000..06a24ed --- /dev/null +++ b/deploy/systemd/video-hotness.service.example @@ -0,0 +1,18 @@ +[Unit] +Description=Video Hotness Collection Service +After=network.target + +[Service] +Type=simple +WorkingDirectory=/www/video-hotness +ExecStart=/usr/bin/node /www/video-hotness/src/server.js +Restart=always +RestartSec=3 +Environment=NODE_ENV=production +Environment=HOST=0.0.0.0 +Environment=PORT=3000 +Environment=HOTNESS_ACCESS_PASSWORD=CHANGE_ME +Environment=HOTNESS_DATA_DIR=/www/video-hotness/data + +[Install] +WantedBy=multi-user.target diff --git a/火山引擎云服务器部署步骤(推荐PM2常驻).md b/火山引擎云服务器部署步骤(推荐PM2常驻).md new file mode 100644 index 0000000..28b2a46 --- /dev/null +++ b/火山引擎云服务器部署步骤(推荐PM2常驻).md @@ -0,0 +1,175 @@ +# 火山引擎云服务器部署步骤(推荐 PM2 常驻) + +服务器公网 IP: + +```text +118.196.84.249 +``` + +部署后的访问地址: + +```text +http://118.196.84.249:3000/ +http://118.196.84.249:3000/mobile.html +``` + +## 1. 登录服务器 + +在火山引擎控制台进入: + +```text +云服务器 ECS -> 实例 -> Kaikai专用服务器 -> 远程连接 +``` + +打开命令行后先确认系统: + +```bash +uname -a +``` + +## 2. 安装基础工具 + +Ubuntu / Debian / veLinux 可执行: + +```bash +apt update +apt install -y git curl +``` + +如果提示没有权限,在命令前加 `sudo`。 + +## 3. 安装 Node.js 20 + +先检查: + +```bash +node -v +``` + +如果不是 `v20` 开头,执行: + +```bash +curl -fsSL https://deb.nodesource.com/setup_20.x | bash - +apt install -y nodejs +node -v +npm -v +``` + +## 4. 拉取代码 + +```bash +mkdir -p /www +git clone https://gitea.airlabs.art/zyc/kaikai_test.git /www/video-hotness +cd /www/video-hotness +npm install +``` + +如果仓库要求登录,输入 Gitea 用户名和访问令牌。建议使用访问令牌,不建议长期使用账号密码。 + +## 5. 设置访问密码 + +复制 PM2 配置: + +```bash +cp deploy/pm2/ecosystem.config.cjs ecosystem.config.cjs +``` + +编辑配置: + +```bash +nano ecosystem.config.cjs +``` + +把这一行: + +```text +HOTNESS_ACCESS_PASSWORD: "CHANGE_ME", +``` + +改成你的云端访问密码,例如: + +```text +HOTNESS_ACCESS_PASSWORD: "Kaikai2026", +``` + +保存:`Ctrl + O`,回车。退出:`Ctrl + X`。 + +## 6. 用 PM2 后台常驻 + +安装 PM2: + +```bash +npm install -g pm2 +``` + +启动: + +```bash +pm2 start ecosystem.config.cjs +pm2 save +pm2 startup +``` + +`pm2 startup` 会输出一行命令,复制它并执行一次。执行后,服务器重启也会自动恢复。 + +## 7. 查看运行状态 + +```bash +pm2 status +pm2 logs video-hotness +``` + +看到 `online` 就是正在运行。 + +## 8. 火山引擎放行端口 + +进入火山引擎控制台: + +```text +云服务器 ECS -> 实例 -> 安全组 +``` + +添加入方向规则: + +```text +协议:TCP +端口:3000 +授权对象:0.0.0.0/0 +策略:允许 +``` + +保存后访问: + +```text +http://118.196.84.249:3000/ +``` + +## 9. 后续更新代码 + +以后本地开发推送后,服务器执行: + +```bash +cd /www/video-hotness +git pull +npm install +pm2 restart video-hotness +``` + +## 10. 常见问题 + +如果网页打不开: + +```bash +pm2 status +pm2 logs video-hotness +``` + +如果服务器能跑但外面打不开,优先检查火山引擎安全组是否放行 `TCP 3000`。 + +如果忘记访问密码: + +```bash +cd /www/video-hotness +nano ecosystem.config.cjs +pm2 restart video-hotness +```