web-dev-qa-db-ja.com

0.0.0.0:443へのnginxbind()が失敗しました(48:アドレスはすでに使用されています)

Mac OS 10.14.2にLaravel Valet 2.1.6がインストールされています。

nginx1.15.8はbrewを使用してインストールされます。

アップデートや新しいソフトウェアをインストールせずにMacを再起動したところ、すべての_example.test_サイトで502エラーが発生し、_/usr/local/var/log/nginx/error.log_ログに次のように表示されます。

_2019/01/17 20:38:47 [warn] 31277#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /usr/local/etc/nginx/nginx.conf:1
2019/01/17 20:38:47 [emerg] 31277#0: bind() to 0.0.0.0:443 failed (48: Address already in use)
2019/01/17 20:38:47 [emerg] 31277#0: bind() to 0.0.0.0:443 failed (48: Address already in use)
2019/01/17 20:38:47 [emerg] 31277#0: bind() to 0.0.0.0:443 failed (48: Address already in use)
2019/01/17 20:38:47 [emerg] 31277#0: bind() to 0.0.0.0:443 failed (48: Address already in use)
2019/01/17 20:38:47 [emerg] 31277#0: bind() to 0.0.0.0:443 failed (48: Address already in use)
2019/01/17 20:38:47 [emerg] 31277#0: still could not bind()
_

同時に、_/Users/Myself/.config/valet/Log/nginx-error.log_ログに次の情報が表示されます。

_2019/01/17 20:41:34 [error] 32071#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: example.test, request: "GET / HTTP/2.0", upstream: "fastcgi://unix:/Users/Myself/.config/valet/valet.sock:", Host: "example.test"
_

ps ax -o pid,ppid,%cpu,vsz,wchan,command|egrep '(nginx|PID)'を実行すると、次のリストが表示されます。

_  PID  PPID  %CPU      VSZ WCHAN  COMMAND
32064     1   0.0  4306660 -      nginx: master process /usr/local/opt/nginx/bin/nginx -g daemon off;
32065 32064   0.0  4333284 -      nginx: worker process
32066 32064   0.0  4332260 -      nginx: worker process
32067 32064   0.0  4333284 -      nginx: worker process
32068 32064   0.0  4333284 -      nginx: worker process
32069 32064   0.0  4326116 -      nginx: worker process
32070 32064   0.0  4316900 -      nginx: worker process
32071 32064   0.0  4368236 -      nginx: worker process
32072 32064   0.0  4331236 -      nginx: worker process
32073 32064   0.0  4326116 -      nginx: worker process
32074 32064   0.0  4340452 -      nginx: worker process
32075 32064   0.0  4333284 -      nginx: worker process
32076 32064   0.0  4334308 -      nginx: worker process
36815  1406   0.0  4268060 -      egrep (nginx|PID)
_

次のいずれも問題を解決しません。

  • _Sudo killall nginx_
  • _brew services restart nginx_
  • _brew services restart php_
  • _valet restart_
  • Macを再起動します
  • _valet uninstall && valet install_次に_valet park_関連するディレクトリ

Apacheは競合するサービスとして実行されていません。

私は_Sudo /usr/local/opt/nginx/bin/nginx -g 'daemon off;'_をやってみて、これを手に入れました:

_nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:60 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:60 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:60 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:60 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:443 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:60 failed (48: Address already in use)
nginx: [emerg] still could not bind()
_

_Sudo lsof -i tcp:80_を実行すると、以下が生成されます。

_COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
nginx   42220 root    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42221 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42222 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42223 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42224 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42225 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42226 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42227 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42228 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42229 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42230 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42231 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
nginx   42232 Myself    7u  IPv4 0x7ac8eae7874ccb11      0t0  TCP *:http (LISTEN)
_

ポート443に対してそのコマンドを実行したときの基本的に同じ出力。

この係員による問題の投稿 は_valet domain test_が修正する可能性があることを示唆していますが、それは役に立ちませんでした。

再インストールを試みましたPHPしかし運がありません:

  • brewアンインストール--forcephp
  • 醸造クリーンアップ
  • brew install php
  • バレーアンインストール&&バレーインストール

すべてのvalet config/certificateディレクトリを削除し、valetを再度アンインストールしてから、プロジェクトディレクトリを再インストールして再度パークしました。

Rootとしてnginxを実行してみました:

  • _Sudo brew services stop nginx_
  • ポート80で何も実行されておらず、nginxプロセスがないことを確認
  • _Sudo brew services start nginx_
1
eComEvo

これはPHP 7.3が原因でした。

Xdebug for 7.3の7.3および2.7.0beta1を削除しました。

それから私はbrew install [email protected]、次にpeclを使用してXdebugfor7.2の2.6.1バージョンをインストールしました。

これですべてが正常に機能します。

0
eComEvo

これの本当の理由は、以前のインストールでルートとして醸造サービスを実行したためだと思います。

Sudo brew services restart nginx

そして、LaunchAgentを/ Library/LaunchAgents内に配置することになり、起動時にnginxをrootとして起動し、2つのインスタンスを提供します。これはアクティビティモニターで確認できます。

に入る /Library/LaunchAgentsと問題のあるエージェントを削除し、再起動します。

0
Gazzer