繁体   English   中英

在AWS Elastic Beanstalk上运行的Symfony 4

[英]Symfony 4 running on AWS Elastic Beanstalk

我最近在Symfony 4中完成了一个API,我想在AWS的Elastic Beanstalk上部署它以进行生产测试。 但是,除了能够在index.php Symfony默认页面中访问默认的Symfony 4问候语

我无法路由到任何其他逻辑。 例如,当尝试使用/ note / view时,本地环境注释/视图适用于本地

我在EB环境中遇到“未定义的索引/注释/视图不存在”。 几乎像我的routes.yaml没有加载。

任何建议将不胜感激! 提前致谢!

确保您的public目录中有.htaccess文件(至少在您的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 - > Instances并找到您的EC2实例的公共DNS(IPv4)并使用它来访问您的EC2密钥对(pem文件)

您需要一段时间才能登录。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM