apache的Ubuntu错误:(98)地址已在使用中

Sil*_*all 25 apache ubuntu-11.10

当我尝试在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.
Run Code Online (Sandbox Code Playgroud)

我在ports.conf中有这个

NameVirtualHost *:80
Listen 80
Run Code Online (Sandbox Code Playgroud)

这是我的vhost文件

<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>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

pin*_*nku 54

netstat -ltnp | grep :80
Run Code Online (Sandbox Code Playgroud)

这将返回以下内容:

tcp6 0 0 ::: 80 :::*LISTEN 1047/apache2

然后运行以下命令:

sudo kill -9 1047
Run Code Online (Sandbox Code Playgroud)

(1047 - pid no)

(出现在您的特定实例上的pid.)

重启Apache.

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

参考Ubuntu论坛.

  • 这里最好的答案.谢谢! (8认同)

小智 12

在所有情况下,杀死进程可能不起作用,因为使用端口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>).


ton*_*edz 10

似乎端口80已经被采用.使用另一个端口或尝试netstat(grep结果只选择其中值为80的行),pskill查看哪个应用程序占用该端口并将其关闭.


eay*_*kin 9

确保您Listen 80在多个位置没有该命令.

在我的情况下,我得到了同样的错误,原因是这个命令都在ports.conf和sites-enabled/000-default中.


hob*_*obs 5

sudo netstat -tulpn| grep :80
Run Code Online (Sandbox Code Playgroud)

pkill进程(nginx?)

禁用任何您不希望绑定到端口 80 的虚拟主机(nginx?)。它位于 /etc/nginx/sites-enabled 或 /etc/apache2/sites-enabled 中


小智 5

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

sudo service nginx stop
sudo service apache2 start
Run Code Online (Sandbox Code Playgroud)