2008-12-08 14 views
5

मुझे एक अंतिम उपयोगकर्ता को उसी बॉक्स पर अपाचे से प्रदत्त वेब पेज से टॉमकैट को पुनरारंभ करने की अनुमति देने के लिए आसान तरीका चाहिए।मैं प्रोग्रामर रूप से लिनक्स में अपाचे से सिस्टम सेवा (अपाचे नहीं) को पुनरारंभ कैसे करूं?

हम अपने क्यूसी विभाग के लिए अपाचे में हमारे वेबएप का एक नया संस्करण तैनात करना आसान बनाने की कोशिश कर रहे हैं। हम सांबा का उपयोग कर रहे हैं, लेकिन तैनाती से पहले/बाद में टॉमकैट सर्वर को रोकने/शुरू करने के लिए हमें एक आसान तरीका चाहिए।

यह केवल आंतरिक क्यूसी बॉक्स के लिए होगा। क्या इसके लिए कोई मौजूदा समाधान है? या इसे संभालने के लिए कुछ त्वरित PHP अनुप्रयोग लिखना आसान होगा?

उत्तर

8

छोड़ने की तरह कहा, लेकिन CGI को रूट के रूप में नहीं चलाएं। इसके बजाय, सीजीआई कॉल सुडो है। आप अपने वेब सर्वर को केवल sudoers फ़ाइल में /etc/init.d/tomcat restart चलाने के लिए अनुमति दे सकते हैं।

मैंने वास्तव में इसे काम पर किया है; सीजीआई की प्रासंगिकता का इस तरह दिखता है:

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

यहाँ (बेशक, उपयोग visudo संपादित करने के लिए) से/etc/sudoers एक उदाहरण लाइन है:

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

हर कोई बिल्ला को पुनः आरंभ करने की अनुमति देता है कि । यदि आप चाहें तो आप इसे केवल अपाचे तक ही सीमित कर सकते हैं।

+0

यह सही था। धन्यवाद! – ScArcher2

+0

यह भी देखें http://stackoverflow.com/questions/113728/php-webpage-doesnt-launch-unix-command-even-after-updated-sudoers – Wtower

0

मैं एक सीजीआई स्क्रिप्ट का उपयोग करूंगा। इसे रूट के रूप में चलाने के लिए सेट करें और '/etc/init.d/tomcat पुनरारंभ करें' पर कॉल करें (या फिर आप अपने बॉक्स पर टॉमकैट को पुनरारंभ करें)।

संबंधित मुद्दे