在 AWS 上的 symfony 2.8 应用程序中更改根目录 - Elastic Beanstalk
Posted
技术标签:
【中文标题】在 AWS 上的 symfony 2.8 应用程序中更改根目录 - Elastic Beanstalk【英文标题】:Change Root in a symfony 2.8 App on AWS - Elastic Beanstalk 【发布时间】:2016-03-17 07:34:31 【问题描述】:这里需要一些指示!
我已成功将我的应用程序部署到 Amazon Web Services 上的弹性 beanstalk 上,但我的根目录有问题,基本上是它运行的 /web,我如何更改它以便应用程序直接运行网址?
我之前尝试过将 symphony 应用程序部署到 azure 并使用 web.config 文件。我可以在这里做同样的事情吗?
Azure 的 web.config 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="BlockAccessToPublic" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="URL" pattern="/web/*" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to view this directory or page using the credentials that you supplied." />
</rule>
<rule name="RewriteAssetsToPublic" stopProcessing="true">
<match url="^(.*)(\.css|\.js|\.jpg|\.png|\.gif)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="Rewrite" url="web/R:0" />
</rule>
<rule name="RewriteRequestsToPublic" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="Rewrite" url="web/app.php/R:0" />
</rule>
</rules>
</rewrite>
任何建议都会很棒,所以提前感谢您的帮助! :)
【问题讨论】:
【参考方案1】:我的理解是,您的应用程序当前正在从 http://myproject.elasticbeanstalk.com/web/
提供服务,而您想要删除 /web
而不是直接从 http://myproject.elasticbeanstalk.com/
提供服务。
您需要为您的环境更新document_root
。有几种方法可以做到这一点:
AWS 控制面板
快速简单的解决方案是从 EB 控制台本身更改 document_root
。
步骤:
-
登录 AWS 并转到 Elastic Beanstalk 控制面板
单击要编辑的环境
从左侧菜单中,点击配置
在 Web Tier 下,单击 软件配置 面板上的齿轮图标
在Container Options下有一个Document Root的输入选项
将此值更改为
/web
点击页面底部的应用
完成!您的环境应该开始更新。
项目配置/CLI
或者,您可以在项目的.ebextensions
中option_settings
下的.config
文件中定义此步骤,然后从命令行更新。
以下是我部署到 EB 的 Symfony2 项目的示例,其中包含 document_root
的值:
commands:
01_update_composer:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root
- namespace: aws:elasticbeanstalk:container:php:phpini
option_name: document_root
value: /web
- namespace: aws:elasticbeanstalk:container:php:phpini
option_name: composer_options
value: --optimize-autoloader
下次为您的环境运行 eb deploy
时,您的环境应该使用任何新设置进行更新。
您也可以使用eb setenv
通过命令行更新此设置,这对于通过命令行为您的环境设置envvars 很有用,但我还没有尝试使用document_root
,所以YMMV。
希望这会有所帮助:)
【讨论】:
以上是关于在 AWS 上的 symfony 2.8 应用程序中更改根目录 - Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 2.8:ResourceInterface::isFresh() 自 2.8 起已弃用
Symfony 2.8 Twig_Error_Runtime Sonata 管理包
XmlFileLoader.php 第 281 行中的 symfony 2.8 InvalidArgumentException