重新启动nginx没有sudo?
所以我想能够上限:部署时不必输入任何密码。我已经设置了所有私钥,所以我可以很好地到达远程服务器,并且现在通过ssh使用svn,因此没有密码。重新启动nginx没有sudo?
我有最后一个问题,我需要能够重新启动nginx。现在我有sudo /etc/init.d/nginx重新加载。这是一个问题b/c它使用capistrano密码,我刚刚删除b/c我正在使用密钥。有关如何重新启动nginx w \ out密码的任何想法?
我刚刚花了一个小时看着sudoer通配符等试图解决这个确切的问题。事实上,你真正需要的是一个重启nginx的root可执行脚本。
一下添加到在/ etc/sudoers文件
username hostname ALL=NOPASSWD: /path/to/script
写脚本根
#! /bin/bash
/bin/kill -HUP `cat /var/run/nginx.pid`
使脚本可执行
测试。
sudo /path/to/script
这是...美丽!多么惊人的解决方案!我一直在使用capistrano两年,并没有意识到这是可能的。 – ndbroadbent 2012-06-15 11:08:25
@ nathan.f77这正是我所需要的。 – phoolish 2012-10-22 07:54:29
如果有人破坏运行该应用程序的帐户,他们是否可以编辑此脚本并以root身份运行任意命令? – 2013-04-16 00:33:44
有一个better answer on Stack Overflow不涉及编写自定义脚本:
最好的做法是使用
/etc/sudoers.d/myuser
的
/etc/sudoers.d/
文件夹可以包含多个文件,使用户 调用东西使用sudo而不是根。该文件通常包含一个用户以及用户 可以运行而不必指定密码的命令列表。
说明:
在所有的命令,与您要使用nginx的重新启动没有sudo您的用户名替换为myuser。为用户
-
打开sudoers文件:
$ sudo visudo -f /etc/sudoers.d/myuser
-
编辑器将打开。你粘贴下面的行。这将允许用户运行nginx的启动,重新启动和停止:
$ myusername ALL=(ALL) NOPASSWD: /usr/sbin/service nginx start,/usr/sbin/service nginx stop,/usr/sbin/service nginx restart
保存击中CTRL +Ø。它会询问您要保存的位置,只需按输入即可确认默认设置。然后退出编辑器,按ctrl + x。
现在你可以重新启动(并启动和停止)nginx没有密码。我们来试试吧。
-
打开新的会话(否则,你可能根本不会被要求为你的sudo密码,因为它没有超时):
$ ssh [email protected]
-
停止nginx的
$ sudo /usr/sbin/service nginx stop
通过检查您的网站或正在运行确认nginx已停止
ps aux | grep nginx
-
开始nginx的
$ sudo /usr/sbin/service nginx start
确认Nginx已经通过检查您的网站或运行
ps aux | grep nginx
PS开始:确保使用sudo /usr/sbin/service nginx start|restart|stop
,而不是sudo service nginx start|restart|stop
。
伟大的解决方案。看起来你可以忽略'/ usr/sbin /'。至少它在我的env没有。 – 2018-01-10 18:34:37
这种类型的问题将是更好的地址http://www.serverfault.com。另外,请查看http://courtesan.com/sudo/man/sudoers.html#nopasswd_and_passwd以了解如何使用sudo删除某些命令的密码。 – randombits 2010-06-10 01:24:21
你确实需要重新启动Nginx吗?如果您使用Passenger服务Rack应用程序(例如Rails),则在release目录中运行'touch tmp/restart.txt'应该让Passenger知道它需要重新启动。 – Leo 2013-10-27 12:42:40