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

新手求助:在Plesk Obsidian(Ubuntu 16)服务器安装ApostropheCMS遇npm权限问题,如何将node_modules安装到网站目录

解决Plesk非root用户安装Apostrophe-cli的权限问题

嘿,作为Node.js新手碰到这个权限问题太正常了!我来一步步帮你搞定:

核心原因

默认情况下,npm install -g会把包安装到系统级目录(比如你这里的/opt/plesk/node/12/lib/node_modules),但非root用户没有写入这个目录的权限,所以我们要把npm的全局包安装路径改成你自己的网站目录。

具体操作步骤

  1. 创建专属的全局包存储目录
    先在你的网站根目录下创建一个用来存放全局npm包、可执行命令和缓存的文件夹:

    mkdir -p /var/www/vhosts/mywebsite/.npm-global/{lib/node_modules,bin,cache}
    
    • lib/node_modules:用来存放全局安装的npm包
    • bin:存放全局包对应的可执行命令(比如apostrophe)
    • cache:npm的缓存目录,加快后续安装速度
  2. 配置npm使用新路径
    分两种方式配置,推荐永久生效的方案:

    • 临时生效(仅当前SSH会话):
      直接运行这条命令,npm会临时把全局包安装到你指定的目录:
      npm config set prefix '/var/www/vhosts/mywebsite/.npm-global'
      
    • 永久生效(所有后续会话都能用):
      1. 编辑你的shell配置文件(比如~/.bashrc,如果用Zsh就是~/.zshrc):
        nano ~/.bashrc
        
      2. 在文件末尾添加一行,把新的bin目录加入系统PATH,这样你能直接运行全局命令:
        export PATH=/var/www/vhosts/mywebsite/.npm-global/bin:$PATH
        
      3. 保存退出后,让配置立即生效:
        source ~/.bashrc
        
      4. 再设置npm的全局prefix,确保后续npm install -g都指向你的目录:
        npm config set prefix '/var/www/vhosts/mywebsite/.npm-global'
        
  3. 安装Apostrophe-cli
    现在再运行安装命令,就不会有权限问题了:

    npm install -g apostrophe-cli
    
  4. 验证安装成功
    运行这条命令,查看apostrophe命令的位置,如果返回你网站目录下的路径,就说明配置成功了:

    which apostrophe
    

    预期输出:/var/www/vhosts/mywebsite/.npm-global/bin/apostrophe

额外提示

之后你安装其他全局npm包时,都会自动存到这个专属目录,再也不用跟系统目录的权限较劲啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:42:42