2013-12-11 7 views
0

У меня возникли проблемы с отображением моих сгенерированных активов в cloudControl. После assetic:dump активы создаются без папки /srv/www/code/web, но Apache не обращается к ним.Конфигурация Apache для cloudControl с Symfony2 и Assetic?

Это моя конфигурация 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(папка используется в примерах 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, которая по какой-то причине должна быть вызвана во время процесса сборки.

Я добавил это в файл 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" 
     ], 
     ... 
    }, 
    ... 
} 
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, чтобы упростить путь, а также иметь совместимость с другими сборщиками и провайдерами PaaS.
  • ~/ is /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

Спасибо за объяснение @TooAngel. Но, будучи псевдонимами, все они работают одинаково в конфигурации Apache. Проверьте мой ответ, чтобы узнать, где я думаю, где проблема. – eillarra