我注意到我的服务器出现了新问题,但我不太清楚是什么原因造成的。我希望有人有处理这个问题的经验,能帮我找到解决办法。
今晚我重启了在slicehost.com上运行的ubuntu服务器。一切运行正常,直到我启动apache。我收到以下错误。
* 启动 Web 服务器 apache2 (98)地址已在使用中:make_sock:无法绑定到地址 0.0.0.0:80 没有可用的监听套接字,正在关闭无法打开日志...失败!
进一步研究netstat -ltnp | grep ':80'
将显示以下内容:
tcp 0 0 0.0.0.0:80 0.0.0.0:* 监听 3948/apache2
然后我就可以kill 3948
正常启动 Apache 了。PID 3948 不断变为不同的数字。
这是新出现的,自从我成功启动后,我唯一做的事情就是卸载手动安装的 phpmyadmin,然后使用 aptitude install 命令重新安装。phpmyadmin 现在在服务器上运行良好,但我不明白这个错误意味着什么,也不知道该如何解决它。
任何能提供一些见解的人都将不胜感激!
更新:
运行后ls -la /etc/init.d/
我得到以下输出。@prix 看起来 httpd 不在这个列表中。
total 308
drwxr-xr-x 2 root root 4096 2010-06-08 16:38 .
drwxr-xr-x 73 root root 4096 2010-08-18 14:56 ..
-rwxr-xr-x 1 root root 6464 2008-09-19 08:42 apache2
-rwxr-xr-x 1 root root 2231 2008-10-14 08:02 bootlogd
-rwxr-xr-x 1 root root 1916 2008-10-14 08:02 bootmisc.sh
-rwxr-xr-x 1 root root 3508 2008-10-14 08:02 checkfs.sh
-rwxr-xr-x 1 root root 10507 2008-10-14 08:02 checkroot.sh
-rwxr-xr-x 1 root root 7948 2008-09-25 04:12 console-screen.kbd.sh
-rwxr-xr-x 1 root root 1670 2008-06-11 16:02 console-setup
-rwxr-xr-x 1 root root 2653 2008-09-09 14:52 cron
-rwxr-xr-x 1 root root 7195 2008-09-29 05:15 glibc.sh
-rwxr-xr-x 1 root root 1329 2008-10-14 08:02 halt
-rwxr-xr-x 1 root root 1287 2008-10-14 08:02 hostname.sh
-rwxr-xr-x 1 root root 4528 2008-09-25 08:07 hwclockfirst.sh
-rwxr-xr-x 1 root root 4521 2008-09-25 08:07 hwclock.sh
-rwxr-xr-x 1 root root 1404 2008-06-11 16:02 keyboard-setup
-rwxr-xr-x 1 root root 1484 2008-10-14 08:02 killprocs
-rwxr-xr-x 1 root root 1818 2008-08-29 19:41 klogd
-rwxr-xr-x 1 root root 748 2008-06-21 17:30 loopback
-rwxr-xr-x 1 root root 1399 2008-10-14 10:51 module-init-tools
-rwxr-xr-x 1 root root 620 2008-10-14 08:02 mountall-bootclean.sh
-rwxr-xr-x 1 root root 1956 2008-10-14 08:02 mountall.sh
-rwxr-xr-x 1 root root 1351 2008-10-14 08:02 mountdevsubfs.sh
-rwxr-xr-x 1 root root 2296 2008-10-14 08:02 mountkernfs.sh
-rwxr-xr-x 1 root root 618 2008-10-14 08:02 mountnfs-bootclean.sh
-rwxr-xr-x 1 root root 2330 2008-10-14 08:02 mountnfs.sh
-rwxr-xr-x 1 root root 1321 2008-10-14 08:02 mountoverflowtmp
-rwxr-xr-x 1 root root 3668 2008-10-14 08:02 mtab.sh
-rwxr-xr-x 1 root root 5755 2008-09-19 07:02 mysql
-rwxr-xr-x 1 root root 2515 2008-09-19 07:02 mysql-ndb
-rwxr-xr-x 1 root root 1905 2008-09-19 07:02 mysql-ndb-mgm
-rwxr-xr-x 1 root root 2663 2008-06-23 09:21 networking
-rwxr-xr-x 1 root root 1271 2008-10-27 06:17 procps
-rwxr-xr-x 1 root root 9600 2008-10-14 08:02 rc
-rwxr-xr-x 1 root root 788 2008-10-14 08:02 rc.local
-rwxr-xr-x 1 root root 117 2008-10-14 08:02 rcS
-rw-r--r-- 1 root root 1510 2008-10-14 08:02 README
-rwxr-xr-x 1 root root 639 2008-10-14 08:02 reboot
-rwxr-xr-x 1 root root 941 2008-10-14 08:02 rmnologin
-rwxr-xr-x 1 root root 5200 2008-07-28 08:42 rsync
-rwxr-xr-x 1 root root 33378 2008-05-20 02:27 sendmail
-rwxr-xr-x 1 root root 2283 2008-10-14 08:02 sendsigs
-rwxr-xr-x 1 root root 590 2008-10-14 08:02 single
-rw-r--r-- 1 root root 4167 2008-10-14 08:02 skeleton
-rwxr-xr-x 1 root root 3710 2008-10-13 13:52 ssh
-rwxr-xr-x 1 root root 525 2008-10-14 08:02 stop-bootlogd
-rwxr-xr-x 1 root root 1096 2008-10-14 08:02 stop-bootlogd-single
-rwxr-xr-x 1 root root 3483 2008-08-29 19:41 sysklogd
-rwxr-xr-x 1 root root 2488 2008-10-24 05:38 udev
-rwxr-xr-x 1 root root 706 2008-10-24 05:38 udev-finish
-rwxr-xr-x 1 root root 3627 2008-10-14 08:02 umountfs
-rwxr-xr-x 1 root root 2140 2008-10-14 08:02 umountnfs.sh
-rwxr-xr-x 1 root root 1456 2008-10-14 08:02 umountroot
-rwxr-xr-x 1 root root 1815 2008-10-14 08:02 urandom
-rwxrwxr-x 1 root root 1314 2010-03-04 19:22 webmin
-rwxr-xr-x 1 root root 1777 2008-10-23 08:40 x11-common
-rwxr-xr-x 1 root root 2154 2008-07-28 07:27 xinetd
答案1
好吧,在创建了一个开发服务器作为精确副本来尝试新事物之后,我想我已经搞清楚了。我将在下面介绍我的流程,希望它能在未来帮助其他人。
我做的第一件事就是将端口改为不同的数字,这样我就能看到端口 80 上仍在运行什么。
sudo nano /etc/apache2/ports.conf
我原本有:
Listen 80
Listen 443
所以我把它们改成了:
Listen 88
Listen 443
这让我可以去看看现在我的端口上正在运行什么sudo netstat -lpAinet
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:448 *:* LISTEN 4183/apache2
tcp 0 0 localhost:mysql *:* LISTEN 3741/mysqld
tcp 0 0 localhost:submission *:* LISTEN 3973/sendmail: MTA:
tcp 0 0 *:www *:* LISTEN 4025/apache2
tcp 0 0 *:ssh *:* LISTEN 3651/sshd
tcp 0 0 *:kerberos *:* LISTEN 4183/apache2
tcp 0 0 localhost:smtp *:* LISTEN 3973/sendmail: MTA:
tcp 0 0 *:https *:* LISTEN 4025/apache2
如果您注意到 PID 4025 在 *:www 和 *:https 上运行。这是搞乱了整个事情的 apache 实例。因此执行kill -9 {PID}
将彻底终止该进程。(老实说,我不知道 kill -9 有什么用,但它对我有用。如果它不完全正确,有人可能想纠正它。
我的下一个输出很棒。现在正在运行一个 Apache 实例。sudo netstat -lpAinet
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:448 *:* LISTEN 4183/apache2
tcp 0 0 localhost:mysql *:* LISTEN 3741/mysqld
tcp 0 0 localhost:submission *:* LISTEN 3973/sendmail: MTA:
tcp 0 0 *:webmin *:* LISTEN 4233/perl
tcp 0 0 *:ssh *:* LISTEN 3651/sshd
tcp 0 0 *:kerberos *:* LISTEN 4183/apache2
tcp 0 0 localhost:smtp *:* LISTEN 3973/sendmail: MTA:
udp 0 0 *:10000 *:* 4233/perl
现在我已经找到问题,我将 ports.conf 改sudo nano /etc/apache2/ports.conf
回原始设置。
sudo /etc/init.d/apache2 stop
我简单地停止并启动了Apache sudo /etc/init.d/apache2 start
,一切运行良好。对我来说,真正的测试是重新启动服务器,看看它是否像预期的那样工作。运行良好。
我从一篇有关 RedHat 的文章中读到:http://www.linuxquestions.org/questions/linux-software-2/98-address-already-in-use-make_sock-could-not-bind-to-address-0-0-0-0-443-a-110753/#post1153056
问题是因为:
仅当您启动 Web 服务器,然后进行某些修改,或者尝试加载 JSP 或 ASP 支持,然后尝试重新启动它时,才会出现此问题。
所以希望这能帮助到我在谷歌上搜索到的遇到同样问题但没有找到真正解决方案的其他人。无论如何,这对我的情况有用。顺便说一句 - 这也可能是因为我使用的是云服务器。不确定。
答案2
如果你进行了配置更改,然后使用以下命令重新启动 apache
service httpd restart
然后您将遇到这个问题,您将必须终止所有 httpd 进程并重新启动 apache。
killall -9 httpd
service httpd start
为了防止这种情况发生,当您进行配置更改时,请勿使用
service httpd restart
使用
service httpd reload
我已经对此进行了测试并且它已经为我修复了受影响的两台服务器上的问题。