Назад | Перейти на главную страницу

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

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

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

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

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

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

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

(Работая со скриптами PHP, у меня есть хороший опыт работы с suPHP.)

Также, как упоминает Джеймс, есть маршрут sudo.

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

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

www-data ALL = (myapp) NOPASSWD: redeploymyapp

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