【问题标题】:Change Root in a symfony 2.8 App on AWS - Elastic Beanstalk在 AWS 上的 symfony 2.8 应用程序中更改根目录 - 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>

任何建议都会很棒,所以提前感谢您的帮助! :)

【问题讨论】:

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


    【解决方案1】:

    我的理解是,您的应用程序当前正在从 http://myproject.elasticbeanstalk.com/web/ 提供服务,而您想要删除 /web 而不是直接从 http://myproject.elasticbeanstalk.com/ 提供服务。

    您需要为您的环境更新document_root。有几种方法可以做到这一点:

    AWS 控制面板

    快速简单的解决方案是从 EB 控制台本身更改 document_root

    步骤:

    1. 登录 AWS 并转到 Elastic Beanstalk 控制面板
    2. 单击要编辑的环境
    3. 从左侧菜单中,点击配置
    4. Web Tier 下,单击 软件配置 面板上的齿轮图标
    5. Container Options下有一个Document Root的输入选项
    6. 将此值更改为/web
    7. 点击页面底部的应用

    完成!您的环境应该开始更新。

    项目配置/CLI

    或者,您可以在项目的.ebextensionsoption_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。

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2018-05-05
      • 1970-01-01
      • 2017-11-26
      • 2023-03-25
      • 2018-09-13
      • 2017-08-01
      • 2012-09-24
      • 2018-04-14
      • 2019-03-14
      相关资源
      最近更新 更多