У меня установлен Laravel Valet 2.1.6 на Mac OS 10.14.2.
nginx 1.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
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, но не повезло:
Пытался удалить все каталоги конфигурации / сертификатов камердинера, снова удалил камердинера, затем переустановил и повторно припарковал мой каталог проекта.
Пробовал запустить nginx как root:
sudo brew services stop nginx
sudo brew services start nginx
Я предполагаю, что настоящая причина этого в том, что вы запускали сервисы brew как root в предыдущей установке.
sudo brew services restart nginx
И в итоге вы поместили LaunchAgent в / Library / LaunchAgents, и это запускает nginx как root при запуске, что дает вам 2 экземпляра. Вы можете проверить это в мониторе активности.
Войти в /Library/LaunchAgents
и удалите агента-нарушителя и перезапустите.
Это было вызвано PHP 7.3.
Я удалил 7.3 и 2.7.0beta1 из Xdebug для 7.3.
Я тогда сделал brew install php@7.2
, затем установил версию Xdebug 2.6.1 для 7.2, используя pecl
.
Теперь все работает нормально.
Принудительный выход из процессов nginx на вкладке сети монитора активности исправил мою проблему