当我尝试在Ubuntu启动Apache,我得到这个错误。
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
我有这个在我的ports.conf
NameVirtualHost *:80
Listen 80
这是我的虚拟主机文件
<VirtualHost *:80>
ServerAdmin example@example.com
ServerName rails.server.com
# ServerAlias
DocumentRoot /var/www/sample_app/current/public
ErrorLog /var/www/sample_app/error.log
RailsEnv production
<Directory "/var/www/sample_app/current/public">
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我在想什么?
看来80端口已被使用。 使用其他端口或尝试netstat
( grep
结果,在其价值80只选择行), ps
和kill
,看看有什么应用程序占用的端口,并关闭它。
netstat -ltnp | grep :80
这将返回以下内容:
TCP6 0 0 ::: 80 ::: * LISTEN 1047 / apache2的
然后运行下面的命令:
sudo kill -9 1047
(1047 - PID的无)
(出现在您的特定情况下的PID)。
重新启动Apache。
sudo service apache2 restart
参考Ubuntu论坛 。
在查杀过程中可能无法正常工作,如使用80端口将得到重新启动,并且不允许使用该端口的进程的所有情况。 那么,什么可以做的是改变端口的Apache,如果没有关系。
有两件事情是要改变为:
打开/etc/apache2/ports.conf
用任何文本编辑器,并更改项的值Listen 80
到所需的端口(例如Listen 8080
)。
更改为入门<virtualhost 80>
你在给了相同的端口号/etc/apache2/ports.conf
文件中/etc/apache2/sites/enabled/000-default
(如<virtualhost 8080>
请确保您没有命令Listen 80
在多个地方。
就我而言,我得到了同样的错误,究其原因是,这个命令无论是在ports.conf并启用站点-/ 000-默认了。
在我的情况下,它是nginx的(因为我有它在我的服务器上)。
sudo service nginx stop
sudo service apache2 start
sudo netstat -tulpn| grep :80
pkill
的过程(Nginx的?)
禁用任何虚拟主机绑定到端口80,你不想(Nginx的?)。 这是在/ etc / nginx的启用站点-/启用站点,或者/ etc / apache2的/
须藤杀死-9 -2321(PID)重新启动BT完成.....没有必要在CONF变化。 文件。
当您重新启动或通过终端启动服务器,你可能已经忘记了命令前加sudo。
使用sudo /etc/init.d/apache2 reload
,而不是/etc/init.d/apache2 reload
我有一个非常不同的原因相同的问题。 我在CentOS 6.5运行的Apache 2.4.7用PHP 5.5.6。
我通过具有BOTH output_handler = ob_gzhandler AND要用zlib.output_compression =开(任一个,而不是两个,可以设置)弄乱的php.ini。
所以在重启动Apache,它绑定到端口80,但没有什么事情发生。 它看起来像它正在运行,但PHP的错误锁起来的地方。
线索是检查“PHP -v” ......当我看到它不返回任何东西(它写的错误是error_log),我固定的php.ini和Apache已经快乐。
也许这可以帮助别人...
我开始时的Apache2的Ubuntu 12.10的一个新的这个错误安装。
它在Apache2的一个bug。 它被挂在后台运行。 这是我的演练,以其中的错误可能是在软件中。
这是我得到的错误:
el@titan:~$ sudo service apache2 start
* Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
[fail]
地址已在使用? 什么能使用它吗? 看看这个:
el@titan:~$ grep -ri listen /etc/apache2
/etc/apache2/apache2.conf:# supposed to determine listening ports for incoming connections, and which
/etc/apache2/apache2.conf:# Include list of ports to listen on and which to use for name based vhosts
/etc/apache2/ports.conf:Listen 80
/etc/apache2/ports.conf: Listen 443
/etc/apache2/ports.conf: Listen 443
这意味着Apache2的是防止apache2的启动。 离奇。 这将确认:
el@titan:~$ ps -ef | grep apache2
root 1146 954 0 15:51 ? 00:00:00 /bin/sh /etc/rc2.d/S91apache2 start
root 1172 1146 0 15:51 ? 00:00:00 /bin/sh /usr/sbin/apache2ctl start
root 1181 1172 0 15:51 ? 00:00:00 /usr/sbin/apache2 -k start
root 1193 1181 0 15:51 ? 00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSA
el 5439 5326 0 16:23 pts/2 00:00:00 grep --color=auto apache2
是的,在这种情况下Apache2的运行过程中,我试图启动Apache2同一端口上的第二次。
是什么让我困惑的是, service
报告,Apache2的是不是运行:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
而当你查询apache2ctl它的地位,它挂起。
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
所以,Ubuntu的似乎有麻烦在启动时管理的Apache2。 时间停止的Apache2:
root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running
一个大线索! 你试图阻止的Apache2和它失去的进程ID! 所以,Ubuntu的不能停止的Apache2,因为它不知道它在哪里!
你可能会认为重新启动会解决这个问题,但由于在apache2的引导和挂起启动它没有。 apache2的正常启动过程是不工作的权利。
那么如何解决这个问题?
我能够通过分析来解决这个 ps
命令的输出。 请注意, ps
命令告诉我们,这个过程是由“/etc/rc2.d/S91apache2启动”开始。
这是有问题的程序,需要一个快速的一脚。
/etc/rc2.d/S91apache2
是用来启动Apache2对您的计算机启动时的符号链接。 出于某种原因,它似乎是开始的Apache2,然后挂起。 因此,我们必须告诉它那样做。
所以,去看看那个/etc/rc2.d/S91apache2
。
el@titan:/etc/rc2.d$ ls -l
lrwxrwxrwx 1 root root 17 Nov 7 21:45 S91apache2 -> ../init.d/apache2*
这是我们不希望它是有一个符号链接。 这样做是为了防止的Apache2无法启动的启动:
root@titan:~# sudo update-rc.d -f apache2 remove
Removing any system startup links for /etc/init.d/apache2 ...
/etc/rc0.d/K09apache2
/etc/rc1.d/K09apache2
/etc/rc2.d/S91apache2
/etc/rc3.d/S91apache2
/etc/rc4.d/S91apache2
/etc/rc5.d/S91apache2
/etc/rc6.d/K09apache2
重新启动计算机以确保Apache2的没有启动,并挂起。 好啊好啊。 现在,你可以把Apache2的回到从前的方式,但是这将使它再次失败。
root@titan:~$ sudo update-rc.d apache2 defaults //(don't do this)
Adding system startup for /etc/init.d/apache2 ...
/etc/rc0.d/K20apache2 -> ../init.d/apache2
/etc/rc1.d/K20apache2 -> ../init.d/apache2
/etc/rc6.d/K20apache2 -> ../init.d/apache2
/etc/rc2.d/S20apache2 -> ../init.d/apache2
/etc/rc3.d/S20apache2 -> ../init.d/apache2
/etc/rc4.d/S20apache2 -> ../init.d/apache2
/etc/rc5.d/S20apache2 -> ../init.d/apache2
取而代之的是,像这样开头的的Apache2:
sudo service apache2 start
而Apache2的是备份和再次服务页面。 似乎有一些严重的错误与Apache2的/ Ubuntu的12.10引起的Apache2启动和挂起。 这是一种解决方法,我想修复是获得最佳的Apache2和Ubuntu和希望的新版本。
就我而言,我已经删除默认ssl.conf
文件(重命名为ssl.conf.bak
),并有我自己的SSL配置文件。
然后我做了yum update
,它更新的阿帕奇...这也重新文件ssl.conf
,这意味着我怎么用2个conf文件Listen 443
。
解决方案(普通- CentOS的):去/etc/httpd/conf.d
,做一个grep -r 'Listen' .
,看看你是否有重复的Listen XXX
报表,根据需要将其删除。
当前运行的服务列表,
$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN 6399/python
tcp 0 0 0.0.0.0:53670 0.0.0.0:* LISTEN 6681/Brackets-node
....
....
仅查找特定的服务,
$ sudo netstat -tulpn| grep python
jpa@jpa-dell:~/odoo/master-hr-holidays-newapi-jpa$ sudo netstat -tulpn| grep python
tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN 6399/python
tcp 0 0 127.0.0.1:41974 0.0.0.0:* LISTEN 3123/python
你有没有注意到上述结果PID(6399)运行蟒蛇。
使用以下命令杀死该服务,
$ sudo kill -9 -6399
现服务完全停止,可以正常重新开始。
额外的命令查找运行srrvices,
$ ps -ef
$ ps -ef | grep python
除了上运行的解决方案的发现过程:80和杀死,然后再启动,
如果你在阿帕奇的conf文件或包含在阿帕奇的conf文件中的任何conf文件多“听”的条目此错误可能。 希望这有助于别人.. !!
这是由于端口80被移位由其他服务。
sudo killall httpd
检查依然采用80任何服务
sudo netstat -tulpn| grep :80
并重新启动服务器
sudo service httpd start