Askeet. День первый. Начало проекта

Приветствуем!

Хотите что-то написать?

Нужно назвать себя.

Если вы пришли в первый раз,
то нужно зарегистрироваться.

Читайте нас в:

Блог на ya.ru
Блог на Деловом квартале
Блог на Twitter.om
Блог на Livejournal.com
23 декабря

Переводы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:

  • что делает приложение
  • создание модели данны и генерация объекто-ориентированного представления
  • работа с модулем

Надеюсь вы ещё вернётесь к нам!

Коментарии:

Kurt 2008-10-17 21:20:29

> мы будем использовать для данных целей Subverstion
ошибка в слове Subversion

ответить

Свой комментарий: