2013-12-11 38 views
0

我有問題要在cloudControl中顯示我生成的資產。在assetic:dump之後,資產將在/srv/www/code/web文件夾中創建,但Apache不訪問它們。cloudControl的Symfony2和Assetic的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> 

什麼是正確的Apache配置已Assetic工作?

此外,有人能解釋我的/srv/code之間的差別,~/www(前一個別名)和/app/www/web(在Apache的配置cloudControl示例中使用的文件夾)?

我的猜測是Apache配置中的/app/www文件夾正在訪問~/www(所以,訪問/srv/code)但我必須缺少一些東西。

回答

0

最後,問題不在配置中使用的文件夾中。 /srv/www/code/web/app/www/web的工作原理是相同的(考慮到/app/www/srv/www/www的別名,它是/srv/www/code的別名,以及@TooAngel的解釋)。

問題出在assetic:dump命令,由於某種原因,需要在構建過程中調用該命令。爲解釋@TooAngel

{ 
    ... 
    "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" 
     ], 
     ... 
    }, 
    ... 
} 
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,簡化了路徑,並與其他buildpacks和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> 

我希望覆蓋所有的情況下,可能清理情況?

+0

感謝:

我已將此添加到composer.json文件,現在它的工作原理。但是作爲別名,它們在Apache配置中的工作都是一樣的。查看我的答案,看看我認爲問題出在哪裏。 – eillarra