织物似乎启动了 apache2 但没有
Posted
技术标签:
【中文标题】织物似乎启动了 apache2 但没有【英文标题】:fabric appears to start apache2 but doesn't 【发布时间】:2011-09-16 19:02:56 【问题描述】:我正在使用fabric远程启动micro 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:
但是,如果我尝试连接,则连接被拒绝,如果我 ssh 进入服务器并运行
sudo service apache2 status
它说“Apache is NOT running
”
在 sshed 时,如果运行
sudo service apache start
,服务器已启动,我可以连接了。有没有其他人经历过这个?或者是否有人对我可以查看的位置、日志文件等有任何提示,以了解发生了什么。 apache2/error.log
、syslog
或 auth.log
中没有任何内容。
这没什么大不了的,我可以解决它。我只是不喜欢这种无声的失败。
【问题讨论】:
这根本没有帮助,但我已经看到与 memcached 完全相同的行为 【参考方案1】:当代表授予足够权限的用户(例如 root)连接到您的遥控器时,您可以管理系统服务,如下所示:
from fabtools import service
service.restart('apache2')
https://fabtools.readthedocs.org/en/0.13.0/api/service.html
附:它需要安装 fabtools
pip install fabtools
【讨论】:
澄清一下,需要一个额外但有用的依赖:'fabtools' -> pip install fabtools 感谢@chishaku,我添加它是为了避免更多人感到困惑。【参考方案2】:这是this issue 的一个实例,FAQ 中有一个条目包含 pty 答案。不幸的是,在 CentOS 6 上不支持 pty-less sudo 命令,我不喜欢 nohup
解决方案,因为它会杀死输出。
问题的最后一个条目提到使用sudo('set -m; service servicename start')
。这将打开作业控制,因此后台进程被放入它们自己的进程组中。因此,它们不会在命令结束时终止。
【讨论】:
【参考方案3】:使用 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)
...
【讨论】:
【参考方案4】:您正在运行哪个版本的面料?
您是否尝试过更改pty
参数(也尝试更改shell
,但应该不会影响事情)?
http://docs.fabfile.org/en/1.0.1/api/core/operations.html#fabric.operations.run
您可以像这样设置pty
参数:
sudo('service apache2 restart', pty=False)
【讨论】:
我在 OSX 10.6.7 上运行 1.0.1 版的结构。我也会玩 pty 和 shell。我也会尝试 combine_stderr,也许我会得到更多反馈。 这为我解决了这个确切的问题。 这个问题也解决了,但是谁能解释它为什么起作用?似乎 SIGHUP 正在发送到所有子进程,即使它们应该与 shell 分离。 这并没有解决我的问题——它导致结构挂起,会话打开到远程服务器。我不得不通过 ssh 进入服务器并终止进程以终止结构。而且它仍然不允许我将进程 nohup 到后台。【参考方案5】:解决问题的更多方法。
您可以使用 --no-pty 选项运行 fab 目标
fab --no-pty <task>
在 fabfile 中,在目标代码执行之前,将全局环境变量 always_use_pty 设置为 False
env.always_use_pty = False
【讨论】:
【参考方案6】:试试这个:
sudo('service apache2 restart',pty=False)
遇到the same problem 后,这对我有用。我不确定为什么会这样。
【讨论】:
如果您在 EC2 实例上工作并在应用此修复后获得err: stdin: is not a tty
,您可能会在此处找到解决方案:blog.markfeeney.com/2009/12/…
在 ec2 实例中工作。以上是关于织物似乎启动了 apache2 但没有的主要内容,如果未能解决你的问题,请参考以下文章
apache无法启动,提示是“windows无法在本地启动apache2.2。。。”
OSX 服务器:apache2 正在运行,但“加载页面有问题”
使用 Grok for Logstash 解析 Apache2 错误日志
安装成功但无法在我的 Windows 7 系统上启动 apache 2.4