如何为以非登录用户身份运行的服务设置 PATH 变量?

如何为以非登录用户身份运行的服务设置 PATH 变量?

我在 Linux 机器上运行 GitLab 服务器,使用 Nginx 作为 Web 服务器。多个进程(以 root 身份手动启动/etc/init.d/foo start或以子进程自动启动)以不同的用户身份运行:

  • nginx 作为 www 用户
  • postgres 作为 postgres
  • redis-server 作为 redis
  • unicorn-rails 和 sidekiq 作为 git

用户 git 配置为无需登录,我通常sudo -u git -H foo以用户 git 的身份执行操作。用户已在本地路径中安装了一个可执行文件 (node.js)。要使用它,我需要将 sudo 更改为 sudo -u git -H env "PATH=/home/git/local/bin/:$PATH" foo。我还将其添加到用户 git 的 .bashrc 文件中,但我认为这永远不会执行,因为禁止使用 shell 登录。

由于我在使用 GitLab 服务器时遇到问题,我怀疑该服务没有正确设置 PATH 变量,并且无法在本地路径中找到 node.js。

我的问题: 如何为非登录用户设置环境变量(例如 PATH),以便以该用户身份运行的服务(由 root 启动/etc/init.d/foo start或在启动时启动)可以访问它?

附加问题: 哪个进程/用户需要访问 Javascript 引擎?Nginx/www-user?还是 Rails(Unicorn)/git?

相关内容