Askeet. День первый. Начало проекта
Приветствуем!
Хотите что-то написать?Нужно назвать себя.
Если вы пришли в первый раз,
то нужно зарегистрироваться.
Переводы → Askeet. День первый. Начало проекта
Вызов (от переводчика)
Symfony - это один из тех фреймворков на PHP5, который привлекает своей достаточной документацией, множеством плагинов, обновлениями, анонсами новых версий и многим другим.
К сожалению документации на русском языке пока мало. Многие зарезервированные доменты вроде http://symfony-project.ru/ лишь имею одну фразу - "Скоро будет". И причём уже давно.
На самом проекте http://symfony-project.org/ в разделе документации можно увидеть наш триколор только в разделе "Cookbook".
Итак, я бросаю вызов и намереваюсь заняться переводом. API переводить думаю смысла нет, книга - слишком объёма пока что для меня (но это временно явление, возьмусь может и за неё). А переводить мы начнём Askeet Tutorial. Если первый перевод примут - буду перводить дальше. Каждый день не обещаю, но постараюсь в будние дни по статье выкладывать
Вызов (от автора)
Предрождественнский календарь symfony это набор из 24 уроков, публикуемых ежедневно с 1 декабря и до наступления рождества. Всё верно, каждый, включая выходные, будет публиковаться новый урок. Каждый урок не должен занимать более часа и даст нам возможность наблюдать за продвигающейся разработкой Web 2.0 приложения от А до Я. В рождество финальная версия приложения появится в онлайне, а исходный код будет открытым. Приложение будет практичным, интересным, полезным и забавным.
24 раза по часу это сутки и это максимум времени, по нашему мнению, которое программист должен потратить на изучение symfony. Каждый день в приложение будут добавляться новые возможности и главным преимуществом данной разработки является рассмотрение преимуществ функционала symfony, ровно так же как и получение хорошей практики в разработке веб-приложений на symfony. Каждый день вы будете сознавать насколько быстро и эффективно разрабатывать веб-приложение на symfony... И вы будете хотеть знать больше.
Учитывая, что не будет достаточно справиться лишь с этим и учитывая что мы ленивые чуваки - у нас ничего не запланировано на 21 день - зимний сезон. В чём суть? Что потребует сообщество, то мы и добавим в приложение в этот день. Без подготовки. И заставим это работать. Это будет день "найми-symfony-гуру-на-день".
The Проджект
Разрабатываемое приложение может быть обычным "покажи-и-расскажи", список задач (to-do list), телефонная книга или книжный магазин. Но мы хотим использовать symfony в оригинально проекте, полезном, с кучей фишечек и рюшечек и серьёзным размером. Наша задача - доказать, что symfony может быть использован в сложных ситуациях, в разработке профессиональных приложений со своим стилем и изюминкой.
Мы надеемся что люди будут использовать приложение, чтобы показать что проект на symfony может выдерживать серьёзные нагрузки. Поэтому приложение должно быть актуальным и отвечать существующим потребностям или создать новые. Запуск сайта будет реальной проверкой на прочность. Вы нам понадобитесь, уважаемые читатели, для того чтобы копать/лазить/чатиться на сайте и обсуждать смысл жизни, чтобы проверить максимальную нагрузку.
Суть проекта мы сохраним для следующего дня. У нас не мало работы и без описывания полноценного Web-2.0 приложения. Тем не менее имя необходимо. Назовём его "Спросика" (Askeet).
Что у нас сегодня?
Задачами на сегодня являются: отобразить страницу приложения в браузере и сконфигурировать профессиоанальную среду разработки.
Это будет легко для тех, кто уже читал другие уроки и не слишком сложно для остальных. И каждый найдём для себя что-то новое.
Преположим, что вы используете Unix систему с установленными Apache, Mysql и PHP5. Если вы работаете под Windows - не стоит паниковать. Всё будет отлично работать, просто придётся ввести несколько дополнительных директив в коммандной строке.
Команды Unix могут быть очень полезны в Windows. Если вы хотите использовать инструменты вроде tar, gzip или grep - в Windows - установите Cygwin. Официальная документация немного разроненна, хороший гайд может быть найден здесь. Экстремалы так же могу попробовать Сервисы Windows для Unix.
Установка Symfony
Самый простой способ - использовать пакет PEAR. Тем менее, чтобы использовать каналы и получить доступ к каналу symfony, вам придётся апгрейдить PEAR до версии 1.4.0 или более (если вы конечно не используете PHP5.1.0, в нём уже есть PEAR 1.4.5)
$pear upgrade PEAR
Есть проблемы с использованием PEAR? Прочтите главу Running Symfony.
Теперь вы можете добавить канал 'symfony':
$ pear channel-discover pear.symfony-project.com
Теперь вы готовы к установке symfony и всех зависимостей:
$ pear install symfony/symfony
Если интересует определённая версия:
$ pear upgrade symfony/symfony-1.0.11
А так можно проверить установлена ли symfony и посмотреть её версию (-V заглавная)
$ symfony -V
Если интересны возможности коммандной строки symfony - наберите $symfony -T и увидите список доступных опций. Так же вы можете прочитать Running Symfony и узнать как устанавливается symfony из tgz или репозитория svn. В коммьюнити так же описывается не-PEAR способ установки в symfony wiki.
Установка проекта
В symfony приложения имеющие общие модели данных выносятся в проекты. В проекте "Спросика" будет реализованы backend(админка) и frontend(сам сайт) - это 2 приложения. Проект является основой приложений и должен быть создан первым. Всё что вам нужно это папка проекта и коммандная строка:
$ mkdir /home/sfprojects/askeet
$ cd /home/sfprojects/askeet
$ symfony init-project askeet
Пор создать frontend для для symfony:
$ symfony init-app frontend
Ухты как быстро.
Пользователям Windows настоятельно рекомендуем хранить проекты с путями, не содержащими пробелы.
Установка веб-сервиса
Теперь пришло время внести изменения в конфиг Apache, чтобы сделать проект доступным. Весьма рекомендуется создавать приложение на виртуальном хосте, чем мы и займёмся.
откройте файл httpd.conf в вашей папке конфигурации Apache и добавьте следующее:
NameVirtualHost 127.0.0.1:80<VirtualHost 127.0.0.1:80> ServerName askeet DocumentRoot "/home/sfprojects/askeet/web" DirectoryIndex index.php Alias /sf /usr/local/lib/php/data/symfony/web/sf <Directory "/home/sfprojects/askeet/web"> AllowOverride All</Directory></VirtualHost>
Алиас sf должен указывать на путь к symfony в папке PEAR. Чтобы определить его введите pear config-show. Приложения на Symfony должны иметь доступ к этому каталогу, чтобы использовать некоторые изображение и js файлы для правильного отображения панели дебага и ajax хелперов
В Windows Alias нужно заменить этим:
Alias /sf "C:\php\pear\data\symfony\web\sf"
Если ничего не работает, возможно стоит добавить права для алиасированной папки /sf. Код ниже из рабочей копии Windows WAMP:
NameVirtualHost 127.0.0.1:80<VirtualHost 127.0.0.1:80> ServerName askeet DocumentRoot "C:/sfprojects/askeet/web" DirectoryIndex index.php Alias /sf "C:/wamp/php/PEAR/data/symfony/web/sf" <Directory "C:/sfprojects/askeet/web"> AllowOverride All Allow from All </Directory> <Directory "C:/wamp/php/PEAR/data/symfony/web/sf"> AllowOverride All Allow from All </Directory> </VirtualHost>
Установка доменного имени
Устанавливаем локально доменное имя askeet.
В Linux это делается через файл /etc/hosts. В Windows XP этот файл лежит в C:\WINDOWS\system32\drivers\etc\.
Добавьте следующее:
127.0.0.1 askeet
Если вы не хотите работать с новым хостом просто измените параметр Listen на другой порт. Так вы сможете и дальше использовать домен localhost.
Потестим новый конфиг?
Рестартаните Apache и зайдите по адресу http://askeet/
Если вы видите страницу привествия symfony - можем вас поздравить!
Для доступа в среду разработчика зайдите по адресу:
http://askeet/frontend_dev.php/
В верхней части страницы вы должны увидеть панель отладки и небольшие иконки, доказывающие что конфигурация верна.

Если у вас /frontend_dev.php/ отображается так же как и /index.php/, то скорей всего где-то ошибка в конфигурации http.conf в районе mod_rewrite. А может и просто нужно сделать symfony cc
IIS
Установка на IIS немного отличается от обычной. Найти способ установки можно в этом уроке.
Subversion
Один из главных принципов ленивых чуваков - не беспокоиться за поломку кода. SVN помогает нам:
- быстро работать
- вернуться к предущей версии кода, если изменения были не эффективны
- работать нескольким человекам в комманде
- иметь доступ к ежедневным изменениям.
мы будем использовать для данных целей Subversion Будет считать, что вы уже установили svn-сервер или имеете к нему доступ.
Для начала создадим репозиторий для проекта "Спросика":
$ svnadmin create $SVNREP_DIR/askeet$ svn mkdir -m "layout creation" file:///$SVNREP_DIR/askeet/trunk file:///$SVNREP_DIR/askeet/tags file:///$SVNREP_DIR/askeet/branches
Для новичков Subversion. Эти две строки создают репозитарий svn. Вторая строка создаёт структуру каталогов для репозитория. Весь основной рабочий код будет храниться в trunk. Tags содержит в себе релизы главных версяи (версия 1, версия 2 и т.д.). Branches содержит код не слишком отличающийся от основного рабочего кода. Очень часто branches сливается обратно с trunk. Например основная trunk разработка может продолжаться до тех пор, пока новая фича не будет полностью протестирована и пофиксена в branch. После завершения тестирования branch сливается в trunk со всеми изменениями ответвлённого кода. SVN даёт мощные инструменты для помощи в этом процессе.
Далее вам нужно сделать первый импорт, минуя временные файлы каталогов cache/ и log/
$ cd /home/sfprojects/askeet$ rm -rf cache/*$ rm -rf log/*$ svn import -m "initial import" . file:///$SVNREP_DIR/askeet/trunk
Для новичков SVN. Четвёртая строка импортирует файл и дериктории "Спросика" в каталог репозитория trunk. Теперь код находится под контролем версий
Теперь код под контролем версий, но код должен быть получен(проверен) для того чтобы SVN мог следить за изменениями. Забэкапьте каталог с проектом и используйте checkout SVN для рабочей версии:
$ cd /home/sfprojects$ mv askeet askeet.origin$ svn co file:///$SVNREP_DIR/askeet/trunk/ askeet/$ ls askeet
Если всё впорядке - можете удалить бэкап. Он нам больше не понадобится:
$ rm -rf askeet.origin
Для новичков SVN. Код из trunk теперь находится в нашей рабочей папке askeet/. Этот код мы будет изменять и улучшать. Со стороны SVN этот код называется "рабочей копией". SVN следит за изменениями в коде при его отсылке (commit)
Осталось настроить лишь один момент. Когда вы отсылаете рабочий код в репозитории, могут так же скопироваться нежелательные файлы, например из папок cache и log вашего проекта. Поэтому нужно указать игнор-лист для данного проекта:
$ cd /home/sfprojects/askeet$ svn propedit svn:ignore cache
Должен запуститься стандартный текстовый редактор. А так мы указываем на файлы и папки, которые будут игнорироваться при коммите:
*
Сохраните и выйдите. Вот и всё.
Повторите процедуру для папки log:
$ svn propedit svn:ignore log
И введите только:
*
Теперь убедитесь что на каталогах стоят верные права, чтобы веб-сервер мог писать в данные каталоги:
$ chmod 777 cache$ chmod 777 log
Пользователи Windows могут использовать замечательный клиент TortoiseSVN для управления репозиторием. Но запомните - никогда не удаляйте каталоги через обозреватель Windows. Используйте меню TortoiseSVN (Rename, Delete), чтобы svn знал, что произошло. Иначе вместо коммита вам придётся делать апдейт и возвращаться к старой версии.
Ещё увидимся!
Ну вот и прошёл час! Мы говорили и говорили... и... ничего нового не показали будующим приверженцам symfony. Но давайте взглянем на задачи второго дня исследователя symfony:
- что делает приложение
- создание модели данны и генерация объекто-ориентированного представления
- работа с модулем
Надеюсь вы ещё вернётесь к нам!
Коментарии:
> мы будем использовать для данных целей Subverstion
ошибка в слове Subversion




