Laravel 弹性 BeanStalk 上的 404
404 on Laravel Elastic BeanStalk
我正在尝试将 Laravel 7 应用程序部署到 Elastic BeanStalk,但遇到了一些路由问题。
我已经按照下面视频中的教程进行操作,并上传了包含我所有本地文件的 zip 存档。
在将根目录设置为 /public 后,我还修复了权限问题。
目前,唯一可见的页面是主页,而其他页面如 /login、/register 和其他页面显示 404
这是来自 eb 的日志:
2020/05/01 14:19:30 [error] 4091#0: *4 open() "/var/www/html/public/login" failed (2: No such file or directory), client: 82.4.194.3 , 服务器: , 请求: "GET /login HTTP/1.1"
经过几次尝试,我搞定了运行。我删除了该应用程序并使用 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>
我想您正在使用 Beanstalk PHP 平台和版本 2 中的 Linux;此版本使用 Nginx(而之前的版本使用 Apache)。
您可以在官方文档中查看更多详细信息:https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP
在这种情况下,您必须按照 Laravel 文档中的描述配置 Nginx 以进行重定向: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
我正在尝试将 Laravel 7 应用程序部署到 Elastic BeanStalk,但遇到了一些路由问题。
我已经按照下面视频中的教程进行操作,并上传了包含我所有本地文件的 zip 存档。 在将根目录设置为 /public 后,我还修复了权限问题。 目前,唯一可见的页面是主页,而其他页面如 /login、/register 和其他页面显示 404
这是来自 eb 的日志:
2020/05/01 14:19:30 [error] 4091#0: *4 open() "/var/www/html/public/login" failed (2: No such file or directory), client: 82.4.194.3 , 服务器: , 请求: "GET /login HTTP/1.1"
经过几次尝试,我搞定了运行。我删除了该应用程序并使用 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>
我想您正在使用 Beanstalk PHP 平台和版本 2 中的 Linux;此版本使用 Nginx(而之前的版本使用 Apache)。
您可以在官方文档中查看更多详细信息:https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP
在这种情况下,您必须按照 Laravel 文档中的描述配置 Nginx 以进行重定向: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