Ubuntu的错误与Apache:(98)地址正在被使用(Ubuntu error with apa

2019-06-24 18:45发布

当我尝试在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>

我在想什么?

Answer 1:

看来80端口已被使用。 使用其他端口或尝试netstatgrep结果,在其价值80只选择行), pskill ,看看有什么应用程序占用的端口,并关闭它。



Answer 2:

netstat -ltnp | grep :80

这将返回以下内容:

TCP6 0 0 ::: 80 ::: * LISTEN 1047 / apache2的

然后运行下面的命令:

sudo kill -9 1047

(1047 - PID的无)

(出现在您的特定情况下的PID)。

重新启动Apache。

sudo service apache2 restart

参考Ubuntu论坛 。



Answer 3:

在查杀过程中可能无法正常工作,如使用80端口将得到重新启动,并且不允许使用该端口的进程的所有情况。 那么,什么可以做的是改变端口的Apache,如果没有关系。

有两件事情是要改变为:

  1. 打开/etc/apache2/ports.conf用任何文本编辑器,并更改项的值Listen 80到所需的端口(例如Listen 8080 )。

  2. 更改为入门<virtualhost 80>你在给了相同的端口号/etc/apache2/ports.conf文件中/etc/apache2/sites/enabled/000-default (如<virtualhost 8080>



Answer 4:

请确保您没有命令Listen 80在多个地方。

就我而言,我得到了同样的错误,究其原因是,这个命令无论是在ports.conf并启用站点-/ 000-默认了。



Answer 5:

在我的情况下,它是nginx的(因为我有它在我的服务器上)。

sudo service nginx stop
sudo service apache2 start


Answer 6:

sudo netstat -tulpn| grep :80

pkill的过程(Nginx的?)

禁用任何虚拟主机绑定到端口80,你不想(Nginx的?)。 这是在/ etc / nginx的启用站点-/启用站点,或者/ etc / apache2的/



Answer 7:

须藤杀死-9 -2321(PID)重新启动BT完成.....没有必要在CONF变化。 文件。



Answer 8:

当您重新启动或通过终端启动服务器,你可能已经忘记了命令前加sudo。

使用sudo /etc/init.d/apache2 reload ,而不是/etc/init.d/apache2 reload



Answer 9:

我有一个非常不同的原因相同的问题。 我在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已经快乐。

也许这可以帮助别人...



Answer 10:

我开始时的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和希望的新版本。



Answer 11:

就我而言,我已经删除默认ssl.conf文件(重命名为ssl.conf.bak ),并有我自己的SSL配置文件。

然后我做了yum update ,它更新的阿帕奇...这也重新文件ssl.conf ,这意味着我怎么用2个conf文件Listen 443

解决方案(普通- CentOS的):去/etc/httpd/conf.d ,做一个grep -r 'Listen' . ,看看你是否有重复的Listen XXX报表,根据需要将其删除。



Answer 12:

当前运行的服务列表,

$ 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


Answer 13:

除了上运行的解决方案的发现过程:80和杀死,然后再启动,

如果你在阿帕奇的conf文件或包含在阿帕奇的conf文件中的任何conf文件多“听”的条目此错误可能。 希望这有助于别人.. !!



Answer 14:

这是由于端口80被移位由其他服务。

sudo killall httpd

检查依然采用80任何服务

sudo netstat -tulpn| grep :80

并重新启动服务器

sudo service httpd start



文章来源: Ubuntu error with apache: (98)Address already in use