tes*_*akt 17 deployment capistrano nginx
所以我希望能够限制:部署而无需输入任何密码.我已经设置了所有私钥,所以我可以很好地到达远程服务器,现在我在ssh上使用svn,所以没有密码.
我有最后一个问题,我需要能够重启nginx.现在我有sudo /etc/init.d/nginx重新加载.这是一个问题b/c它使用capistrano密码,我刚刚删除的那个b/c我正在使用密钥.有关如何重新启动nginx的任何想法吗?
小智 43
我花了一个小时看着sudoer通配符等试图解决这个确切的问题.实际上,您真正需要的是一个重新启动nginx的根可执行脚本.
将其添加到/ etc/sudoers文件中
username hostname ALL=NOPASSWD: /path/to/script
Run Code Online (Sandbox Code Playgroud)
以root身份编写脚本
#! /bin/bash
/bin/kill -HUP `cat /var/run/nginx.pid`
Run Code Online (Sandbox Code Playgroud)
使脚本可执行
测试.
sudo /path/to/script
Run Code Online (Sandbox Code Playgroud)
Fin*_*inn 16
Stack Overflow上有一个更好的答案,它不涉及编写自定义脚本:
最佳做法是使用
/etc/sudoers.d/myuser该
/etc/sudoers.d/文件夹可以包含多个文件,允许用户使用sudo调用内容而不是root.该文件通常包含用户和用户无需指定密码即可运行的命令列表.
说明:
在所有命令中,将myuser替换为您要用于在没有sudo的情况下重新启动nginx的用户名.
为您的用户打开sudoers文件:
$ sudo visudo -f /etc/sudoers.d/myuser
Run Code Online (Sandbox Code Playgroud)编辑将开放.在那里粘贴以下行.这将允许该用户运行nginx启动,重启和停止:
myusername ALL=(ALL) NOPASSWD: /usr/sbin/service nginx start,/usr/sbin/service nginx stop,/usr/sbin/service nginx restart
Run Code Online (Sandbox Code Playgroud)点击ctrl+即可保存o.它将询问您要保存的位置,只需按enter确认默认值即可.然后用ctrl+ 退出编辑器x.
现在你可以在没有密码的情况下重启(并启动和停止)nginx.我们来试试吧.
打开新会话(否则,您可能根本没有被要求提供sudo密码,因为它没有超时):
$ ssh myusername@myserver
Run Code Online (Sandbox Code Playgroud)停止nginx
$ sudo /usr/sbin/service nginx stop
Run Code Online (Sandbox Code Playgroud)通过检查您的网站或运行来确认nginx已停止 ps aux | grep nginx
启动nginx
$ sudo /usr/sbin/service nginx start
Run Code Online (Sandbox Code Playgroud)通过检查您的网站或运行来确认nginx已启动 ps aux | grep nginx
PS:确保使用sudo /usr/sbin/service nginx start|restart|stop,而不是sudo service nginx start|restart|stop.
| 归档时间: |
|
| 查看次数: |
13373 次 |
| 最近记录: |