You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plesk中Webhook执行npm install与touch tmp/restart.txt命令失败,求正确配置方式

解决Plesk中额外部署动作npm install不执行的问题

我来帮你排查这个问题——大概率是npm install执行过程中出现了隐性错误(比如找不到命令、权限不足或依赖安装失败),导致后续的touch命令也被中断了。下面是几个针对性的解决方案,你可以逐个尝试:

1. 明确指定npm的绝对路径

Plesk的部署环境PATH变量通常和你手动登录服务器的shell环境不同,很可能找不到npm的位置。先通过SSH登录服务器,执行which npm拿到npm的绝对路径(比如/usr/local/bin/npm),然后把部署命令改成:

/usr/local/bin/npm install && touch tmp/restart.txt

这样就能避免因“找不到npm命令”导致的执行失败。

2. 添加日志输出排查错误

把命令改成带详细日志的形式,方便定位问题根源:

npm install --verbose > deploy-npm.log 2>&1 && touch tmp/restart.txt

部署完成后,去你的网站根目录查看deploy-npm.log文件,里面会记录npm执行的所有细节——比如依赖下载失败、目录权限不足、Node版本不兼容等问题都能在这里找到线索。

3. 检查部署用户的权限

Plesk的部署动作是通过特定系统用户执行的,这个用户可能没有安装npm依赖的权限。你可以尝试两种方式:

  • 给部署用户赋予网站根目录的读写权限;
  • 如果服务器允许,在命令前添加sudo(注意要确保部署用户在sudoers列表中,且无需输入密码):
    sudo npm install && touch tmp/restart.txt
    

4. 拆分命令并指定工作目录

有时候Plesk的多命令执行环境会出现工作目录不一致的问题,你可以把两条命令分开设置,同时给npm install明确指定网站根目录:

  • 第一条部署命令:
    cd /var/www/vhosts/your-domain.com/httpdocs && npm install
    
    (把路径替换成你实际的网站根目录)
  • 第二条部署命令:
    touch tmp/restart.txt
    

5. 强制指定Node.js版本

如果服务器上安装了多个Node.js版本,可能npm关联的版本不符合项目要求导致安装失败。你可以直接指定node和npm的路径来执行:

/usr/local/bin/node /usr/local/bin/npm install && touch tmp/restart.txt

或者用npx来确保使用项目指定的npm版本:

npx npm install && touch tmp/restart.txt

优先尝试前两种方案(指定绝对路径+日志排查),基本上能解决80%以上的这类问题。如果日志里显示具体的依赖错误,再针对性处理即可。

内容的提问来源于stack exchange,提问作者South3492

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:14:09