404 on Laravel Elastic BeanStalk



我正试图将Laravel 7应用程序部署到Elastic BeanStalk,但在路由方面遇到了一些问题。

我遵循了下面视频中的教程,上传了带有所有本地文件的zip档案。在将root设置为/public之后,我还修复了权限问题。目前,唯一可见的页面是主页,而其他所有页面,如/login、/register和其他页面,都显示了404

这是来自eb:的日志

2020/05/01 14:19:30[error]4091#0:*4 open(("/var/www/html/public/login"失败(2:没有这样的文件或目录(,客户端:82.4.194.3,服务器:,请求:"GET/login HTTP/1.1">

https://www.youtube.com/watch?v=ISVaMijczKc

我想您使用的是Beanstalk PHP平台和版本2的Linux;这个版本使用Nginx(而上一个版本使用Apache(。

您可以在官方文档中查看更多详细信息:https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-支持。PHP

在这种情况下,您必须配置Nginx进行重定向,如Laravel文档中所述:https://laravel.com/docs/7.x/deployment#nginx

只需创建文件.platform/nginx/conf.d/elasticbeanstalk/laravel.conf(在项目的根目录下(:

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

您可以根据需要随意添加其他配置。

您可以在此处找到有关扩展平台的更多详细信息:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html

经过几次尝试,我已经启动并运行了它。我已经删除了该应用程序,并使用EB CLI重新创建它。

我创建了一个环境配置并将其放置在.ebextentions中,然后添加了AllowOverride All

这是我的01-environment.config的内容

option_settings:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
composer_options: --no-dev
aws:elasticbeanstalk:application:environment:
APP_ENV: production
APP_KEY: base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

和我的.htaccess文件

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
AllowOverride All
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

最新更新