كيف يمكنني برمجيا إعادة تشغيل خدمة النظام (لا اباتشي) من اباتشي في لينكس؟
سؤال
وأنا بحاجة إلى طريقة بسيطة لتسمح للمستخدم النهائي لإعادة هر من صفحة ويب خدم من اباتشي على نفس المربع.
ونحن نحاول أن تجعل من السهل على قسم مراقبة الجودة لدينا لنشر نسخة جديدة من تطبيق الويب لدينا لاباتشي. نحن نستخدم السامبا، ولكن نحن بحاجة إلى طريقة سهلة بالنسبة لهم لوقف / بدء الملقم هر قبل / بعد نشر.
وهذا من شأنه أن يكون فقط لصناديق مراقبة الجودة الداخلية. هل هناك حل موجود لهذا؟ أو سيكون من الأسهل لكتابة بضعة تطبيق فب سريع للتعامل مع هذا؟
المحلول
وأود أن تخطي، ولكن لا تقم بتشغيل CGI كجذر. بدلا من ذلك، لديها سودو الدعوة CGI. يمكنك إعطاء إذن خادم الويب الخاص بك لتشغيل /etc/init.d/tomcat restart
فقط في ملف sudoers.
ولقد فعلت هذا الواقع في العمل؛ الجزء ذي الصلة من CGI يبدو مثل هذا:
#!/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
وهنا هو خط سبيل المثال من / الخ / sudoers (استخدام visudo إلى تعديل، وبطبيعة الحال):
ALL ALL=(root) NOPASSWD: /etc/init.d/tomcat5.5 restart
وهذا يتيح لكل فرد لإعادة قط. هل يمكن قصرها على أباتشي فقط إذا كنت ترغب.
نصائح أخرى
وأود أن استخدام برنامج نصي CGI. إعداده لتشغيل كجذر، وندعو "/etc/init.d/tomcat إعادة تشغيل" (أو مهما إعادة تشغيل قط على المربع الخاص بك).