2010-06-10 18 views
12

Bu yüzden, herhangi bir parola yazmadan dağıtmak istiyorum. Tüm özel anahtarları kurdum, böylece uzak sunuculara iyi bir şekilde ulaşabiliyorum ve şimdi ssh üzerinden svn kullanıyorum, bu yüzden hiç parola yok.nginx sudo olmadan yeniden başlatılsın mı?

Son bir sorunum var, nginx'i yeniden başlatabilmem gerekiyor. Şu anda sudo /etc/init.d/nginx yeniden yükle. Bu sorun b/c capistrano şifresini kullanır, b/c'yi yeni kaldırdığımdan anahtarları kullanıyorum. Nginx'i nasıl yeniden başlatacağınıza dair bir fikir var mı?

+0

Bu tür bir soru, http://www.serverfault.com adresinde daha iyi bir adres olabilir. Ayrıca, sudo kullanarak belirli komutların şifrelerinin nasıl kaldırılacağını öğrenmek için http://courtesan.com/sudo/man/sudoers.html#nopasswd_and_passwd adresini ziyaret edin. – randombits

+0

Nginx'i yeniden başlatmanız gerekiyor mu? Rails gibi bir Rack uygulamasına hizmet vermek için Yolcu kullanıyorsanız, serbest bırakma dizinindeki 'tmp/restart.txt 'düğmesine dokunarak Yolcunun yeniden başlatılması gerektiğini bilmesi gerekir. – Leo

cevap

38

Sudoer joker karakterlerine ve bu tam sorunu çözmeye çalışan benzer şeylere bakarak iyi bir saat geçirdim. Gerçekte, gerçekten ihtiyacınız olan şey, nginx'i yeniden başlatan bir kök yürütülebilir betiğidir.

komut yürütülebilir

Testi yapın kökü

#! /bin/bash 
/bin/kill -HUP `cat /var/run/nginx.pid` 

olarak

username hostname ALL=NOPASSWD: /path/to/script 

Yaz komut dosyası/etc/sudoers Bu ekleyin.

sudo /path/to/script 
+1

Bu ... güzel! Ne muhteşem bir çözüm! İki yıldır capistrano kullanıyorum ve bunun mümkün olduğunu anlamadım. – ndbroadbent

+0

@ nathan.f77 tam olarak ihtiyacım olan şey bu. – phoolish

+3

Birisi uygulamayı çalıştıran hesabı ihlal ettiyse, bu komut dosyasını düzenleyebilir ve isteğe bağlı komutları root olarak çalıştırabilirler mi? –

2

özel bir komut dosyası yazma içermeyen bir better answer on Stack Overflow yok:

iyi uygulama /etc/sudoers.d/myuser

/etc/sudoers.d/ klasör kullanıcıları aramasına izin birden fazla dosya içerebilir kullanmaktır Kök olmadan sudo kullanarak şeyler.

dosyası genellikle bir kullanıcı ve kullanıcı bir şifre belirlemesi gerek kalmadan çalıştırabilirsiniz komutların bir listesini içerir.

Talimatlar: tüm komutlarda

, sen sudo olmadan nginx yeniden kullanmak istediğiniz kullanıcı adı ile MyUser değiştirin. sizin kullanıcı için

  1. Açık sudoers dosyası:

    $ sudo visudo -f /etc/sudoers.d/myuser 
    
  2. Editör açılacaktır. Orada aşağıdaki satırı yapıştırın. Bu o kullanıcı nginx başlangıç, yeniden çalıştırmak ve durdurmak için izin verecektir:

    $ myusername ALL=(ALL) NOPASSWD: /usr/sbin/service nginx start,/usr/sbin/service nginx stop,/usr/sbin/service nginx restart 
    
  3. Kaydet o + ctrl vurarak. Kaydetmek istediğiniz yeri soracaktır, varsayılanı onaylamak için tuşuna girin. Sonra ctrl + x ile editör dışına çıkın.

Şimdi yeniden (ve başlangıç ​​ve bitiş) şifre olmadan nginx edebilirsiniz.Hadi deneyelim.

  1. aç yeni bir oturum (o zaman aşımına değil çünkü aksi takdirde, sadece sudo şifre sorulmaz olmayabilir):

    $ ssh [email protected] 
    
  2. Durdurma nginx

    $ sudo /usr/sbin/service nginx stop 
    
  3. Nginx'in web sitenizi kontrol ederek veya ps aux | grep nginx

  4. Başlat o nginx web sitenizi kontrol etme veya ps aux | grep nginx

PS çalıştırarak başladı nginx

$ sudo /usr/sbin/service nginx start 
  • Onayla: sudo /usr/sbin/service nginx start|restart|stop değil sudo service nginx start|restart|stop kullandığınızdan emin olun.

  • +0

    Harika çözüm. Yine de,/usr/sbin/'dizisini atlayabilirsiniz. En azından benim envimde olmadan çalışır. –