Come posso riavviare programmaticamente un servizio di sistema (non apache) da apache in Linux?

StackOverflow https://stackoverflow.com/questions/349884

Domanda

Ho bisogno di un modo semplice per consentire a un utente finale di riavviare tomcat da una pagina web servita da apache nella stessa casella.

Stiamo cercando di rendere più semplice per il nostro dipartimento di controllo qualità la distribuzione di una nuova versione della nostra webapp su apache. Stiamo usando samba, ma abbiamo bisogno di un modo semplice per arrestare / avviare il server tomcat prima / dopo la distribuzione.

Questo sarebbe solo per le caselle di controllo qualità interne. Esiste una soluzione esistente per questo? o sarebbe più facile scrivere qualche rapida applicazione php per gestirlo?

È stato utile?

Soluzione

Come ha detto Skip, ma non eseguire CGI come root. Invece, avere la chiamata CGI sudo. Puoi autorizzare il tuo server web a eseguire /etc/init.d/tomcat restart solo nel file sudoers.

L'ho effettivamente fatto al lavoro; la parte rilevante del CGI è simile a questa:

#!/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

Ecco una riga di esempio da / etc / sudoers (usa visudo per modificare, ovviamente):

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

Ciò consente a tutti di riavviare Tomcat. Potresti limitarlo ad Apache solo se lo desideri.

Altri suggerimenti

Vorrei usare uno script CGI. Impostalo per essere eseguito come root e chiama '/etc/init.d/tomcat restart' (o comunque riavvii tomcat sulla tua casella).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top