web-dev-qa-db-ja.com

ApacheでのUbuntuエラー:(98)Address already in use

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

これは私のvhostファイルです

<VirtualHost *:80>
          ServerAdmin [email protected]
          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>

私は何が欠けていますか?

25

ポート80はすでに使用されているようです。別のポートを使用するか、netstat(結果がgrepで値80の行のみを選択する)、psおよびkillを試して、どのアプリケーションが占有しているかを確認しますポートをシャットダウンします。

10
toniedzwiedz
netstat -ltnp | grep :80

これにより、次が返されます。

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

次に、次のコマンドを実行します。

Sudo kill -9 1047

(1047-pidいいえ)

(特定のインスタンスに表示されるpid。)

Apacheを再起動します。

Sudo service Apache2 restart

buntu Forums への参照。

54
pinku

ポート80を使用しているプロセスが再起動され、ポートの使用が許可されないため、すべての場合でプロセスの強制終了が機能しない場合があります。それで、Apacheのポートを変更することができます(それが重要でない場合)。

そのために2つのことを変更します。

  1. 任意のテキストエディタで/etc/Apache2/ports.confを開き、エントリListen 80の値を目的のポート(例:Listen 8080)に変更します。

  2. <virtualhost 80>のエントリを、/etc/Apache2/ports.conf/etc/Apache2/sites/enabled/000-defaultファイルで指定したものと同じポート番号に変更します(例:<virtualhost 8080>)。

12
rahul

コマンドListen 80が複数の場所にないことを確認してください。

私の場合、同じエラーが発生していましたが、その理由はこのコマンドがports.confとsites-enabled/000-defaultの両方にあったためです。

9
eaykin

私の場合、nginxでした(サーバー上にあるため)。

Sudo service nginx stop
Sudo service Apache2 start
5
Sudo netstat -tulpn| grep :80

pkillプロセス(nginx?)

仮想ホストがポート80にバインドしているものは何でも無効にします(nginx?)。/etc/nginx/sites-enabledまたは/ etc/Apache2/sites-enabledにあります

3
hobs

Sudo kill -9 -2321(pid)BT Doneを再起動します。...confを変更する必要はありません。ファイル。

1
Vandan

解決策を除いて、:80で実行されているプロセスを見つけて強制終了し、再度開始します。

Apache confファイルまたはApache confファイルに含まれる.confファイルに複数の「Listen」エントリがある場合、このエラーが発生する可能性があります。これが誰かに役立つことを願って.. !!

0
Leo Prince

私の場合、デフォルトのssl.confファイル(名前はssl.conf.bak)、および独自のssl構成ファイルがありました。

その後、yum updateそして、それはApacheを更新しました...また、ファイルを再導入しましたssl.confは、Listen 443

ソリューション(汎用-CentOS):/etc/httpd/conf.dgrep -r 'Listen' .、重複していないか確認しますListen XXXステートメント、必要に応じて削除します。

0
Populus

Apache2の起動時にUbuntu 12.10の新規インストールでこのエラーが発生しました

これはApache2のバグです。バックグラウンドでハングします。これは、ソフトウェアのバグがどこにあるかについての私のチュートリアルです。

ここに私が得たエラーがあります:

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が起動時に起動してハングするため、修正されません。 Apache2の通常のブートプロセスは正常に動作していません。

だからそれを修正するには?

これを修正できましたpsコマンド出力を分析しました。 psコマンドは、そのプロセスが「/etc/rc2.d/S91Apache2 start」によって開始されたことを示していることに注意してください。

それはSwiftキックを必要とする問題のあるプログラムです。

/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が起動およびハングしないことを確認します。 Ok good。これで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の新しいバージョンを取得し、最善を期待することだと思います。

0
Eric Leschinski

端末を介してサーバーを再起動または起動するときに、コマンドの前にSudoを追加するのを忘れている可能性があります。

使用する Sudo /etc/init.d/Apache2 reload の代わりに /etc/init.d/Apache2 reload

0
Subin

私は同じ問題に非常に異なる原因がありました。 CentOS 6.5でPHP 5.5.6を使用してApache 2.4.7を実行しています。

Output_handler = ob_gzhandlerとzlib.output_compression = Onの両方を使用してphp.iniを台無しにしました(両方ではなく、いずれかを設定できます)。

したがって、Apacheを再起動すると、ポート80にバインドされますが、他には何も起こりません。実行されているように見えますが、phpのエラーによりどこかにロックされています。

手がかりは「php -v」をチェックすることでした...何も返さない(error_logにエラーを書き込んだ)ことがわかったとき、php.iniを修正し、Apacheは再び満足しました。

たぶんこれは誰かを助ける...

0
Yusuf Moola

現在実行中のサービスのリスト、

$ 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)でpythonを実行していることに気付きましたか。

次のコマンドを使用してそのサービスを強制終了し、

$ Sudo kill -9 -6399

これでサービスは完全に停止し、通常どおりに再開できます。


実行中のサービスを見つけるための追加コマンド、

$ ps -ef
$ ps -ef | grep python
0
Jay Patel

これは、ポート80が他のサービスで使用されるためにシフトされるためです。

Sudo killall httpd

80がまだ使用されているサービスを確認します

Sudo netstat -tulpn| grep :80

サーバーを再起動します

Sudo service httpd start

enter image description here