【问题标题】:How to start/stop service from python script running in Flask and Apache server using Debian?如何使用 Debian 从在 Flask 和 Apache 服务器中运行的 python 脚本启动/停止服务?
【发布时间】:2016-11-01 16:20:47
【问题描述】:

我正在尝试从使用 Flask 和 Apache 运行的 python 脚本启动和停止服务。

例如从memcached中获取状态,我使用的是

os.popen('service memcached status').read() 就像一个魅力。

问题是当我尝试开始/停止做类似的事情时

os.popen('service memcached stop').read() 它什么都不做(我通过 shell 检查了服务仍在运行)

总而言之,我可以获取状态但无法启动/停止并且不知道为什么会发生。

有人有什么建议吗?

谢谢,

【问题讨论】:

  • 尝试使用子进程而不是操作系统。我相信 os.popen 已被弃用
  • 也许你需要root/admin权限所以你需要sudo(或su)但是它会要求输入密码。
  • @furas 谢谢!你给我解决办法。

标签: python apache service flask debian


【解决方案1】:

我在/var/log/apache2/error.log 中看到了 apache 日志,问题是我需要更多权限来执行启动/停止。但是当我尝试使用时

os.popen('sudo service memcached stop').read()

我收到一个错误,说我应该输入 su 密码。

为了解决这个问题,我在 shell 中输入了:

visudo

打开了/etc/sudoers 文件。我在那里添加了一行

www-data ALL=(ALL) NOPASSWD:ALL

我理解这意味着我授予用户www-data 执行sudo 的权限,无需密码。

要退出,请按Ctrl+X,然后按y 保存。

注意:www-data 是执行 apache 的用户名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-03
    • 2017-03-22
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2018-01-09
    相关资源
    最近更新 更多