08.05.2011

Настройка веб-сервера для доступа к каталогу symfony_data/web/sf/


Радость от запуска первого проекта на Symfony, очень часто омрачена сообщением которое выводится на главной странице созданного проекта:








Congratulations! You have successfully created your symfony project.
Project setup successful
This project uses the symfony libraries. If you see no image in this page, you may need to configure your web server so that it gains access to the symfony_data/web/sf/ directory.

Здесь нас поздравляю с успешным созданием нашего проекта на Symfony и обращают наше внимание, что если мы на главной странице проекта не видим изображений, нужно правильно настроить веб-сервер. В частности указать путь к директории symfony_data/web/sf/.

Существует по меньшей мере три способа решения этой проблемы. Подразумевается что у вас уже уставновлена Symfony и вы используете веб-сервер Apache.


Способ 1 — настройка virtual host

Это рекомендуемый метод создания рабочей среды (на самом деле это единственный реальный способ - другие, описанные ниже, только обходные пути) - вы всегда должны создать виртуальный хост для каждого приложения.
Давайте создадим virtual host для проекта symfony.local с использованием  алиаса для подключения symfony библиотек:

<VirtualHost *:80>
        ServerName hotel.local
        ServerAlias www.hotel.local
        ServerAdmin webmaster@hotel.local
        DocumentRoot /www/hotel.local/public

        <Directory /www/hotel.local/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /www/hotel.local/cgi-bin/

        <Directory /www/hotel.local/cgi-bin>
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        Alias /sf /usr/share/php/data/symfony/web/sf

        <Directory "/usr/share/php/data/symfony/web/sf">
                AllowOverride All
                Allow from All
        </Directory>

        ErrorLog /www/hotel.local/logs/error.log
        LogLevel warn
        CustomLog /www/hotel.local/logs/access.log combined
</VirtualHost>

Теперь нужно перезагрузить сервер Apache

sudo /etc/init.d/apache2 restart

Обновив страницу своего проекта вы должны увидеть такую картинку:





Способ 2 — project freezing

Вы можете получить готовое к развертыванию пакетов из проекта Symfony с помощью комманды freeze. Если вы выполняете в корневом каталоге вашего проекта:


symfony freeze [/path/to/your/symfony/data/dir]


Все файлы Symfony ядра будут скопированы в текущий проект, в том числе те, которые где отсутствует в каталоге web/sf. Команда freeze также изменяет некоторые пути в конфигурации проекта так что теперь адрес Symfony библиотек, которые также были скопированы в проект не глобальные.
       Основным недостатком этого способа является то, что, если вы хотите обновить Symfony вам придется использовать команду unfreeze (команда противоположной freeze) и использовать команду freeze снова для всех ваших проектов или копировать/перезаписывать файлы вручную.



Способ 3 — тупой метод

Если первые два метода вам не подходят можно просто скопировать каталог symfony_data_path/web/sf/  в каталог вашего веб сервера _project_path/web/. Как и во втором методе недостатком этого варианта является то, что после обновления Symfony вам придется вручную переписать эту папку снова во всех ваших проектах.


Источник

Комментариев нет:

Отправить комментарий