【问题标题】:supervisord with haproxy, paster, and node js带有 haproxy、paster 和 node js 的 supervisord
【发布时间】:2023-07-01 20:23:01
【问题描述】:

我必须为我的应用程序和nodejs运行paster serve,我的实时要求都是通过haproxy配置的,但是在这里我需要以sudo的身份运行haproxy来绑定端口80和其他进程作为普通用户,怎么做?我尝试了不同的方法,但没有用。我试过这个命令

command=sudo haproxy

我认为这不是我们应该这样做的方式。有什么想法吗?

【问题讨论】:

    标签: haproxy supervisord


    【解决方案1】:

    您需要以 root 身份运行 supervisord,并将其配置为在非特权用户下运行各种服务。

    [program:paster]
    # other configuration
    user = wwwdaemon
    

    为了让它工作,你不能在[supervisord] 部分设置user 选项(否则守护进程不能重新启动你的haproxy 服务器)。因此,您确实希望确保您的 supervisord 配置只能由 root 用户写入,因此不能将新程序添加到正在运行的 supervisord 守护进程,并且您希望确保 XML-RPC 服务器选项得到很好的保护。

    后者意味着您需要查看您已配置为正确锁定的任何[unix_http_server][inet_http_server][rpcinterface:x] 部分。例如,使用 [unix_http_server] 部分的 chownchmod 选项将套接字文件的访问权限仅限于特权用户。

    或者,您可以运行具有最少配置的轻量级前端服务器,将端口 80 代理到非特权端口,并将这个最小的服务器排除在您的 supervisord 设置之外。 ngnix 是执行此操作的出色服务器,例如,通过服务器的本机打包系统安装(例如 Debian 或 Ubuntu 上的 apt-get)。

    【讨论】:

    • 感谢您的回答。我认为最好将我的 haproxy 排除在 supervisord 设置之外,只使用它来管理我的 paster 和 nodjs 进程,因为我们不必在每次重新启动它正在处理的其他服务器/进程时重新启动 haproxy。
    最近更新 更多