我想把一个Laravel 7的应用部署到Elastic BeanStalk上,但是在路由上遇到了一些问题。
目前, 唯一可见的页面是主页, 而其他页面如登录, 注册和其他页面都显示404。
这里是来自eb的日志。
20200501 14:19:30 [错误] 4091#0: *4 open() "varwwwhtmlpubliclogin" failed (2: No such file or directory), client: 82.4.194.3, server: ,请求:"GET login HTTP1.1 "GET登录HTTP1.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平台的 Linux第2版这个版本使用Nginx(而之前的版本使用Apache)。
你可以在官方文档中看到更多细节。https:/docs.aws.amazon.comelasticbeanstalklatestplatformsplatforms-supported.html#platforms-supported.PHP。
在这种情况下, 你必须按照Laravel文档中的描述来配置Nginx重定向: https:/laravel.comdocs7.xdeployment#nginx
只需创建文件 .platform/nginx/conf.d/elasticbeanstalk/laravel.conf
在你的项目根目录下)。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
你可以根据自己的需要添加其他配置。
你会在这里找到更多关于扩展平台的细节。https:/docs.aws.amazon.comelasticbeanstalklatestdgplatforms-linux-extend.html。