Day1. Practical symfony

Өдөр №1

Төслийн эхлэл

Танилцуулга

symfony framework нь 4 жил гаруй Нээлттэй Кодчлолын төсөл байгаа бөгөөд олон сайхан онцлог болон номнуудын (document) ачаар одоогоор хамгийн их тархацтай PHP Framework-уудын нэг болсон юм.

Энэ ном нь алхам алхамаар тодорхойлолтоос нь хэрэгжүүлэлт хүртэл нь symfony framework –ийг ашиглан вэб орчны програмыг хэрхэн хийхийг тайлбарласан болно.  Энэ нь symfony сурахыг хүсч буй эхлэн суралцагчдад зориулагдсан бөгөөд хэрхэн ажилладаг болон хамгийн сайн вэб хөгжүүлэхэд чиглэгдсэн дасгалуудаас тогтоно.

Тухайн програм нь өөр нэг блог хөдөлгүүр(engine) байж болохоор загварчлагдсан. Гэвч бид хэрэглэгддэг төсөл дээр symfony-ийг ашигламаар байгаа. Гол зорилго нь symfony-г ашиглан бүрэн хэмжээний цогц програм хангамжийг багахан хэмжээний загвар болон зүтгэлээр хөгжүүлэн бий болгоход оршино.

Өөр хийх зүйлүүд маш олон байгаа болохоор төслийнхөө агуулгыг дараа өдөр хүртэл нууц хэвээр үлдээе. Гэсэн ч, Үүнийгээ Jobeet гэж нэрлэцгээе.

Энэ номны сэдэв бүр нэгээс хоёр цаг үргэлжлэх ба энэ нь эхлэлээс нь дуустлаа жинхэнэ вэб сайт кодчиллож сурах боломж завшаан болно. Өдөр бүр шинэ онцлогууд програмд нэмэгдэх ба бид symfony вэб хөгжилтөнд маш сайн дадлагжихаас гадна шинэ symfony функц-лалуудтай танилцах том давуу талуудыг энэ төслөөр олж авна.

Энэ Ном бол Өөр

Тэртээх PHP4 үеийн өдрийг санцгаая. Ah, la Belle Epoque2! (http://en.wikipedia.org/wiki/Belle_Époque) PHP бол вэбд зориулагдсан хамгийн сурахад хялбар анхны хэлнүүдийн нэг.

Гэвч вэб технологи маш хурдацтай хувирч өөрчлөгдөж байгаа өнөө үед, вэб хөгжүүлэгчид хамгийн сүүлийн үеийн хамгийн сайн дадлага, технологоос хоцрохгүй байх хэрэгцээтэй болдог. Сурах хамгийн сайн арга нь мэдээж блог унших, дурайж сурах (tutorials) мөн ном. Бид PHP, Python, Java, Ruby эсвэл Ruby зориулагдсан маш их ном, сургалтууд байдагч зохиогчид зөвхөн л кодынхоо хэсэгхэнийг л жишээ болгон эхлүүлэн бичсэн байдаг.

Магадгүй та доорхи анхааруулгыг уншаар л байдаг байх.

“Жинхэнэ программд баталжуулалт (validation) болон боломжит алдааг хяналтыг ( error handling) нэмэхээ мартаа.

Эсвэл

Жишээн дээр хамгаалалт нь орхигдсон байгаа.

Эсвэл

“Кодоо заавал тест хийж үзээрэй”.

Юу? Эдгээр бол зүгээр л бизнес. Эдгээр орхигдсон зүйлс бол хамгийн чухал кодуудын нэг. Уншигчид юучгүй хоцроно гэсэн үг.  Эдгээрийг авч хэлэлцэхгүйгээр жишээнүүд нь маш бага үр дүнтэй. Та тэдгээрийг ямар ч зүйлд ашиглаж чадахгүй. Энэ бол буруу! Яагаад? Учир нь хамгаалалт (security), баталгаажуулалт (validation), алдаа хяналт (error handling) мөн тест (цөөхөн хэдийг дурьдахад), эдгээр л кодыг зөв эсэхэд анхаарна.

Харин энэ номонд та дээрх зүйлсүүдийг хэзээ ч олж харахгүй ба бид тестлэж, алдаагаа хянаж, кодоо баталгаажуулах ба програмаа хамгаалалттай хөгжүүлж байгаа гэдэгтээ илтгэлтэй байх болно. Энэ нь л яагаад symfony бол “кодууд” мөн хамгийн сайн дадлага, хэрхэн үйдвэрлэлд зориулсан цогц програмыг хөгжүүлэх талаарх юм. Symfony эдгээр зүйлүүдийг нуршихгүйгээр хялбараар кодчилоход бидэнд хэрэгтэй бүхий л багажаар хангадаг учираас бид эдгээрийг чамин аргаар хялбархнаар хийж чадна.

Баталгаажуулалт, алдаа хяналт, хамгаалалт, тест нь symfony-н хамгийн анхны иргэд ба эдгээрийг тайлбарлахад тийм их цаг орохгүй. Энэ бол яагаад framework-ийг “бодит” төсөлд (“real life” project)-д ашиглах зөвхөн нэг л шалтгаана нь.

Энэ номонд гарч буй бүх код бодит амьдралд ашиглаж болохоор код юм. Бид кодын зарим хэсгийг болон бүгдийг нь copy and paste хийхийг дэмжиж байна.

Өнөөдөрт Юу вэ?

Өнөөдөр бид PHP код бичихгүй. Хэдийгээр бид ямар ч код бичихгүйгээр шинээр төсөл эхлэхдээ symfony шиг framework ашиглах нь давуу ямар талтай болохыг суралцаж эхлэх болно. Энэ бүлгийн зорилго нь хөгжүүлэх орчинг суулган, вэб враузер дээр программыг ажиллуулж үзэх юм. Эдгээрт дараах зүйлүүд орно: symfony-ыг суулгах, програмыг(application)-г үүсгэх мөн вэб серверийн тохиргоог хийх.

Энэ ном нь symfony framework-д чиглэгдсэн учираас, таныг PHP5 болон Объект хандалтад програмчлалын тодорхой хэмжээний мэдлэгтэй гэж үзэж байна.

Шаардлагууд (таны өмнө нь мэдсэн байх)

Symfony-г суулгахаас өмнө та өөрийн компьютерт шаардлагтай бүхий л зүйл суусан болон тохиргоо зөв хийгдсэн эсэхийг шалгаж үзэх хэрэгтэй. Энэ бүлгийг та үнэнчээр цаг зарцуулж, шаардлагатай тохиргоог хийж, шалгах алхамуудыг шат дараалан дагавал та цаашид гарч болох бас нэг өдрийг хэмнэж байгаа гэж үзэж болно.

Гуравдагч хэсэгт програм хангамж (Third-Party Software)

Юуны түрүүнд та таны ажиллах орчин вэб хөгжүүлэхэд нийцэх эсэхийг шалгаж үзэх хэрэгтэй.  Хамгийн багадаа таньд вэб сервер( тухайлбал Apache), мэдээллийн хөдөлгүүр (MySQL, PostgreSQL, SQLite, ямар нэгэн PDO/ http://www.php.net/PDO / тохирох мэдээллийн хөдөлгүүр) мөн PHP 5.2.4 –өөс дээшхи хувилбар байх шаардлагатай.

Command Line Interface

Symfony framework нь танд маш их ажлыг автоматаар хийж өгөх command line хэрэгсэлтэй хамт зохиогдсон (багцлагдсан).  Хэрэв та Unix төрлийн OS хэрэглэгч бол, та ямар ч асуудалгүй байх болно. Харин хэрэв та  Windows систем ашигладаг бол, мөн адил асуудалгүй боловч cmd prompt дээр яламгүй хэдэн мөр бичих шаардлагатай.

“Unix shell” коммандууд Windows орчинд ажиллаж боломжтой байдаг. Хэрэв та tar, gzip болон grep хэрэгслүүдийг Windows дээр ашигламаар байвал та Cygwin (http://cygwin.com/) –ийг суулгах боломжтой. Өөр мөн Microsoft-ийн Unix-д зоруиулсан Windows Services-ийг оролдоод үзэх боломжтой.

PHP тохиргоо

PHP тохиргоо нь OS бүрд нэгээс нөгөөд өөр өөр байдаг учираас та symfony-ийг хамгийн багадаа байж болох  тохиргоо хийгдсэн эсэхийг шалгаж үзэх хэрэгтэй.

Эхлээд, та phpinfo() юмуу php –v коммандаар хамгийн багадаа PHP 5.2.4 хувилбар  суугдсан эсэхийг шалгах хэрэгтэй. Вэб-д болон коммандад хоёр өөр PHP хувилбар суулгасан эсэхээ нягтлаарай.

Дараах линк-ээр symfony-ийн тохиргооны скриптийг татаж аваарай.

http://sf-to.org/1.4/check.php

Скриптээ вэбийн root хэсгийн аль нэгэн хэсэгт хадгал.

Дараах командаар скриптийг ажиллуулна.

$ php check_configuration.php

Хэрэв тань ямар нэгэн асуудал гарвал коммандаар гарах хариу нь хэрхэн, яаж засах талаарх зөвлөгөөг өгнө.

Та мөн скриптийг Враузераас шалгаж засах боломжтой. Энэ нь php.ini файл нь дээрх 2 орчинд өөр өөр ялгаатай  тохиргоотой байж болдог учираас юм.

“Шалгасныхаа дараа файлыг устгахаа бүү мартаарай”

Symfony –г суулгах

Төслийн (project) директорыг үүсгэх

Symfony-ийг суулгахаасаа өмнө та Jobeet-тэй холбоотой бүх файлаа хостлох(host) директорыг үүсгэх шаардлагатай.

$ mkdir -p /home/sfprojects/jobeet

$ cd /home/sfprojects/jobeet

Windows-д:

c:\> mkdir c:\development\sfprojects\jobeet

c:\> cd c:\development\sfprojects\jobeet

“Windows-ийн хэрэглэгчиддээ зөвлөж хэлэхэд шинэ төслөө (project) суулгаж, ажиллуулахдаа ямар нэгэн сул мөр агуулаагүй директор замыг сонгох хэрэгтэй. Documents and Settings болон My Documents –аас зайлсхийх хэрэгтэй.”

“Хэрэв та вэб root-д symfony-ийнхоо төслийн директорийг үүсгэвэл ямар нэгэн тохиргоо хийх хэрэггүй болно. Мэдээж, production орчинд зориулж та тохиргоогоо вэб тохиргоо хэсэгт тайлбарласанчлан тохиргоог хийхийг таньд зөвлөж байна.”

Symfony –ийн хувилбараа сонгох

Одоо та symfony-оо суулгах хэрэгтэй. Symfony Framework хэд хэдэн хэсэг хувилбартай учираас та  symfony-ын вэб хуудасны installation (http://www.symfony-project.org/installation) хуудаснаас өөрийн хүсч буй хувилбараа сонгож суулгах боломжтой.

Энэ ном нь таныг symfony 1.3 эсвэл symfony 1.4 хувилбарыг суулгахыг хүсэж байгаа гэж ойлгож байгаа.

Symfony-г суулгах байрлалыг сонгох

Та symfony-г өөрийн машиндаа глобал-аар эсвэл аль нь төсөл (project)-доо хавсаргаж суулгаж болно. Бусад төслүүдээсээ тусдаа биеэ даасан байдлаар үүсгэхийг таньд зөвлөмөөр байна. Мөн таны өмнө нь үүсгэсэн төслийн symfony-ийн хувилбарыг шинэчлэл хийгдэх үед ямар нэгэн байдлаар устгахгүй болохыг хэлмээр байна. Энэ нь юу гэсэн үг вэ гэвэл та шинэчлэл хийх хүртлээ 2 өөр төрлийн symfony-ийн хувилбарыг ашиглах боломжтой юм.

Хамгийн сайн дадал нь ихэнх хүмүүс symfony framework—ийнхоо файлыг lib/vendor директори-д хадгалдаг. Тиймээс энэ директороо үүсгэе:

$ mkdir -p lib/vendor

Symfony-г суулгах

Архивнаас суулгах

Хамгийн хялбар symfony-ыг суулгах арга нь тө өөрийн сонгосон хувилбарын  архивласан файлыг вэб сайтаас татаж авч суулгах. Өөрийн сонгосон хувилбар тухайлбал symfony 1.4-ийн суулгах хуудас рүү ор.

“Source Download” хэсгийн доороос та .tgz  болон .zip архивуудыг олно. Архивласан файлаа татаж аваад сүүлийн үүсгэсэн lib/vendor директори дотроо задлаад нэрийг symfony болгон өөрчил.

$ cd lib/vendor

$ tar zxpf symfony-1.4.0.tgz

$ mv symfony-1.4.0 symfony

$ rm symfony-1.4.0.tgz

Windows zip файлаа задлаад нэрийг нь symfony болгон өөрчилсний дараа директори нь доорхтой ижилхэн болно.

c:\dev\sfprojects\jobeet\lib\vendor\symfony.

Дэд хувилбараас нь суулгах (recommended)

Хэрэв та дэд хувилбар ашигладаг бол svn:externals шинж чанарыг ашиглаж symfony-ийг lib/vendor/ директорид суулгах нь илүү дээр.

$ svn pe svn:externals lib/vendor/

Энэ бүлгийн эцэст өөрийн төслөө Дэд хувилбартаа (Subversion) хэрхэн импорт хийхийг тайлбарласан байгаа.

Хэрэв бүх зүйл сайхан болж байвал, энэ комманд нэмэлт Subversion source-ын тохиргоо хийх боломжийг өгч таны дуртай эдиторт ажиллана.

Харин Windows-д та TortoiseSVN (http://tortoisesvn.net/)- г ашиглан console хэрэглэх шаардлагагүйгээр бүгдийг хийх боломжтой.

Суулгасанаа баталгаажуулах

Одоо symfony суучихсан учираас, symfony –ын коммандын хэрэгслийг ашиглан бүгд ажиллаж байгаа эсэхийг ямар хувилбар суусан байгааг шалгая.

$ cd ../..

$ php lib/vendor/symfony/data/bin/symfony –V

Windows-д:

c:\> cd ..\..

c:\> php lib\vendor\symfony\data\bin\symfony –V

Энэ коммандийн хэрэгсэл танд юу хийж өгч чадах талаар та илүү мэдмээр байвал symfony гэж бичээд боломжит options болон task-уудыг харж болно.

$ php lib/vendor/symfony/data/bin/symfony

Windows-д:

c:\> php lib\vendor\symfony\data\bin\symfony

Symfony –ын коммандын хэрэгсэл (command line) нь хөгжүүлэгч нарын хамгийн сайн найз бөгөөд өдөр бүрийн гүйцэтгэх ажлыг тань хялбарчилах cache цэвэрлэх, код боловсруулах зэрэг маш олон хэрэгслүүдийг гүйцэтгэдэг.

Project Setup

Symfony-д ижилхэн өгөгдлийн model-уудад дамжуулагдаар дамжигддаг application-уудыг project болгож груплдэг. Ихэнх төслүүддээ та 2 өөр төрлийн frontend ба backend гэх application-уудтай байна:

Project үүсгэх

sfprojects/jobeet – хаягнаас symfony-ын  generate: project task-ийг ажиллуулж symfony-ийн project-ийг үүсгэе.

$ php lib/vendor/symfony/data/bin/symfony generate:project jobeet

On Windows:

c:\> php lib\vendor\symfony\data\bin\symfony generate:project jobeet

generate: project task нь symfony project-д шаардлагатай бүхий л default хавтасний бүтцийг үүсгэдэг.

Directory Description

apps/ Бүх төслийн тань application-ууд байрлана.

cache/ framework-оор cache-хийгдсэн файлууд

config/ төслийн тохиргооны файлууд

lib/ Төслийн library-ууд болон классууд

log/ framework—ийн log файлууд

plugins/ суусан plugin-ууд

test/ unit болон functional тест файлууд

web/ Вэбийн root директори (доорхийг хар)

Яагаад symfony маш их хэмжээний файлуудыг үүсгэдэг вэ? Full-Stack фрамеворкийг ашиглах нэг давуу тал нь та өөрийн хөгжүүлэх явцаа стандартжуулах юм. Symfony-ийг default бүтцийг ачаар symfony-ийн мэдлэгтэй дурын хөгжүүлэгч өөрийн project-оо засвар хийж, тохируулах боломжтой. Минутын дотор тэр кодоо хувааж, алдаагаа засаж, шинэ боломжуудыг нэмж чаддаг.

generate:project task мөн symfony-ийн shortcut-ийг root хавтаст үүсгэдэг бөгөөд task-ийг ажиллуулах явцад бичих шаардлагатай кодчлолыг багасгаж өгдөг.

Одооноос эхлээд та symfony-ийг бүтэн замыг бичихгүйгээр shortcut хувилбарыг ашиглах боломжтой.

Application үүсгэх

Одоо generate:app task-ийг ажиллуулж frontend application-ийг үүсгэе!

$ php symfony generate:app frontend

———————————————————————————————————————

Symfony-ийн shortcut нь одоо ажиллах учираа, Unix-ийн хэрэглэгчид ‘php symfony’ гэсэн бичлэгүүдээ ‘./symfony’ болгон засах боломжтой.

Windows-д та symfony.bat файлыг өөрийн төслийн директори-д хуулаад ‘php symfony’-ийн оронд дан symfony –г ашиглаж болно.

c:\> copy lib\vendor\symfony\data\bin\symfony.bat .

———————————————————————————————————-

Application-ны нэр нь аргументаар өгөгдсөнөөр, generate:app task application-нд шаардлагатй default хавтасын бүтцийг apps/frontend директори-д үүсгэдэг.

Directory Description

config/ Application-ны тохиргооны файлууд

lib/ Application-ны library болон классууд

modules/ application-ны код (MVC)

templates/ глобал темплате файлууд

Хамгаалалт

Ерөнхийдөө generate:app task нь вэб-ын орчинд хамгийн их тархсан 2 төрлийн аюулаас хамгаалагдсан байдаг. Тиймээ, symfony нь бидний өмнөөс автоматаар хамгаалалтыг авдаг.

XSS дайралтаас хамгаалж гаралтын хамгаалалт(output escaping) идэвхждэг, CSRF дайралтаас хамгаалж random хамгаалалт хийгддэг.

Мэдээж, та дараах сонголтуудын ачаар өөрөө тохируулах боломжтой.

• –escaping-strategy: Идэвхжүүлэх эсвэл унтраах output escaping

• –csrf-secret: Формын session-ийн токенийг идэвхжүүлэх

Хэрэв та XSS (http://en.wikipedia.org/wiki/Cross-site_scripting)болон CSRF (http://en.wikipedia.org/wiki/CSRF) талаар мэдлэггүй бол, эдгээрийн талаар судлаж, олж мэдэхэд цаг зарцуулаарай.

Директори-ийн бүтцийн тохиргоо

Шинээр үүсгэсэн төсөлдөө хандахаасаа өмнө та вэб сервер тань хандахж өөрчлөх боломжтой байх cache болон log директоруудын тохиромжитой түвшиний зөвшөөрөл (permission)-г нь тавьж өгөх шаадлагатай.

$ chmod 777 cache/ log/

—————————————————————————————–

SCM хэрэглэгчдэд зориулсан зөвлөгөө

Symfony зөвхөн тухайн төслийн cache/ болон log/ 2 л директорид бичигддэг. Энэ 2ын контент нь таны SCM-с ignore хийгдсэн байх шаардлагатай (хэрэв та Subversion хэрэглэдэг бол тухайлбал svn:ignore гэж бичнэ).

Вэб серверийн тохиргоо: муу арга

Хэрэв та төслөө вэб root-ийнхээ аль нэг хэсэгт үүсгэсэн бол та аль хэдийн враузераараа хандах боломжтой.

Мэдээж ингэсэн тохиолдолд ямар нэгэн тохиргоо байхгүй ба та config/database.yml файл руу браузераараа хандах боломжтой болох учираас хэр муу үр дагавар байгааг та ойлгох бизээ. Хэрэв хэрэглэгч таны вэб сайт symfony дээр хийгдсэнийг мэдвэл, тэр таны маш их чухал файлууд руу хандах боломжтой болно гэсэн үг.

Хэзээ ч жинхэнэ сервер дээр ингэж суулгаж болохгүй. Та дараагийн хэсгийн уншиж хэрхэн вэб серверт тохируулж тохиргоог хийхийг сурна.

Вэб серверийн тохиргоо: Хамгаалалттай арга

Хамгийн сайн дадал бол зөвхөн вэб браузераар хандаж болох бүхий л файлуудаа жишээ нь: javascript, stylesheets болон зурагнуудаа вэб root директори-тоо байрлуулах арга юм. Defaul- аар нь танд л гэж зөвлөхөд symfony төслийнхөө web дэд директори дотроо хадгалаарай.

Хэрэв та энэ директори руугаа орвол та вэб-ийн нэмэгдэл(css болон зурагнууд) болон 2 төрлийн нүүрний удирдлагын файлуудыг (front controller) харна. Front controller бол вэб директори дотор байрлах шаардлагатай зөвхөн php файл. Бусад бүх php файлууд враузераар хандах боломжгүйгээр нуугдсан байна. Энэ нь хамгаалалтын хувьд нилээд сайн болно.

Вэб серверийн тохиргоо:

Одоо Apache-ийн тохиргоог хаанаас ч хандах боломжтой болгох үүднээс өөрчлөе.

httpd.conf тохиргооны файлыг нээгээд доорх тохиргоог хамгийн доор нь нэмнэ.

# Be sure to only have this line once in your configuration

NameVirtualHost 127.0.0.1:8080

# This is the configuration for your project

Listen 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>

DocumentRoot “/home/sfprojects/jobeet/web&#8221;

DirectoryIndex index.php

<Directory “/home/sfprojects/jobeet/web&#8221;>

AllowOverride All

Allow from All

</Directory>

Alias /sf /home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf

<Directory “/home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf&#8221;>

AllowOverride All

Allow from All

</Directory>

</VirtualHost>

——————————————————————

/sf alias, нь default symfony хуудас болон вэб засварын toolbar (Web Debug Toolbar)-ын зураг болон javascript-ийн файлуудтай холбогдох замыг заадаг.

Windows-д Alias мөрийг дараах байдлаар өөрчилөх шаардлагатай.

Alias /sf “c:\dev\sfprojects\jobeet\lib\vendor\symfony\data\web\sf&#8221;

/home/sfprojects/jobeet/web гэсэн мөр нь  мөн дараах байдлаар өөрчлөгдөнө.

c:\dev\sfprojects\jobeet\web

энэ тохиргоо нь Apache listen-ийг таны компютерт порт 8080 болгож, вэб сайт нь дараах URL-аар холбогдоно.

http://localhost:8080/

Та 8080 гэснийг дурын дугаараар сольж болох ба админы зөвшөөрөл шаардагддаггүй 1024-өөс дээш тоо байж болно.

Dedicated Домайн нэрийн тохиргоо

Хэрэв та компьютертээ админ эрхээр хандаж байгаа бол шинэ төсөл үүсгэх болгондоо шинээр порт нэмсэний оронд виртаул хост үүсгэсэн нь илүү дээр юм. Порт сонгож, Listen-ийн мөр нэмэхийн оронд та домайн нэрээ сонгон (тухайлбал ардаа .localhost гэж залгасан жихэнэ домайн нэр), ServerName мөрийг нэмэх нь дээр.

# энэ бол таны төслийн тохиргоо

<VirtualHost 127.0.0.1:80>

ServerName http://www.jobeet.com.localhost

<!—өмнөх тохиргоотой ижилхэн –>

</VirtualHost>

www.jobeet.com.localhost гэж Apache-д ашиглагдах домайн нэр local-р зарлагдах хэрэгтэй.  Хэрэв та Linux дээр ажилладаг бол, /etc/hosts –д байрлана. Хэрэв та Windows XP дээр ажилладаг бол, энэ файл C:\WINDOWS\system32\drivers\etc\ гэсэн директорид байрлана.

Дараах мөрийг нэмнэ үү

127.0.0.1 www.jobeet.com.localhost

Шинэ тохиргоог шалгах

Apache –аа restart хийж, браузераар шинэ файлдаа өмнө нь хийсэн Apache-ийн тохиргооноосоо хамаарч http://localhost:8080/index.php/,Эсвэл

http://www.jobeet.com.localhost/index.php/ гэсэн хаягаар хандаж шалгана уу.

——————————

Хэрэв та Apache-ийн mod_rewrite модуль суулгасан бол та index.php –ийг URL-ийн хэсгээс устгаж болно. web/.httaccess файлын ачаар ингэх боломжтой байдаг.

Та мөн хөгжүүлэх орчинг мөн хандаж харах боломжтой(дараагийн хэсэгт хөгжүүлэх орчингийн талаар илүү үзнэ) ба дараах URL-ийг бичнэ үү.

http://www.jobeet.com.localhost/frontend_dev.php/

Таны хийсэн sf/alias тохиргоо зөв бол жижиг icon-ыг агуулсан вэб тохиргооны toolbar баруун дээд буланд харагдана.

Хэрэв та windows орчны IIS сервер дээр ажилладаг бол setup нь арай өөр ба холбогдох жишээнээс тохиргоог олох боломжтой.

Орчин (Environment)

Хэрэв та web/ директори- руу орж үзсэн бол та  index.php болон frontend_dev.php гэсэн 2 ширхэг php файл байгааг харсан байх. Эдгээр файлуудыг front controllers гэж нэрлэдэг бөгөөд бүх application руу хандсан хүсэлтүүд тэдгээрээр дамжиж явагддаг. Гэвч яагаад бид заавал 2 front controller-уудтай байх хэрэгтэй гэж?

Хоёулаа ижилхэн application-ыг зааж байгаа боловч өөр өөр орчинд зориулагдсан. Хэрэв та шууд серверын орчинг вэб хөгжүүлэгч л биш л бол танд хэд хэдэн орчинд ажиллах шаардлагатай байдаг.

• The development environment: Энэ орчин нь вэб хөгжүүлэгч нарт зориулагдсан бөгөөд тест хийх, алдаа (bugs)-ын мэдээлэл зэрэг давуу талуудтай.

• The test environment: Энэ орчинг нь автоматаар application-г тест хийхэд зориулагдсан.

• The staging environment: Энэ орчин нь хэрэглэгч application-г шалгахад зориулагдсан.

• The production environment: Энэ орчин нь эцсийн хэрэглэгчидэд зориулагдсан.

Юу нь орчинг онцгой, цорын ганц болгодог вэ? Тухайлбал хөгжүүлэлтийн орчин (development environment) нь, application-нь алдааг хялбар засахын тулд хүсэлтүүдийн нарийн мэдээлийг лог хийх шаардлагатай, харин өөрчлөлт орсон кодууд зөв ажиллаж байгааг хянахын тулд cache систем идэвхгүй байх шаардлагатай. Тиймээс хөгжүүлэлтийн орчин нь хөгжүүлэгчид зориулж хийгдсэн байх ёстой. Хамгийн сайхан жишээ бол exception гарч ирэх үе юм.  Хөгжүүлэгчид алдааг маш хурдан олоход тусалж, symfony браузер дээр сүүлийн хүсэлтүүдийг агуулсан бүх exception-г мэдээлэлтэй нь хамт харуулдаг.

Харин Production environment орчины үед cache –ын давхарга идэвхичцэн байх ёстой байдаг ба мэдээж application бүх нарийн алдааны оронд ердийн алдааны мессежийг харуулдаг. Тиймээс production environment орчин нь ажиллагаа болон хэрэглэгчдэд зориулж сайжруулагддаг.

Хэрэв та front controller файлуудыг нээвэл, контентууд нь хөгжүүлэх үеийн (environment) тохиргооноос бусад нь ижилхэн байгааг олж харна.

// web/index.php

<?php

require_once(dirname(__FILE__).’/../config/

ProjectConfiguration.class.php’);

$configuration =

ProjectConfiguration::getApplicationConfiguration(‘frontend’, ‘prod’,

false);

sfContext::createInstance($configuration)->dispatch();

Вэб debug toolbar нь мөн орчны хэрэглээний бас нэгэн онцлог жишээ бөгөөд зөвхөн хөгжүүлэх үеийн орчингийн бүх хуудсанд харагдах бөгөөд таньд tab бүрд өөр өөр маш олон мэдээллийг агуулсан холболтыг харуулдаг. Тухайлбал тухайн үеийн application-ны тохиргоо, хүсэлтүүдийн log-ууд, өгөгдлийн баазад хийгдсэн SQL хүсэлтүүд, санах ойн мэдээлэл, хугацааны мэдээлэл зэрэг орно.

Subversion

Вэб application хөгжүүлэхдээ source version control-ыг ашиглах нь маш сайн дадлага байдаг. Source version control-ыг ашигласнаар бидэнд:

• Итгэлтэйгээр ажиллах

• өөрчлөлтөнд ямар нэгэн алдаа гарвал өмнөх хувилбараа сэргээх

• нэг төсөлд хэд хэдэн хүн ажиллаж болох

• амжилттай хийгддсэн application-руугаа хандах зэрэг боломжуудыг олгодог.

Энэ хэсэгт бид Subversion (http://subversion.tigris.org/)-г symfony-той цуг хэрхэн ашиглахыг тайлбарлана. Хэрэв та ямар нэгэн source control tool-ыг ашигладаг бол одоо тайлбарлах гэж байгаа зүйл таньд маш амархан санагдана.

Бид таныг Subversion сервертэйгээ via HTTP холболтоор холбогдчихсон байгаа гэж үзлээ.

———————

Хэрэв та Subversion сервер байхгүй бол та Google Code (http://code.google.com/hosting/)  –ын үнэгүй repository үүсгэж болно. Эсвэл google-д “free subversion repository” гэж бичээд хайхаар маш олон сонголтууд гарч ирнэ.

Эхлээд repository сервер дээрээ Jobeet-доо зориулж repository үүсгэе

$ svnadmin create /path/to/jobeet/repository

Өөрийн комьютер дээрээ, үндсэн директорийн бүтцийг үүсгэ.

$ svn mkdir -m “created default directory structure&#8221;

http://svn.example.com/jobeet/trunk

http://svn.example.com/jobeet/tags

http://svn.example.com/jobeet/branches

хоосон trunk/ гэсэн директори байна уу эсэхийг шалга:

$ cd /home/sfprojects/jobeet

$ svn co http://svn.example.com/jobeet/trunk/ .

Тэгээд, repository-доо  cache/ болон log/ -г хийхгүй учираас директоруудын контентуудыг устга.

$ rm -rf cache/* log/*

Одоо  веб сервер тань cache болон logs директорууд дээр файл бичиж боломжтой болгох үүднээс тэдгээрийн permission-г нь тавьж өгнө.

$ chmod 777 cache/ log/

Одоо бүх файл болон директоруудаа импорт хий.

$ svn add *

Cache/ болон log/ директори-д ямар нэгэн өөрчлөлт хийхгүй учираас тэдгээрийг татгалзах лист-д оруулах хэрэгтэй.

$ svn propedit svn:ignore cache

SVN-д зориулсан анхны текст эдитор нь ажиллах шаардлагатай.  Subversion нь энэ директори дотор бүх контентыг татгалзах ёстой.

*

Хадгалаад, гарна. Ингээд дууслаа.

log/ директори-д процессийг давтана.

$ svn propedit svn:ignore log

Enter: дарна.

*

Эцэст нь, repository өөрчлөлтүүддээ санамж хийж үлдээнэ.

$ svn import -m “made the initial import&#8221; .

http://svn.example.com/jobeet/trunk

————–

Windows-ийн хэрэглэгчид TortoiseSVN client(http://tortoisesvn.tigris.org/) – ыг ашиглан subversion repository-оо үүсгэх боломжтой.

Маргааш болтол баяртай.

Өнөөдөртөө ингээд боллоо. Бид symfony-ийн талаар ярьж эхлээгүй байгаа боловч, бид хөгжүүлэх орчингоо бэлдчихлээ, мөн вэб хөгжүүлэх хамгийн сайн дадалын талаар ярилцсан, кодоо бичээд мөн эхэлцэн. Маргааш бид application нь юу хийж чаддагыг харах бөгөөд Jobeet-г гүйцэтгэхэд шаардагдах шаардлагуудыг тодорхойлно.

Орчуулсан. Г.Эрхэмбаяр

Эх хувь: http://www.symfony-project.org/jobeet/1_4/Doctrine/en/01

Published by

Think!

Web developer. Open source enthusiast.

49 thoughts on “Day1. Practical symfony”

    1. hvmvvsee DATA STRUCTURE гэж яг юуны талаарх хичээл вэ хариулаж туё болох хүн байна уу? help me !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  1. Snu? check_configuration.php-g hana hadgalah yum be windows der? web.in root heseg gdg ni wamp/www/ dotor webin havtas munv? ene havtasand higed “$ php check_configuration.php&#8221; command bichiher ene file oldohq bna gd bnaa, ene talar delgerenq helj ugch tuslach

    1. sain u, Odnoo.
      root gdeg ni wamp/www mun mun.
      tegeheer http://sf-to.org/1.4/check.php file-aa tataj awaad cmd.exe-r(command line)-a neegeed cd c:\wampp\www gej orood shuud php check_configuration.php geheer ajillah yostoi. Herew ene command bichihed aldaa garwal windows-iinhoo environment variable hesegt php-iinhee zamiig zaaj ugnu.
      jishee ni:
      My Computer-iinhoo Properties ruu orood Advanced tab-iin Environment Variables gsen button-g darna. System variables hesgiin PATH gedgiin hamgiin ardaas ni zalgaad ;C:\wamp\bin\php\php5.2.5;C:\wamp\bin\mysql\mysql5.0.45\bin (chinii MySQL , PHP file-uudiing zamaa tseg taslalaar tusgaarlaj oruulj ugnu).

      wamp-d yaj suulgah talaar:

      Symfony Installation

  2. File does not exist: C:/webserver/Apache2/htdocs/favicon.ico. aldaa garaad ni apache-n tohirgoo hiihed ene zaavar ayg ajillaj bsnu te?.Zunduu l uzlee eruusuu bolohgui yum.

  3. neg sonin asuudal. 😀 . buh yum ni bolj bna . Symfony Project Created. ene hureed ene huudasiig hartal yamar css gui bhiin. holbootoi css iig ni uzlee. 0kb bh yum ene zowvv? end yamar negen asuudal bgaa bolow uu?

    1. Symfony Project Created gej garch bgaa huudasnii chin css garch irehgui bgaa bol chinii apache-iin Virtual host dree undsen symfony-iinh web folder buruu zaagdsan gsen ug.
      tegeheer alias-iin gdegt /project-iin zam/lib/symfony/data/bin/web gsen folder-g zaaj uguud server-ee restart hiigeed ajilluul. tegeed l boloo.

  4. Баярлалаа. Би Virtual Host үүсгээгүй. localhost/jobeet/web/ гээд шууд дуудсын.
    Олон түмэнд хэрэгтэй зүйл хийж байгаад чинь баярлалаа.
    Би Zend ийн Documentation – ийг яг ингэж орчуулах гэж байгаад больцон. Миний English хүрэхгүй юм билээ. ККК. Аль 9н сард кккк.

  5. Сайн уу. Надад нэг асуудал гараад.
    http://localhost:8080/index.php/ гэж орохоор Unable to connect гээд байх юм.
    C:\wamp\bin\apache\Apache2.2.17\conf\httpd.conf гэдэг file-д доорх шиг бичиж өгөх нь зөв үү.
    # Be sure to only have this line once in your configuration
    NameVirtualHost 127.0.0.1:8080
    # This is the configuration for your project
    Listen 127.0.0.1:8080

    DocumentRoot “c:\development\sfprojects\jobeet\web”
    DirectoryIndex index.php

    AllowOverride All
    Allow from All

    Alias /sf c:\development\sfprojects\jobeet\lib\vendor\symfony\data\web\sf

    AllowOverride All
    Allow from All

    Тэгээд бас “Dedicated Домайн нэрийн тохиргоо&#8221; гэдэг хэсгийг орхичихож болох уу.

    1. Сайн уу.
      wamp\bin\apache\apache2.2.8\conf\extra\httpd-vhosts.conf гэсэн файлын доор дээрх тохиргоогоо хуулна.
      Тэгээд C:/windows/system32/drivers/etc/hosts gsen file-iig edit hiigeed uuriinhuu host-iin neriig localhost-iin door nemj ugch bolno.
      Ингэснээр чи localhost гэж бичихийн оронд өөрийн үүсгэсэн (example.com) host-оороо орох боломжтой болно. Асуух зүйл байвал msgrt-r asuuj bolno.

  6. Дээрх сэтгэгдэл дээр тагтай хэсгүүдийг нь аваад хаячихаж:
    # Be sure to only have this line once in your configuration
    NameVirtualHost 127.0.0.1:8080
    # This is the configuration for your project
    Listen 127.0.0.1:8080
    таг VirtualHost 127.0.0.1:8080 таг
    DocumentRoot “c:\development\sfprojects\jobeet\web”
    DirectoryIndex index.php
    таг Directory “c:\development\sfprojects\jobeet\web” таг
    AllowOverride All
    Allow from All
    таг Directory таг
    Alias /sf c:\development\sfprojects\jobeet\lib\vendor\symfony\data\web\sf
    таг Directory “c:\development\sfprojects\jobeet\lib\vendor\symfony\data\web\sf” таг
    AllowOverride All
    Allow from All
    таг Directory таг
    таг VirtualHost таг

  7. sain u ho, virtual host uusgecheed oor hed heden project uusgeed duudhaar neg l virtual host-ooroo duudaad bna… yaaj olon project-g tus tusad ni virtual host-toi bolgoh ve?

  8. сайн уу? их сайхан хичээл байна. Надаа нэг асуудал гарлаа. Бүх юм дуусаад харин index.php хуудас маань ажиллахгүй байх юм харин frontend_dev.php хуудас бол зүгээр ажиллаж байна энэ юуных вэ? index.php хуудсыг нээхээр

    #!/usr/bin/env xdg-open
    [Desktop Entry]
    Version=1.0
    Name=index.php
    Comment=Open ‘/home/sfprojects/jobeet/lib/vendor/symfony/web/index.php’
    Icon=application-x-php
    Name[en_US]=index.php
    Comment[en_US]=Open ‘/home/sfprojects/jobeet/lib/vendor/symfony/web/index.php’
    Icon[en_US]=application-x-php
    URL=file:///home/sfprojects/jobeet/lib/vendor/symfony/web/index.php
    Type=Link

    ийм юм байх юм. Би UBUNTU хэргэлдэг.

  9. project vvsgej chaddaggui tuslaach //sfprojects/jobeet – хаягнаас symfony-ын generate: project task-ийг ажиллуулж symfony-ийн project-ийг үүсгэе.// ene uguulberiin sain oidguiee

    pls

    1. tegeheer chi C:\sfproject/myproject gsen folder uusgesen bol, tataj awsan symfony-iinhaa symfony folder-g C:\sfproject/myproject/lib/vendor dotor hiigeed (symfony-1.4.13 gsniig symfony bolgono).
      command line-aasaa myproject dotroo orood php vendor/symfony/data/bin/symfony generate:project myproject geed uusgene. ingeed ch bolohgui bol heleerei

  10. ** Mandatory requirements **

    OK PHP version is at least 5.2.4

    ** Optional checks **

    OK PDO is installed
    OK PDO has some drivers installed: mysql
    OK PHP-XML module is installed
    [[WARNING]] XSL module is installed: FAILED
    *** Install and enable the XSL module (recommended for Propel) ***
    OK The token_get_all() function is available
    OK The mb_strlen() function is available
    OK The iconv() function is available
    OK The utf8_decode() is available
    OK The posix_isatty() is available
    [[WARNING]] A PHP accelerator is installed: FAILED
    *** Install a PHP accelerator like APC (highly recommended) ***
    [[WARNING]] php.ini has short_open_tag set to off: FAILED
    *** Set it to off in php.ini ***
    OK php.ini has magic_quotes_gpc set to off
    OK php.ini has register_globals set to off
    OK php.ini has session.auto_start set to off
    OK PHP version is not 5.2.9
    ene aldag yaj zasahyy shiner wamp sylgasan jini blhgvi bna

  11. ********************************
    * *
    * symfony requirements check *
    * *
    ********************************

    php.ini used by PHP: C:\wamp\bin\apache\Apache2.2.17\bin\php.ini

    ** Mandatory requirements **

    OK PHP version is at least 5.2.4 (5.3.5)

    ** Optional checks **

    OK PDO is installed
    OK PDO has some drivers installed: mysql, sqlite
    OK PHP-XML module is installed
    [[WARNING]] XSL module is installed: FAILED
    *** Install and enable the XSL module (recommended for Propel) ***
    OK The token_get_all() function is available
    OK The mb_strlen() function is available
    OK The iconv() function is available
    OK The utf8_decode() is available
    [[WARNING]] The posix_isatty() is available: FAILED
    *** Install and enable the php_posix extension (used to colorized the CLI output) ***
    [[WARNING]] A PHP accelerator is installed: FAILED
    *** Install a PHP accelerator like APC (highly recommended) ***
    OK php.ini has short_open_tag set to off
    OK php.ini has magic_quotes_gpc set to off
    OK php.ini has register_globals set to off
    OK php.ini has session.auto_start set to off
    OK PHP version is not 5.2.9 wampaa ustgad dahiad sylgasan BAS DAHIAD alda zagad bhin

  12. Sain uu neg jijikeen ym asuuyaa
    Buh zuilee bicheed OK bolchihsoon tegsen miniih deer shig Symfony Project Created gesen ni background ni tsagaanaar garsanbhiin neeh goy naad huren bor backgroundtai ug ni bh ystoi biz de

  13. alias нь буруу байна гэсэн үг. сервер (Apache or nginx ..).
    path нь:
    Alias /sf /home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf

    Windows бол D:\sfproject/myproject/lib/vendor/symfony/data/web/sf иймэрхүү байна.

      1. Bayarlalaa. Zuvlusnuur chine git suulgalaa odoo yamar neg tohirgoo hiih hereggui gesen uguu shud l ashiglahad bolhu

  14. Bolno bolno, Tuushtai udur bolgon hiigeed ywbal udahgui l baga bagaar medeed ehelnee. Hamgiin gol ni sain oroldoj, nuhaarai. Tegeed buur bolmoorgui bol asuugaarai,
    Bi uuruunhuu chadliinhaa hereer tuslahiig bodnoo,

    Amjilt!

Сэтгэгдэл бичих