Twikoo 服务启动指南

建站
Twikoo, 部署, 服务启动
0 字 / 约 0 分钟

Twikoo 服务启动指南

问题诊断

根据错误日志 connect() failed (111: Connection refused),确认 Twikoo 后端服务未运行

快速启动方案

方案 1: 使用 PM2 启动(推荐)

步骤 1: 检查 Node.js 和 PM2

bash
# 检查 Node.js
node -v
npm -v

# 检查 PM2
pm2 -v

# 如果没有 PM2,安装它
npm install -g pm2

步骤 2: 创建 Twikoo 目录

bash
# 创建目录
sudo mkdir -p /www/twikoo
cd /www/twikoo

# 或者使用其他目录
sudo mkdir -p /opt/twikoo
cd /opt/twikoo

步骤 3: 安装 Twikoo

bash
# 初始化 npm 项目
npm init -y

# 安装 Twikoo
npm install twikoo --production

步骤 4: 启动服务

bash
# 使用 PM2 启动 Twikoo
pm2 start node_modules/twikoo/bin/twikoo.js --name twikoo -- server --port 8080

# 设置开机自启
pm2 save
pm2 startup

# 查看状态
pm2 status
pm2 logs twikoo

步骤 5: 验证服务

bash
# 测试服务是否运行
curl http://127.0.0.1:8080/version

# 应该返回版本号,例如:1.6.44

方案 2: 使用 Docker 启动

步骤 1: 拉取镜像

bash
docker pull imaegoo/twikoo

步骤 2: 创建数据目录

bash
sudo mkdir -p /data/twikoo

步骤 3: 启动容器

bash
docker run -d \
  --name twikoo \
  --restart unless-stopped \
  -p 8080:8080 \
  -v /data/twikoo:/app/data \
  imaegoo/twikoo

步骤 4: 验证服务

bash
# 查看容器状态
docker ps | grep twikoo

# 查看日志
docker logs twikoo

# 测试服务
curl http://127.0.0.1:8080/version

方案 3: 使用 systemd 启动

步骤 1: 创建服务文件

bash
sudo nano /etc/systemd/system/twikoo.service

步骤 2: 添加服务配置

ini
[Unit]
Description=Twikoo Comment Server
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/www/twikoo
ExecStart=/usr/bin/node node_modules/twikoo/bin/twikoo.js server --port 8080
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

步骤 3: 启动服务

bash
# 重新加载 systemd
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start twikoo

# 设置开机自启
sudo systemctl enable twikoo

# 查看状态
sudo systemctl status twikoo

验证和测试

1. 检查服务端口

bash
# 检查端口是否监听
netstat -tlnp | grep 8080
# 或
ss -tlnp | grep 8080

2. 测试 API 端点

bash
# 测试版本接口
curl http://127.0.0.1:8080/version

# 测试评论接口
curl -X POST http://127.0.0.1:8080/ \
  -H "Content-Type: application/json" \
  -d '{"action":"getComments","url":"/test"}'

3. 检查 Nginx 配置

确保 Nginx 配置正确:

nginx
location /twikoo/ {
    proxy_pass http://127.0.0.1:8080/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    
    # 超时设置
    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
}

重新加载 Nginx:

bash
sudo nginx -t
sudo nginx -s reload

4. 浏览器测试

在浏览器控制台执行:

javascript
// 测试服务版本
fetch('https://chiplayout.net/twikoo/version')
  .then(r => r.text())
  .then(console.log)

// 应该返回版本号,而不是 502

常见问题

问题 1: 端口被占用

bash
# 检查端口占用
sudo lsof -i :8080
# 或
sudo netstat -tlnp | grep 8080

# 如果被占用,可以:
# 1. 停止占用端口的进程
# 2. 或修改 Twikoo 使用其他端口(如 8081)

问题 2: 权限问题

bash
# 确保目录权限正确
sudo chown -R www-data:www-data /www/twikoo
# 或
sudo chown -R $USER:$USER /www/twikoo

问题 3: Node.js 版本问题

bash
# 检查 Node.js 版本(需要 >= 14)
node -v

# 如果版本过低,升级 Node.js
# 使用 nvm
nvm install 18
nvm use 18

问题 4: PM2 服务未保存

bash
# 保存当前进程列表
pm2 save

# 生成启动脚本
pm2 startup

# 按照提示执行生成的命令

维护命令

PM2 管理

bash
# 查看状态
pm2 status

# 查看日志
pm2 logs twikoo

# 重启服务
pm2 restart twikoo

# 停止服务
pm2 stop twikoo

# 删除服务
pm2 delete twikoo

Docker 管理

bash
# 查看状态
docker ps -a | grep twikoo

# 查看日志
docker logs twikoo

# 重启容器
docker restart twikoo

# 停止容器
docker stop twikoo

# 启动容器
docker start twikoo

systemd 管理

bash
# 查看状态
sudo systemctl status twikoo

# 查看日志
sudo journalctl -u twikoo -f

# 重启服务
sudo systemctl restart twikoo

# 停止服务
sudo systemctl stop twikoo

下一步

服务启动后:

  1. ✅ 验证 curl http://127.0.0.1:8080/version 返回版本号
  2. ✅ 检查 Nginx 错误日志不再有 Connection refused
  3. ✅ 刷新网站页面,评论功能应该正常工作
  4. ✅ 测试提交评论功能

相关文档