cloudControl的Apache配置是否为Symfony2和Assetic?

时间:2013-12-11 18:45:02

标签: apache symfony assetic cloudcontrol

我在cloudControl中显示生成的资源时遇到问题。在assetic:dump创建资产后,在/srv/www/code/web文件夹中创建,但Apache不访问它们。

这是我的Apache配置(documentroot.conf):

DocumentRoot /app/www/web

<Directory /app/www/web>
    AllowOverride All
    Options SymlinksIfOwnerMatch
    Order Deny,Allow
    Allow from All
    DirectoryIndex app.php

    FallbackResource /app.php
</Directory>

使Assetic正常运行的Apache配置是什么?

另外,有人可以解释一下/srv/code~/www(前一个的别名)和/app/www/web (Apache的cloudControl示例中使用的文件夹)之间的区别配置)

我的猜测是apache配置中的/app/www文件夹正在访问~/www(因此访问/srv/code)但我必须遗漏一些内容。

2 个答案:

答案 0 :(得分:1)

为了更好地理解容器的“内部”,您可以使用Secure Shell连接到容器并查看实际的目录结构。 (https://www.cloudcontrol.com/dev-center/Platform%20Documentation#secure-shell-ssh

  • /srv/www/code是应用程序代码所在的实际目录
  • 由于向后兼容性问题,
  • /srv/www/www/srv/www/code的符号链接。
  • /app/srv/www的符号链接,用于简化路径,并与其他buildpack和PaaS提供商兼容。
  • ~//srv/www,因此从您的示例~/www指向应用程序所在的目录。

如果您的资源位于/srv/www/code/web,您应该可以使用:

DocumentRoot /srv/www/code/web

<Directory /srv/www/code/web>
    AllowOverride All
    Options SymlinksIfOwnerMatch
    Order Deny,Allow
    Allow from All
    DirectoryIndex app.php

    FallbackResource /app.php
</Directory>

我希望我能覆盖你所有的情况并清理情况?!

答案 1 :(得分:0)

最后,问题不在配置中使用的文件夹中。 /srv/www/code/web/app/www/web的工作方式相同(考虑到/app/www/srv/www/www的别名,/srv/www/code的别名,同样如此解释@TooAngel)。

问题在于assetic:dump命令,由于某种原因,需要在构建过程中调用它。

我已将此添加到composer.json文件中,现在可以正常运行:

{
    ...
    "scripts": {
        "post-install-cmd": [
            "php app/console cache:clear --env=prod",
            "php app/console assets:install --env=prod",
            "php app/console assetic:dump --env=prod"
         ],
         ...
    },
    ...
}