Новый Laravel 8 Install 500 ошибка сервера без журналов Laravel или Apache

Я выдергивал волосы из-за этого уже несколько дней.

У меня есть веб-приложение Laravel, которое я пытаюсь развернуть на своем веб-сервере. Я начал создавать приложение несколько недель назад и начал с новой установки Laravel последней стабильной сборки.

Когда я впервые попытался установить Laravel через композитор, он сказал мне, что моя версия PHP устарела. Мне нужно было 7.3 или выше, и у меня была установлена ​​7.2. Я пошел дальше и последовал этому руководству по установке php 7.4.

Сначала я получал ошибку недоступности службы 503 по умолчанию в Apache, которую я смог связать с ошибкой ProxyPass на другом виртуальном хосте домена. Это было отображено в журналах ошибок Apache, когда я их проверял.

А пока я пошел дальше и просто отключил этот сайт, так как он все равно не использовался какое-то время.

После этого я получаю стилизованный экран «500 | Ошибка сервера», который соответствует экранам с кодом ошибки Laravel по умолчанию. Тем не менее storage/logs/laravel.logКогда я иду проверять, у меня нет новых ошибок. Если я попытаюсь запустить такие ремесленные команды, как php artisan migrateжурнал правильно записывает вывод этих ошибок в файл. Так что это не ошибка разрешения, когда журнал вообще не может быть записан.

В настоящее время на моем веб-сервере установлено следующее.

  • Laravel 8.12
  • PHP 7.4.13 (cli)
  • Apache 2.4.29

Пока что я пробовал ...

  • В .envфайл успешно создан и имеет правильные разрешения. (оно делает)
  • Отладка включена (есть)
  • Как и с другими установками Laravel на этом сервере, я убедился, что права доступа к файлам установлены правильно. (они есть)
  • Я проверил свой файл виртуального хоста (прилагается ниже), и это копия одного из моих других виртуальных хостов сайтов Laravel с измененной соответствующей информацией. Другие мои сайты Laravel, размещенные на этом сервере (2 других проекта), работают нормально.
  • Я убедился, что все необходимые для Laravel модули php установлены и обновлены. (они, насколько я могу судить)
  • Установить отладку вручную на true в config/app.php и перезагрузили кеш конфигурации с помощью php artisan config:cache

Файл виртуального хоста домена:

      <VirtualHost *:80>
    ServerAdmin myemail@gmail.com
    ServerName workworkwork.fitness
    ServerAlias workworkwork.fitness
    DocumentRoot /var/www/html/workout/public
    <Directory /var/www/html/workout/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =workworkwork.fitness
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Если у кого-то есть идеи о том, как отладить эту ошибку, помощь будет принята с благодарностью. Как и при развертывании сайтов или настройке новых доменов, я и раньше сталкивался с проблемами, но обычно Stack Overflow или другие сайты легко разрешают Google. Однако я еще не нашел на этом сайте того, что мне подходит. А без отчетов об ошибках Apache или Laravel трудно даже понять, с чего начать.

1 ответ

Эта проблема была решена некоторое время назад, и я не помню точных шагов (извините, что не забыл обновить это раньше), но у меня есть кое-что для людей, которые могут наткнуться на это в будущем, чтобы проверить.

То, что я узнал, может помочь некоторым другим, если они столкнутся с подобной проблемой.

  • САМОЕ ВАЖНОЕ ПРИМЕЧАНИЕ: если на вашем сервере запущены Certbot или Let's Encrypt . Проверьте их журналы ошибок. У него есть собственные журналы, которые могут дать представление о том, как обрабатываются запросы. Обычно они находятся в /var/log/letsencrypt/. Я должен был упомянуть об этом в своих первых сообщениях. После того, как я выполнил некоторые из следующих шагов, чтобы устранить возможные проблемы, я обновил свои сертификаты и их перенаправления с HTTP на HTTPS, и это решило проблему. Я считаю, что это было связано с RewriteRule ^в одном домене был настроен неправильно с опечаткой. В этом домене также были ProxyPassвключено. Я думаю, что между этой опечаткой и автоматически сгенерированными сертификатами CerBot. Что-то где-то сломалось. Как только это было зафиксировано, исправлено и сертификаты были перевыпущены, проблема решилась.
  • Apache обрабатывает виртуальные хосты в алфавитном порядке. В моем случае домен, в котором возникла проблема, был самым нижним в алфавитном порядке. В случае с моими журналами я заметил, что трафик, пытающийся достичь этого домена, маршрутизируется через другой. Это побудило меня взглянуть на виртуальный хост для этого домена и на то, как он был настроен. Обратите внимание, что это не было указано как ошибка, оно действовало так, как будто это должно было быть сделано на основе некоторой конфигурации виртуального хоста. Не все ошибки в основном являются ошибками. Что-то в этом позволяло Apache думать, что он работает правильно, но Laravel отображал для себя ошибку статуса приложения как 500.
  • Отключены все виртуальные хосты, которые не используются или необходимы немедленно. В моем случае у меня было несколько старых виртуальных хостов, все еще работающих для тестовых доменов, заброшенных сторонних проектов и т. Д. Процесс исключения отлично работает. Медленно убирайте вещи, которые могут вызывать проблему, пока она не сработает, и тогда вы лучше поймете, что мешало ей. Естественно, вы захотите вернуть многих из них в онлайн, иначе это не всегда будет выходом в офлайн. Последнее средство для многих, но все же помогло мне.
Другие вопросы по тегам