[英]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.