从 Ubuntu/Linux 上的 Web 应用程序触发应用程序升级

从 Ubuntu/Linux 上的 Web 应用程序触发应用程序升级

在我的 ubuntu 服务器上,我有一个MyApp作为守护进程运行的应用程序,它有自己的用户myapp

然后我有一个MyPortal以用户身份在 httpd 中快速运行的Web 应用程序www-data。此应用程序提供一个带有按钮的网页Redeploy MyApp。单击此按钮时,我想启动脚本redeploymyapp。此脚本停止 MyApp 守护进程,升级应用程序并再次启动守护进程。

问题是,当 MyPortal 以 身份运行时,该redeploymyapp脚本需要由用户执行。myappwww-data

解决这个问题的最佳方法是什么?

答案1

配置 sudo 以让 www-data 以 myapp 或 root 身份执行该脚本(取决于首选身份),然后以 sudo redeploymyapp 身份执行它。

它应该很简单:

www-data ALL=(myapp) NOPASSWD: redeploymyapp

通过 visudo 添加。可能还值得注意的是,redeploymyapp 应该是完全独立的(即,没有由 Web 请求提供的参数,不使用环境变量等)。

答案2

一个选项是让 MyPortal 在按下按钮时将值写入数据库或文件。反过来,MyApp 会持续监控该数据库/文件。

否则,您可以使用一些 suexec magic 来确保 redeploymyapp 可以作为 myapp 用户运行。哪种 suexec 解决方案最合适实际上取决于您使用的脚本语言等。

(处理 PHP 脚本我有丰富的经验苏普

正如詹姆斯提到的,还有 sudo 路线。

相关内容