快速解释:我有一个升级服务器和一个生产服务器,两者都使用相同的部署脚本(唯一的区别是克隆的repo分支)。部署脚本运行bower install
,它全局安装在两台服务器上。
要在全球范围内安装,我将npm config set prefix
更改为/home/forge/.npm-packages
,之后又npm install -g bower
了{注意sudo
不是必需的,这是改变前缀)。再一次,这是在两台服务器上完成的。
当我ssh
进入每个服务器并运行bower -v
,which bower
时,很明显命令DO存在,并且它被添加到PATH
env。两台服务器的输出相同。
在项目根目录上手动运行bower install
适用于两个服务器。
问题是伪造部署脚本,仅在生产时失败(IKR?我不知道我期待什么)。
实际输出为:
/home/forge/.forge/provision-2394191.sh: line 8: bower: command not found
有趣的是,在我尝试调试时,我手动运行provision-2394191.sh
并且它有效。
我的生产服务器有什么问题?
答案 0 :(得分:2)
似乎使用/home/forge/.npm-packages
向$PATH
添加新的export
是不够的。要解决这个问题,我必须手动将其添加到/etc/environment
文件中。