在 AWS Elastic Beanstalk 上部署 Laravel 8 后得到 404

Posted

技术标签:

【中文标题】在 AWS Elastic Beanstalk 上部署 Laravel 8 后得到 404【英文标题】:Getting 404 after deploying Laravel 8 on AWS Elastic Beanstalk 【发布时间】:2021-04-01 07:17:16 【问题描述】:

我正在尝试为 Laravel 8 应用程序设置一个临时环境(我还打算设置一个生产环境)。几乎一切都按我的预期工作,除了缓存路由问题和 nginx 配置有问题。 我在.platfom/nginx/conf.d/elasticbeanstalk 文件夹上创建了一个laravel.conf 文件,内容如下:

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

但是好像没有效果。

这是我正在使用的配置文件:

01-setup.config:

commands:
  01updateComposer:
    command: export COMPOSER_HOME=/root && /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 平台:在 64 位 Amazon Linux 2 上运行的 PHP 7.4

NGINX:1.18.0

【问题讨论】:

【参考方案1】:

在 UI(配置 -> 软件部分)中,您应该将 Document Root 设置为 /public

更多信息请参见AWS tutorial

【讨论】:

感谢您的回答,但我已经在 ebextension 文件中这样做了。 如果你这样做了,你就不需要自定义 NGINX 配置。没有它它应该可以工作。请参阅我在回复中链接的教程。 我有点需要这个,因为我使用 EB CLI 进行部署。我将编辑我的问题以提供更多信息。我正在关注本教程:blog.goforyt.com/… 我想到了很多问题。你用什么PHP版本平台?您使用的是 Amazon Linux 1 还是 2?默认情况下,如果您使用 PHP 平台,则您已经配置了 Web 服务器(AL1 使用 Apache,AL2 使用 Nginx)。 这些信息已经在我的问题中了:我正在使用 AL2、PHP 7.4 和 nginx 1.18.0。当我们讨论它时,我正在重新创建整个环境。我会提供任何其他信息来帮助我们解决我自上周以来一直困扰的问题

以上是关于在 AWS Elastic Beanstalk 上部署 Laravel 8 后得到 404的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS Elastic Beanstalk 上扩展 Magento

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 上设置 HTTPS

在 AWS Elastic Beanstalk 上运行节点和反应

如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?

在aws elastic beanstalk上上传文件?