Глава 3 - Запускаем symfony
О работе "Глава 3 - Запускаем symfony"
Как стало ясным из предыдущих глав, фреймворк symfony - это совокупность файлов, написанных на PHP. Их использует проект symfony. Установить symfony означает получить эти файлы и сделать их доступными для проекта. Symfony нужен PHP5, так как фреймворк написан на PHP5. Убедится в том, что PHP установлен, можно набрав в консоли команду: Если версия не ниже 5.0, то вы готовы к установке, которая описывается в этой главе. NOTE
sandbox — (англ.) песочница для детских игр Если вы хотите увидеть, на что способен symfony, возможно, понадобится быстрая установка. В таком случае, вам подойдет sandbox. Sandbox - это обыкновенный архив. Он содержит пустой проект symfony и включает в себя все необходимые библиотеки (symfony, pake, lime, Creole, Propel и Phing), стандартное приложение (default application) и базовую конфигурацию. Для работы sandbox-версии не нужны какие либо специфические настройки сервера или дополнительные пакеты. Для установки скачайте sandbox архив по ссылке http://www.symfony-project.com/get/sf_sandbox.tgz и распакуйте в корневую web директорию вашего сервера (обычно web/ или www/; проще говоря, в директорию, на которую указывает DocumentRoot). Для простоты изложения будем считать, что архив был распакован в директорию sf_sandbox/. CAUTION
Все файлы содержатся в корневой web директории — это нормально для рабочей машины (localhost), но плохо для реального сервера. Ведь тогда вся начинка приложения доступна пользователю. Убедиться в успешной установке можно через интерфейс командной строки, который предоставляет symfony. Зайдите в свежесозданную директорию sf_sandbox/ и наберите следующие команды: Для *nix систем: Для Windows: Вы должны увидеть номер версии sandbox: Теперь можно убедиться, что сервер настроен правильно, запросив URL: Вы должны увидеть поздравительную страницу (congratulations page), изображненную на Рисунке 3-1. Это означает что установка завершена. Если странички нет, сообщение об ошибке подскажет, какие изменения в настройках необходимы. Также можно обратиться к разделу "Устранение неисправностей" этой главы. Рисунок 3-1 – Поздравительная страница sandbox Sandbox предназначен для тренировки с symfony на локальной машине, а не для разработки сложных приложений, которые должны реально работать в сети. Однако, версия symfony, заключенная в sandbox, полнофункциональна и эквивалентна версии, которую можно установить через PEAR. Чтобы удалить sandbox, просто удалите директорию sf_sandbox/. Когда вы будете разрабатывать приложение, вам, возможно, понадобится установить symfony дважды: один раз на рабочую машину (development environment), и еще один раз на хостинг (host server). Для каждого случая, можно избежать повторений, и хранить все файлы symfony в одном месте, независимо от того, разрабатывайте вы одно приложение или несколько. Symfony развивается очень быстро, новая стабильная версия (stable version) может появится всего через несколько дней после вашей первой установки фреймворка. И в ваших интересах как можно быстрее обновить (upgrade) symfony. Это еще одна причина, по которой все проекты должны использовать один экземпляр библиотек symfony. Для реальной разработки установить библиотеки можно двумя способами: Symfony интегрирует несколько других пакетов: Pake и lime разработаны командой symfony. Creole, Propel, и Phing сделаны другой командой и выпущены с лицензией GNU Lesser Public General License (LGPL). Symfony связан со всеми этими пакетами. Пакет symfony в PEAR содержит библиотеки symfony, и все, от чего они зависят. Он также содержит скрипт, который расширит возможности CLI, добавив команды symfony. Первый шаг установки — найти канал symfony в PEAR с помощью команды: Чтобы посмотреть список библиотек, доступных через этот канал, воспользуйтесь командой: Теперь вы готовы установить последнюю стабильную версию symfony (stable version). Введите команду: Вот и все. Файлы symfony и CLI теперь установлены. Убедится в том, что установка прошла успешно, можно, запросив версию фреймворка через команду консоли: TIP
Если вы хотите установить бета версию, с самыми свежими исправлениями и улучшениями, следует использовать команду Библиотеки symfony будут установлены в следующие директории: Переменные _dir являются частью настроек PEAR. Чтобы увидеть значения переменных воспользуйтесь командой: Для реальных серверов (production server), если вы решили отказаться от PEAR, можно скачать последнюю версию библиотек symfony напрямую из Subversion репозитория symfony, воспользовавшись командой checkout: Команды symfony, доступные в случае установки через PEAR, фактически вызывают скрипт /path/to/symfony/data/bin/symfony. То есть следующее будет эквивалентным команде Если вы выбрали установку через SVN, то, возможно, у вас уже есть проект symfony. Для того, чтобы проект мог использовать все необходимые библиотеки, нужно задать две переменные в файле config/config.php, как показано ниже: В Главе 19 описываются другие способы указать проекту на файлы symfony (в том числе через symbolic link и relative path) TIP
Вы также можете скачать PEAR пакет (http://pear.symfony-project.com/get/symfony-1.0.0.tgz) и распаковать его. Результат будет таким же, как если бы вы сделали checkout. Как стало ясно из Главы 2, связанные между собой приложения содержатся в одном проекте. Все приложения проекта используют базу данных. Для того, чтобы создать приложение, сначала нужно создать проект. Любой проект symfony имеет определенную файловую структуру. Благодаря командам консоли создание проекта автоматизировано — symfony сам построит дерево директорий и выставит права доступа. Чтобы создать проект, нужно создать новую директорию и воспользоваться командой symfony. В случае установки через PEAR следует использовать такие команды: Если symfony установлен через SVN, то создать проект можно с помощью таких команд: Команды Symfony создаст следующие директории: TIP
Команда Пока что проект пуст и смотреть в нем нечего. Нужно создать хотя бы одно приложение (application). Чтоб инициализировать приложение (application), используйте команду Эта команда создаст директорию Также в папке
Приведу здесь переводы терминов:
Production environment — рабочяя среда, рабочий режим Development environment — среда разработки, режим разработки
переводчик
Настройка Веб СервераСкрипты, хранящиеся в директории Настройка Виртуального ХостаВ листинге 3-1 приведен пример добавления нового виртуального хоста (virtual host) для сервера Apache. Листинг 3-1 – Пример настроек Apache, в файле <VirtualHost *:80>
ServerName myapp.example.com
DocumentRoot "/home/steve/myproject/web"
DirectoryIndex index.php
Alias /sf /$sf_symfony_data_dir/web/sf
<Directory "/$sf_symfony_data_dir/web/sf">
AllowOverride All
Allow from All
</Directory>
<Directory "/home/steve/myproject/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
В листинге 3-1, путь Alias /sf /usr/local/lib/php/data/symfony/web/sf
Осталось только перезапустить Apache - и все. Новое приложение можно вызвать, набрав в браузере URL: http://localhost/myapp_dev.php/ Вы должны увидеть поздравительную страницу, похожую на ту, что была приведена выше на Рисунке 3-1.
Настройка Shared-Host СервераУстановка приложения на shared-host чуть сложнее, так как структура директорий фиксирована и вы не можете ее поменять.
Представим на минутку, что web директория на shared-host называется К счастью, в проекте symfony любой путь к директории можно задать. Глава 19 расскажет больше об этом. В нашем же случае мы можем поменять имя web директории с Листинг 3-2 – Изменение настроек структуры директорий, в файле [php]
$sf_root_dir = sfConfig::get('sf_root_dir');
sfConfig::add(array(
'sf_web_dir_name' => $sf_web_dir_name = 'www',
'sf_web_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.$sf_web_dir_name,
'sf_upload_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.$sf_web_dir_name.
DIRECTORY_SEPARATOR.sfConfig::get('sf_upload_dir_name'),
));
По умолчанию web директория проекта содержит файл .htaccess. Содержимое файла приведено в листинге 3-3. Изменяйте его по мере необходимости, для того чтоб ваш проект соответствовал правилам shared-host. Листинг 3-3 – Содержимое .htaccess, в myproject/www/.htaccess Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
# big crash from our front web controller
ErrorDocument 500 "<h2>Application error</h2>symfony applicationfailed to start properly"
Теперь можно просмотреть ваше приложение. Загрузите поздравительную страничку запросив URL: http://www.example.com/myapp_dev.php/
Устранение проблем (Troubleshooting)Если вы столкнулись с проблемами во время установки, попытайтесь извлечь максимальную пользу из информации об ошибках, которая будет отображена в вашем браузере или консоли (шелле). Часто эта информация содержит необходимые объяснения или даже ссылки на конкретные веб странички, посвященные данной ошибке. Типичные проблемыЕсли у вас все еще есть проблемы с запуском symfony, проверьте следующее:
Ресурсы SymfonyВозможно, кто-то уже сталкивался с вашей проблемой, и для нее уже есть готовые решения. Поискать их можно тут:
Если вы все же не нашли решения свей проблемы, вынесите ее на обсуждение в сообщество symfony (symfony community). Вы можете задать вопрос на форуме, отослать письмо в список рассылки (mailing list) или даже обсудить все вживую с наиболее активными участниками сообщества в IRC канале #symfony. Контроль Версий (Source Versioning)После того, как проект создан, рекомендуется начать процесс контроля версий (source versioning). Система контроля версий хранит след всех изменений, сделанных в коде, обеспечивает доступ к предыдущим версиям проекта, упрощает наложение заплаток (patching) и обеспечивает эффективную работу команды. Symfony поддерживает CVS, хотя рекомендуется использовать Subversion (http://subversion.tigris.org/). Следующие примеры иллюстрируют команды Subversion, и подразумевают, что вы уже установили сервер Subversion и теперь хотите создать новый репозиторий для вашего проекта. Для пользователей Windows рекомендуется использовать клиент TortoiseSVN (http://tortoisesvn.tigris.org/). Обратитесь к документации Subversion, чтоб узнать больше о контроле версий и используемых командах. Немного ссылок на википедию переводчик Следующий пример подразумевает, что $SVNREP_DIR задана как переменная среды (environment variable). Если же это не сделано, то просто замените $SVNREP_DIR на реальный путь к репозиторию.
В дальнейшем важно понимать, что и репозиторий, и проект, который мы стремимся добавить в репозиторий, находятся на одной машине. переводчик Итак, давайте создадим новый репозиторий для проекта > svnadmin create $SVNREP_DIR/myproject Затем базовая структура репозитория создается из директорий > svn mkdir -m "layout creation" file:///$SVNREP_DIR/myproject/trunk file:///$SVNREP_DIR/myproject/tags file:///$SVNREP_DIR/myproject/branches Теперь приступим к первой ревизии (revision). Необходимо импортировать все файлы проекта, кроме файлов кэша и журналов событий (логов): > cd ~/myproject > rm -rf cache/* > rm -rf log/* > svn import -m "initial import" . file:///$SVNREP_DIR/myproject/trunk Проверим, успешно ли прошла передача файлов, набрав в консоли: > svn ls file:///$SVNREP_DIR/myproject/trunk/ Похоже, все прошло успешно. Теперь в репозитории хранится контрольная версия (и история) всех файлов вашего проекта. Далее нужно установить соответствие между файлами исходной папки
Прокомментирую этот абзац. Дело в том, что после импорта проекта в репозиторий соответствие межу файлами исходного проекта и файлами проекта, хранящегося в репозитории, все еще не установлено. Чтобы установить это соответствие исходная директория с проектом удаляется и делается checkout в новую директорию. Таким образом, в новую папку скачиваются файлы проекта из репозитория, и в итоге мы имеем рабочую версию проекта, "связанную" с проектом, хранящимся в репозитории.
переводчик > cd ~ > mv myproject myproject.origin > svn co file:///$SVNREP_DIR/myproject/trunk myproject > ls myproject Вот и все. Теперь вы можете работать с файлами в папке Осталось сделать последние шаги. Если вы фиксируйте (commit) вашу рабочую версию в репозитории, то будут переданы и нежелательные файлы, такие как файлы папок > cd ~/myproject > chmod 777 cache > chmod 777 log > svn propedit svn:ignore log > svn propedit svn:ignore cache Должен открыться заданный для SVN текстовый редактор по умолчанию. Если этого не произошло, используйте ваш любимый редактор, прописав его в команде: > export SVN_EDITOR=<name of editor> > svn propedit svn:ignore log > svn propedit svn:ignore cache Теперь просто добавьте все поддиректории * Сохраните и выйдете. Вот и все. ИтогоЧтоб играться и исследовать symfony больше всего подходит заранее настроенный sandbox. Установка через PEAR или через SVN подойдет для реальной разработки и в случае установки на сервер. Вы получите установленные библиотеки symfony, но вам понадобится создать проект и приложение самому. Последний шаг — конфигурация веб сервера, которая допускает множество вариантов. Symfony отлично работает, если настроить виртуальный хост (virtual host), именно это решение рекомендовано. Если в процессе установки возникли ошибки, вы можете найти множество туториалов и ответов на часто задаваемые вопросы на сайте symfony. Если решение не найдено, обсудите вашу проблему в сообществе symfony, и вы быстро получите нужный ответ. Хорошей идеей будет поставить свежесозданный проект на контроль версий. Теперь вы готовы использовать symfony, и можно приступить к разработке базового веб приложения. Перевел Алексей Гоголев postman [at] dev [dot] co [dot] ua Статья также доступна по адресу http://developer.co.ua/posts/view/glava_3_zapuskaem_symfony Рейтинг работы 5 балловГолосовать могут только зарегистрированные пользователиРегистрацияВернуться |


