[英]Amazon EC2 - Apache server restart issue
当我运行此命令时
须藤 /etc/init.d/httpd 重启
它给出了以下错误
停止 httpd:[失败]
启动 httpd: (98)Address already in use: make_sock: could not bind to address [::]:80 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 没有可用的监听套接字,正在关闭down 无法打开日志 [失败]
我通过使用检查了端口 80 上正在运行的程序
netstat -lnp | grep :80(它给出以下输出)
tcp 0 0 :::80 :::* 听 21739/httpd
为什么我无法通过使用 sudo /etc/init.d/httpd restart 来停止 apache?
下面的命令可以正常工作
须藤 apachectl 停止
须藤 apachectl 开始
我正在使用亚马逊 ec2 的 linux 微型实例
当我从源代码安装 apache 时遇到了这个问题,但随后尝试运行
$ sudo /etc/init.d/httpd restart
这是使用预装版本的 apache。 /etc/init.d/httpd 中的 stop 指令没有删除在启动源安装版本的 apache 时创建的 httpd.pid 文件。
要确定这是否也是您的问题的原因,请查找运行时设置 httpd.pid 文件的位置
$ sudo apachectl start
如果您从源代码安装并且 apache2 位于 /usr/local/apache2,则应该在 /usr/local/apache2/logs 中创建 httpd.pid 文件。 当您通过运行停止 apache 时
$ sudo apachectl stop
这个文件应该被删除。 因此,要测试 httpd.pid 文件是否导致您的问题,请通过调用启动 apache
$ sudo apachectl start
并找到 httpd.pid 文件。 然后尝试使用停止 apache
$ sudo /etc/init.d/httpd stop
如果原来的httpd.pid文件还在,那就是你使用apache无法启动的原因
$ sudo /etc/init.d/httpd start
为了让我的 /etc/init.d/httpd 文件正常工作,我在 start 和 stop 方法中明确地调用了 apachectl:
#!/bin/bash
# /etc/init.d/httpd
#
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache2/bin/apachectl
httpd=/usr/local/apache2/bin/httpd
pid=/usr/local/apache2/logs/httpd.pid
prog=httpd
RETVAL=0
start() {
echo -n $"Starting $prog: "
$apachectl -k start
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
$apachectl -k stop
RETVAL=$?
echo
}
我试过这个,它有效:
希望能帮到你!
干杯
我觉得最好杀死进程本身,找出进程ID并杀死它然后重新开始,它应该可以正常工作
在过去的几年里,我一直在管理的服务器上很少遇到这个问题。 不幸的是,如果您在尝试重新启动后失败,则管理端口 80 上的连接的进程不会释放它对该端口的保持。
我会尝试一个完整的“sudo /etc/init.d/httpd stop”等待它完成或失败。
如果这不能解决它,您将不得不完全重新启动服务器。 希望它被配置为在重新启动时自动启动一切,但这并不能保证。
“apachectl”也是 Apache 的好工具,但它可能不在此服务器上,这取决于安装和使用的 linux 发行版。
如果重新启动服务器后,apache 仍然无法启动,则发生了一些不好的事情。 我会考虑在那时拉出所有网站和 conf 文件来创建一个新服务器,但是 apache 启动,然后失败的消息输出应该让您了解在日志中查看它为什么无法启动的位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.