如何在没有sudo的情况下启动gunicorn服务

时间:2015-12-05 00:03:31

标签: ubuntu gunicorn user-permissions

我通常会做一个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的情况下调用该服务。提前谢谢

1 个答案:

答案 0 :(得分: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等工具在启动时启用或禁用它们。

祝你好运!