Обновление приложения запускается из веб-приложения в Ubuntu/Linux

На моем сервере Ubuntu у меня есть приложение MyApp который работает как демон со своим собственным пользователем myapp,

Тогда у меня есть веб-приложение MyPortal который работает в Apace httpd как пользователь www-data, Это приложение обслуживает веб-страницу с Redeploy MyApp кнопка. При нажатии на эту кнопку я хочу запустить скрипт redeploymyapp, Этот скрипт останавливает демон MyApp, обновляет приложение и снова запускает демон.

Проблема в том, что redeploymyapp скрипт должен быть выполнен пользователем myappв то время как MyPortal работает как www-data,

Как лучше всего решить эту проблему?

2 ответа

Решение

Сконфигурируйте sudo, чтобы www-data выполнял этот скрипт как myapp или root (в зависимости от того, какой из них предпочтителен), а затем выполните его как sudo redeploymyapp.

Это должно быть так просто, как:

www-data ALL = (myapp) NOPASSWD: redeploymyapp

добавлено через visudo. Вероятно, также стоит отметить, что redeploymyapp должно быть полностью автономным (то есть без аргументов, предоставляемых веб-запросом, без использования переменных среды и т. Д.)

Один из вариантов - разрешить MyPortal при нажатии кнопки записать значение в базу данных или в файл. В свою очередь, MyApp постоянно отслеживает эту базу данных / файл.

В противном случае вы можете использовать некоторую магию suexec, чтобы убедиться, что redeploymyapp может быть запущено от имени пользователя myapp. Какое решение suexec является наиболее подходящим, зависит от того, какой язык сценариев вы используете и т. Д.

(Имея дело с PHP-скриптами, я имею хороший опыт работы с suPHP.)

Кроме того, как упоминает Джеймс, существует и маршрут sudo.

Другие вопросы по тегам