2008-12-08 10 views
5

Son kullanıcının tomcat'i aynı kutudaki apache'den sunulan bir web sayfasından yeniden başlatmasına izin vermenin basit bir yoluna ihtiyacım var.Linux'ta apache'den sistem hizmetini (apache değil) nasıl programlı olarak yeniden başlatırım?

QC departmanımızın webapp'ımızın yeni bir sürümünü apache'ye dağıtmasını kolaylaştırmaya çalışıyoruz. Samba kullanıyoruz, ancak dağıtımdan önce/sonra tomcat sunucusunu durdurmaları/başlatmaları için kolay bir yola ihtiyacımız var.

Bu yalnızca iç qc kutuları için geçerli olur. Bunun için mevcut bir çözüm var mı? ya da bunu işlemek için birkaç hızlı php uygulaması yazmak daha kolay olurdu?

cevap

8

Gibi atla dedim, ama CGI'yi root olarak çalıştırmayın. Bunun yerine, CGI çağrısı sudo'ya sahip olun. Web sunucunuza yalnızca sudoers dosyasında /etc/init.d/tomcat restart'u çalıştırmak için izin verebilirsiniz.

Aslında bunu iş başında yaptım; CGI ilgili kısmı aşağıdaki gibidir: Burada

#!/usr/bin/perl 
use CGI; 
use IPC::Run3; 
my $CGI = new CGI; 

my $output; 
if (defined $CGI->param('go') && 'restart' eq $CGI->param('go')) { 
    run3 [ qw(sudo /etc/init.d/tomcat5.5 restart) ], \undef, \$output, \$output; 
} 

print <<EOF 
Content-type: text/html 

Blah, blah, blah, HTML form, displays $output at some point. 
EOF 

(tabii ki, düzenlemek için kullanılması visudo) vb/sudoers/satır örneği geçerli: herkes tomcat'ı yeniden sağlar

ALL  ALL=(root) NOPASSWD: /etc/init.d/tomcat5.5 restart 

. İsterseniz sadece Apache ile sınırlandırabilirsiniz.

+0

Bu mükemmeldi. Teşekkürler! – ScArcher2

+0

Ayrıca bkz. Http://stackoverflow.com/questions/113728/php-webpage-doesnt-launch-unix-command-even-after-updated-sudoers – Wtower

0

Bir CGI betiği kullanırdım. Kök olarak çalıştırmak için ayarlayın ve '/etc/init.d/tomcat restart' (ya da kutuda tomcat'i yeniden başlattığınızda) 'i arayın.

İlgili konular