在AWS Elastic Beanstalk上运行的Symfony 4

时间:2018-10-09 13:43:46

标签: php amazon-web-services api symfony amazon-elastic-beanstalk

我最近在Symfony 4中完成了一个API,我想将其部署在AWS的Elastic Beanstalk上进行生产测试。但是,除了能够访问index.php Symfony default page

中的默认Symfony 4问候外,

我无法路由到任何其他逻辑。例如,当尝试使用在本地环境note/view on local

上有效的/ note / view时

我在EB环境中遇到“未定义的索引/ note / view不存在”的问题。几乎没有我的routes.yaml加载。

任何建议将不胜感激!预先感谢!

1 个答案:

答案 0 :(得分:1)

确保您的.htaccess目录中有public文件(至少在您的EC2实例(EB创建的实例)上)

您的本地可能不需要它(如nginx),但是EB PHP附带了现成的Apache。您需要确保您的代码也可以在apache上运行。

只是为了验证这一理论,请访问由EB创建的EC2实例(如果您不知道如何,请参见下文);

  • cd /var/app/current/public

  • ~ nano .htaccess

  • 将下面的内容粘贴到文件中

`

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /index.php/
    </IfModule>
</IfModule>

请注意,这只是对Apache进行此理论测试的基本重写。您可以根据项目的需要向此文件添加更多内容。

  • 重新启动apache; sudo service httpd restart
  • 测试一下!

或者,您可以执行cd /var/app/current/public而不是cd /var/www/html/public,因为它是/var/app/current/public的符号链接

如何访问EB生成的EC2实例

  • 转到AWS控制台-> Elastic Beanstalk->您的应用程序->您的环境
  • 在环境仪表板中,单击左侧的“配置”
  • 找到“安全性”框,然后单击“修改”。
  • 在“虚拟机权限”下,选择“ EC2密钥对”并保存。
  • 转到EC2->实例,找到您的EC2实例的公共DNS(IPv4),并使用它与您的EC2密钥对(pem文件)进行访问

需要一段时间才能登录。

PS 当然,EBS背后的主要思想之一是您不需要通过SSH进入实例。但是,这只是为了检验理论,有时使用AWS时,您需要采用跟踪和错误样式。我不知道此应用程序的设置,也不知道EBS的整个设置及其工作流程。如果这可以解决您的问题,则只需将.htaccess包含到您的项目中就可以了。