Өдөр №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”
DirectoryIndex index.php
<Directory “/home/sfprojects/jobeet/web”>
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”>
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”
/home/sfprojects/jobeet/web гэсэн мөр нь мөн дараах байдлаар өөрчлөгдөнө.
c:\dev\sfprojects\jobeet\web
энэ тохиргоо нь Apache listen-ийг таны компютерт порт 8080 болгож, вэб сайт нь дараах URL-аар холбогдоно.
Та 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”
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” .
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
bayrlalaa ih goy zuil hiij bna shuu
Thanks!, zaw garahaaraa daraagiin hicheeliig ni gyalz tawinaa.
hvmvvsee DATA STRUCTURE гэж яг юуны талаарх хичээл вэ хариулаж туё болох хүн байна уу? help me !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
үнэхээр баярлалаа дараагийн хичээлийн дэсэн ядан хүлээж байя 😀
дэд хувиалбар гэж юу бэ?
Subversion гэдгийг дэд хувилбар гээд орчуулцийн.
Эдгээр сайтуудад тайлбар нь байгаа.
1, http://www.mnbsd.org/article.php?story=20050609102343251&query=%25D1%2584%25D0%25B0%25D0%25B9%25D0%25BB%25D1%258B%25D0%25BD
2,http://zaluus.cc/video/subversion-guru-m01s05-windows-installation_9:27__Qwo0ffk4FRc.html
3, http://bookmark.mn/item/1451
ёоооооо үнэн гоё цаашаа хийгээд байгаарай
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” command bichiher ene file oldohq bna gd bnaa, ene talar delgerenq helj ugch tuslach
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:
Win deer zaaval http://cygwin.com/ orj tataj suulgah yumu?.
cygwin-g tataj suulgah albagui e.
Herev chi Unix turliin OS ashigladag bol cygwin-ni windows dr Unix-in code bichdeg program.
Windows-bol hereggui de.
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.
Их баярлалаа эх хэлдээрэй унших их амар, хялбар байна. Амжилт хүсье
Mash ih bayrlalaa
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?
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.
Баярлалаа. Би Virtual Host үүсгээгүй. localhost/jobeet/web/ гээд шууд дуудсын.
Олон түмэнд хэрэгтэй зүйл хийж байгаад чинь баярлалаа.
Би Zend ийн Documentation – ийг яг ингэж орчуулах гэж байгаад больцон. Миний English хүрэхгүй юм билээ. ККК. Аль 9н сард кккк.
Сайн уу. Надад нэг асуудал гараад.
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 Домайн нэрийн тохиргоо” гэдэг хэсгийг орхичихож болох уу.
Сайн уу.
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.
Дээрх сэтгэгдэл дээр тагтай хэсгүүдийг нь аваад хаячихаж:
# 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 таг
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?
httpd-vhosts.conf файлд
NameVirtualHost *:80 гээд болно.
template оруулсан чинь зураг нь орж ирдэггүй ээ яах вэ
зурагны чинь зам нь зөв байгаа эсэхээ шалга. Асуултаа тодруулахгүй бол ойлгомжгүй байна шүү!
сайн уу? их сайхан хичээл байна. Надаа нэг асуудал гарлаа. Бүх юм дуусаад харин 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 хэргэлдэг.
index.php chin buruu bna, frontend_dev chin zuw bol teriigee prod false bolgoo l boloo
project vvsgej chaddaggui tuslaach //sfprojects/jobeet – хаягнаас symfony-ын generate: project task-ийг ажиллуулж symfony-ийн project-ийг үүсгэе.// ene uguulberiin sain oidguiee
pls
undsen symfony-iinhoo lib tataj awch lib/vendor dotor huulaad, project-iin undsen hawtasnaas php lib/vendor/symfony/data/bin/symfony generate:project myproject gej uusgene.
you must be in a symfony project directory gesen yum garch ireed unen shanalgajiinaa
яахаар тэгж гарч ирээд байгаан?
A symfony project already exists in this directory (C:\). project ni inged bhin yaj tohirulahyy
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
** 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
серверийн чинь PHP-ын тохиргоог нь л харуулж байнаа. Mandatory-ууд л бүгд OK, болбол зүгээр. php.ini файлаа тохируулчих.
********************************
* *
* 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
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
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 иймэрхүү байна.
Hostod share hiihdee yamar tohirgoo hiih ve ???? heleed ogooch
shared host -д deplay хийх гэж үү?
http://trac.symfony-project.org/wiki/Deploying1.0ToASharedHosthttps://erheme318.wordpress.com/wp-admin/edit-comments.php#comments-form
Hey symfony hiisen projectoo yaj host-d share hiih ve .
wamp der simfonygoo suulgatsan l daa tgeed tortoise svn ee yaj suulgah vee editor cygwin suulgatsan
http://tortoisesvn.tigris.org/ endees tataad avaarai. Gehdee SVN ni symfony-toi hamaagui, Төслөө хөгжүүлэхэд ашиглагддаг хувилбар удирдах систем. Одоо ерөнхийдөө SVN-ын оронд Git-ыг түлхүү ашиглаж байгаа.
За амжилт хүсье!
Bayarlalaa. Zuvlusnuur chine git suulgalaa odoo yamar neg tohirgoo hiih hereggui gesen uguu shud l ashiglahad bolhu
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!
posix_issaty()-iig yaj available bolgoh ve?
Herev chi windows ashiglaj bgaa bol – posix function-uudiig windows demjdeggui ym bna. harin *nix suuritai OS ashiglaj bgaa bol yamar negen tohirgooguigeer bolomjtoi ym bna.
pear gej ern u umbe
PHP -ын нэмэлт хэрэгслүүд болон апп-уудын нэгдсэн сан.
miniix My First PHP script gej garaad bxiin yamar ch css nvvr xuudas ntr baixgvi day 1-iig duuraij xiisiin symfony version 1.4.11 yum bn