Получение 404 после развертывания Laravel 8 на AWS Elastic Beanstalk

#laravel #nginx #amazon-elastic-beanstalk

#laravel #nginx #amazon-elastic-beanstalk

Вопрос:

Я пытаюсь настроить промежуточную среду (я также намерен настроить производство в дальнейшем) для приложения Laravel 8. почти все работает так, как я ожидал, за исключением проблемы с кэшированием маршрутов и чего-то неправильного в конфигурации nginx. Я создал laravel.conf файл в .platfom/nginx/conf.d/elasticbeanstalk папке со следующим содержимым:

 location / {
    try_files $uri $uri/ /index.php?$query_string;
    gzip_static on;
}
 

но, похоже, это не имеет никакого эффекта.

Вот файлы конфигурации, которые я использую:

 01-setup.config:

commands:
  01updateComposer:
    command: export COMPOSER_HOME=/root amp;amp; /usr/bin/composer.phar self-update
option_settings:
  - namespace: 'aws:elasticbeanstalk:application:environment'
    option_name: COMPOSER_HOME
    value: /root
  - namespace: 'aws:elasticbeanstalk:container:php:phpini'
    option_name: document_root
    value: /public
  - namespace: 'aws:elasticbeanstalk:container:php:phpini'
    option_name: composer_options
    value: '--no-dev --no-interaction --prefer-dist --optimize-autoloader'
container_commands:
  01-install_composer_dependencies:
    command: >-
      sudo php -d memory_limit=-1 /usr/bin/composer.phar install --no-dev
      --no-interaction --prefer-dist --optimize-autoloader
    cwd: /var/app/staging
  02-optimize:
    command: /usr/bin/composer.phar dump-autoload --optimize


03-artisan.config

container_commands:
  01_migrate:
    command: php artisan migrate --force
    cwd: /var/app/staging/
    leader_only: true
  02_seed:
    command: php artisan db:seed --force
    cwd: /var/app/staging/
    leader_only: true
  03_clear_route:
    command: sudo php artisan route:clear
    cwd: /var/app/staging/
  04_clear_cache:
    command: sudo php artisan cache:clear
    cwd: /var/app/staging/
  05_clear_optimize:
    command: sudo php artisan optimize:clear
    cwd: /var/app/staging/
  06_optimize:
    command: sudo php artisan optimize
    cwd: /var/app/staging/
  07_clear_config:
    command: sudo php artisan config:clear
    cwd: /var/app/staging/
  08_link_storage_folder:
    command: sudo php artisan storage:link
    cwd: /var/app/staging/

04-change-permissions.config

container_commands:
  01_storage_permissions:
    command: chmod 777 -R /var/app/staging/storage
    cwd: /var/app/staging/
  02_cache_permissions:
    command: chmod 777 -R /var/app/staging/bootstrap/cache/
    cwd: /var/app/staging/
 

Я также пытался переопределить файл nginx.conf по умолчанию, но мне это не удалось.

Некоторые детали среды:

Платформа EB: PHP 7.4, работающий на 64-битной платформе Amazon Linux 2

NGINX: 1.18.0

Ответ №1:

В пользовательском интерфейсе (раздел Конфигурация -> Программное обеспечение) вы должны установить корневой параметр документа /public равным .

Дополнительные сведения см. в руководстве по AWS

Комментарии:

1. Спасибо за ваш ответ, но я уже сделал это в файле ebextension.

2. Если вы это сделали, вам не нужна настраиваемая конфигурация NGINX. Он должен работать без него. Смотрите Учебное пособие, на которое я ссылался в своем ответе.

3. Мне это нужно, потому что я развернул с помощью EB CLI. Я отредактирую свой вопрос, предоставив дополнительную информацию. Я следую этому руководству: blog.goforyt.com /…

4. Мне приходит в голову так много вопросов. Какую версию платформы PHP вы используете? Вы используете Amazon Linux 1 или 2? По умолчанию, если вы используете платформу PHP, у вас уже настроен веб-сервер (AL1 с Apache и AL2 с Nginx).

5. Эта информация уже была в моем вопросе: я использую AL2, PHP 7.4 и nginx 1.18.0. Я воссоздаю всю среду, пока мы ее обсуждаем. Я бы предоставил любую дополнительную информацию, которая поможет нам решить эту проблему, на которой я застрял с прошлой недели