Перезапуск Apache из Django - PullRequest
0 голосов
/ 01 июля 2011

Мне нужно, чтобы мое приложение Django могло перезапустить сервер Apache, на котором оно запущеноЯ использую mod_python.

Какой самый простой способ?

1 Ответ

1 голос
/ 01 июля 2011

Единственный способ, которым это было бы возможно, - это если бы вы дали root-права вашему приложению Django, что ужасно небезопасно. Но, предполагая, что ваше приложение работает от имени пользователя root, вы можете запустить

import subprocess

subprocess.Popen(['/etc/init.d/apache2', 'restart'])

Или какая-либо команда вашего дистрибутива для перезапуска Apache. Если приложение Django не является пользователем root, вы можете запустить его с sudo, используя библиотеку Python pexpect .

import pexpect

child = pexpect.spawn('sudo /etc/init.d/apache2 restart')
child.expect('[sudo] password for .*:')
child.sendline(password)
child.interact()

Обратите внимание, что этот способ требует от пользователя apache возможности запуска sudo, что также небезопасно. В общем, я не вижу безопасного способа сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...