【问题标题】:How to start the gunicorn service without sudo如何在没有 sudo 的情况下启动 gunicorn 服务
【发布时间】:2016-03-10 01:06:15
【问题描述】:

我通常会使用sudo service gunicorn start 来启动 gunicorn 服务,因此我的应用程序每当需要创建一个文件夹,该文件夹的所有权属于在运行命令时登录的用户,并且该组属于 sudo。我的问题是,为什么当我尝试将服务调用为 service gunicorn start 时出现错误

start: Rejected send message, 1 matched rules; type="method_call", sender=":1.20" (uid=1001 pid=10684 comm="start gunicorn ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init ")

我知道这与权限有关,但我无法完全理解此消息的含义以及在没有sudo 的情况下如何调用服务。提前谢谢你

【问题讨论】:

    标签: ubuntu gunicorn user-permissions


    【解决方案1】:

    Linux 服务必须由 root 启动,除非您使用 sudo。例如,如果您检查脚本服务:

    lgallard@host:~$ ls -l /etc/init.d/* | head
    -rwxr-xr-x 1 root root  2243 abr  3  2014 /etc/init.d/acpid
    -rwxr-xr-x 1 root root  2014 feb 19  2014 /etc/init.d/anacron
    -rwxr-xr-x 1 root root  9974 ene  7  2014 /etc/init.d/apache2
    -rwxr-xr-x 1 root root  4596 mar 27  2014 /etc/init.d/apparmor
    -rwxr-xr-x 1 root root  2801 oct 30  2014 /etc/init.d/apport
    

    你会意识到一切都属于root。

    另一方面,您可以检查 gunicorn 是否具有将进程作为守护进程运行的标志,并检查它是否可以使用预定义的用户运行。但我想最好的方法是使用 Linux 服务,因此您可以在启动时使用 sysv-rc-conf 或 chkconfig 等工具启用或禁用它们。

    最好的问候!

    【讨论】:

    • 非常感谢您的回答。我需要一些时间来研究和理解它。现在为了详细说明,我不得不承认我的最佳目标不是启动服务非 sudo,但要调试以下问题:在我的开发服务器上,当我以用户“user1”身份登录并使用 sudo 启动 PyCharm 并运行我的应用程序时,会使用 ownership:group = user1:sudo 创建一个文件夹,而当我将 PyCharm 启动为非 sudo 相同的文件夹创建为 user1:user1。所以我想验证生产服务器中是否存在相同的文件夹(gunicorn 运行)。再次感谢您!
    • 我什至尝试从用户中删除组sudo,但该文件夹创建为user1:sudo,而不是user1:user1,这是所需的,我希望通过运行 gunicorn 作为非 sudo。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 2016-06-27
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多