fabric似乎启动了apache2,但没有

时间:2011-06-16 22:49:28

标签: ssh ubuntu-10.04 python-2.6 fabric apache2.2

我正在使用fabric远程启动微型aws服务器,安装git和git存储库,调整apache配置,然后重启服务器。

如果在任何时候,我从fabfile发出

sudo('service apache2 restart')run('sudo service apache2 restart')或停止然后开始,命令显然运行,我收到指示apache已启动的响应,例如

[ec2-184-73-1-113.compute-1.amazonaws.com] sudo: service apache2 start
[ec2-184-73-1-113.compute-1.amazonaws.com] out:  * Starting web server apache2
[ec2-184-73-1-113.compute-1.amazonaws.com] out:    ...done.
[ec2-184-73-1-113.compute-1.amazonaws.com] out: 

但是,如果我尝试连接,则拒绝连接,如果我进入服务器并运行 sudo service apache2 status它说“Apache is NOT running

虽然被撞了,但如果跑了 sudo service apache start,服务器已启动,我可以连接。还有其他人经历过这个吗?或者是否有人有任何关于我在哪里可以看到的提示,在日志文件等中找出已发生的事情。 apache2/error.logsyslogauth.log中没有任何内容。

这不是什么大不了的事,我可以解决它。我只是不喜欢这种无声的失败。

6 个答案:

答案 0 :(得分:41)

您正在运行哪个版本的结构?

您是否尝试更改pty参数(尝试更改shell,但它不应影响事情)?

http://docs.fabfile.org/en/1.0.1/api/core/operations.html#fabric.operations.run

您可以像这样设置pty参数:

sudo('service apache2 restart', pty=False)

答案 1 :(得分:14)

试试这个:

sudo('service apache2 restart',pty=False)

在遇到the same problem之后,这对我有用。我不确定为什么会这样。

答案 2 :(得分:4)

当代表授予足够权限的用户(例如root)连接到您的遥控器时,您可以管理系统服务,如下所示:

from fabtools import service

service.restart('apache2')

https://fabtools.readthedocs.org/en/0.13.0/api/service.html

P.S。它需要安装fabtools

pip install fabtools

答案 3 :(得分:4)

这是this issue的一个实例,常见问题解答中有一个有pty答案的条目。不幸的是,CentOS 6不支持无pty sudo命令,我不喜欢nohup解决方案,因为它杀死了输出。

问题的最后一个条目是使用sudo('set -m; service servicename start')提及的。这将打开作业控制,因此后台进程将放入其自己的进程组中。因此,当命令结束时,它们不会被终止。

答案 4 :(得分:0)

还有很多方法可以解决这个问题。

  • 您可以使用--no-pty选项

    运行fab目标
    fab --no-pty <task>
    
  • 在fabfile中,在目标代码执行之前将全局环境变量always_use_pty设置为False

    env.always_use_pty = False
    

答案 5 :(得分:0)

使用pty = False仍然没有为我解决。最终为我工作的解决方案是做一个双重nohup,就像这样:

<强> run.sh

#! /usr/bin/env bash
nohup java -jar myapp.jar 2>&1 &

<强> fabfile.py

...
sudo("nohup ./run.sh &> nohup.out", user=env.user, warn_only=True)
...