如何设置 Linux 环境变量,以便 pm2 可以看到 node.js 应用程序的环境变量?
How do I set Linux environment variables so that pm2 can see them for node.js apps?
当我 运行 我的 Ubuntu Linux 服务器上的 nodejs 应用程序使用 node server.js
它工作正常,并输出环境变量的值 $db
使用 process.env.db.
但是,应用程序在 运行ning sudo pm2 start server.js
时中断,将环境变量视为 undefined。
我尝试在以下文件中添加变量:
- etc/environment:
db="hello"
- ~/.ssh/environment :
db="hello"
- ~/.bashrc :
export db="hello"
我也重新启动 运行 source ~/.bashrc
以确保变量可用。
我想我已经尝试了这里提到的所有方法,我不知道还能做什么:
- https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables
- https://github.com/Unitech/pm2/issues/867
- Why does an SSH remote command get fewer environment variables then when run manually?
- https://serverfault.com/questions/389601/etc-environment-export-path
请参考本帖https://github.com/Unitech/pm2/issues/204
您的环境变量似乎已被缓存。
请注意,说 source ~/.bashrc
您正在为当前用户加载变量。然而,当你说 sudo ...
你是 运行 用户 root
,所以这不会改变。
你可以做的是使用 sudo
和 -E
:
sudo -E pm2 start server.js
来自man sudo
:
-E, --preserve-env
Indicates to the security policy that the user wishes to reserve their
existing environment variables. The security policy may eturn an error
if the user does not have permission to preserve the environment.
当我 运行 我的 Ubuntu Linux 服务器上的 nodejs 应用程序使用 node server.js
它工作正常,并输出环境变量的值 $db
使用 process.env.db.
但是,应用程序在 运行ning sudo pm2 start server.js
时中断,将环境变量视为 undefined。
我尝试在以下文件中添加变量:
- etc/environment:
db="hello"
- ~/.ssh/environment :
db="hello"
- ~/.bashrc :
export db="hello"
我也重新启动 运行 source ~/.bashrc
以确保变量可用。
我想我已经尝试了这里提到的所有方法,我不知道还能做什么:
- https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables
- https://github.com/Unitech/pm2/issues/867
- Why does an SSH remote command get fewer environment variables then when run manually?
- https://serverfault.com/questions/389601/etc-environment-export-path
请参考本帖https://github.com/Unitech/pm2/issues/204
您的环境变量似乎已被缓存。
请注意,说 source ~/.bashrc
您正在为当前用户加载变量。然而,当你说 sudo ...
你是 运行 用户 root
,所以这不会改变。
你可以做的是使用 sudo
和 -E
:
sudo -E pm2 start server.js
来自man sudo
:
-E, --preserve-env
Indicates to the security policy that the user wishes to reserve their
existing environment variables. The security policy may eturn an error
if the user does not have permission to preserve the environment.