Practical symfony 开始这个项目
2010-01-25 09:22:43   来源:   评论:0 点击:

开始一个专案

挑戰

這個symfony 耶誕節日曆是一系列24堂的課程,每天印出一份,從12月1日到耶誕節。每一天都有新的課程。每一個課約需1小時,然後也要能練習做出一個符合web 2.0的應用程式,從A到Z。直到耶誕節,這最終的程式就能上線,當然是開放原始碼的,這程式是可用的,有趣的,有用的,有樂趣的。

24小時約等於一天,我們也認為一個開發者也僅需要一天來學習它。每一天,有新的特性會加入這個應用程式裏,在開發的過程中,我們也會展示如何使用SYMYONY的功能,及美好的實作經驗。每一天,你將體驗到,用SYMFONY開發是快又有效的作法,然後你會想要知道更多。

不要被挑戰的字眼嚇到了,因為原作者們也是懶傢伙,在第21天-winter time,我們也沒安排,這也是個特色,讓社群 能自己加上一些功能,所以沒安排(目前的21天課程是搜尋引擎的課程),這天也是一個找下一個SYMFONY大師的日子。

專案

這個練習程式設計成直覺的“秀和講”的型式,像是待辦事項,電話簿,或是一個書店,把SYMFONY放在基礎之下,讓這個練習有很多特色。目標是証明SYMFONY真的可以完成很多複雜的應用。可以不費力的完成專業級的網站程式。

我們也由衷希望很多人能實際來用這個程式,SYMFONY是可堪大任的。所以這練習程式是帶入一個真實的服務,回應真實的需求,或創一個新的。登入這個網站就是一個現時的壓力測試,這也是需要大家,謙遜的讀者們,來 挖/書籤/網誌這個站,多多用它,看在真實生實中它能支撐多少的流量。

下一天的實際的內容是個密秘,今天的內容努力作好活在當下。也留給你一些想像的空間。不過,至少還是要給這個專案一個名,就讓我們叫它:askeet.

今天做什麼?

今天的目標是秀易一個網頁,設定一個專業的開發環境,含蓋了 symfony 的安裝,建一個程式,網站伺服器的設定,設定好版本控制系統。

如果你有看過之前的課程,這應該是簡單的,然後我們可以學點新的 我們假設你是用 Unix-like 系統,上面有 裝好Apache, MySQL and PHP 5。 假如你是在 Windows系統,也不要怕:它也可運行良好,你只是要打一些指令。

Symfony安裝

最簡單的方法是用 PEAR 包來裝 symfony ,不過,要能用頻道( channels)-然後存取 symfony 頻道,你需要升級到 PEAR 1.4.0 以上。(除非你用PHP 5.1.0,它已包含PEAR 1.4.5)

$ pear upgrade PEAR

注意:假如你有遇到任何使用 PEAR 的問題,請參考installation book的章節。

現在你能加入symfony’頻道

$ pear channel-discover pear.symfony-project.com

你已準備就緒來安裝最新的穩定版本,且把相依的套件也下載回來。

$ pear install symfony/symfony-beta

假如你沒有 phing 包,你也要裝它。

$ pear install http://phing.info/pear/phing-current.tgz

查看 symfony 是否裝好,你可以下指令下來檢查版本 :

$ symfony -V

假如你好奇,有那些新指令可下,你可打 symfony -T 來列出所有可能的選項,你也許想要知道如何從 tgz 的壓縮檔或 svn 源碼倉庫來安裝symfony。你可以從安装章節讀到。也有社群貢獻了不用 PEAR 的安裝方式在symfony wiki上

專案設定

在 symfony ,專案裏的多個程式可以共享一樣的資料模型。在 askeet 專案,我們也會揭露這個事實,將會有前端和後端兩組程式。專案是程式的殼(shell),它要最早被建立,做個專案,你要一個目錄和symfony的專案初始指令

$ mkdir /home/sfprojects/askeet
$ cd /home/sfprojects/askeet
$ symfony init-project askeet

現在,是時候了,下symfony init-app指令來建一個前端的程式

$ symfony init-app frontend

哇,很快

注意: Windows 使用者在跑 symfony 時,建新專案時在路徑上請不要有空白(spaces)-尤其是 Documents and Settings 這個目錄

網站服務的建立

 

網頁伺服器的設定

現在你可以改變你的 Apache 設定,讓你的新程式可以存取。在一個專業的內容,最好是將一個新的程式設成虛擬主機(virtual host),將在這裏說明。也許你喜歡將它設成別名(alias),你可參考web server configuration book章節 ,打開 Apache/conf/ 下的httpd.conf,在最後面加上這段。

<VirtualHost *: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 別名必須指向在你PEAR data的目錄,要確定一下這個路徑,你只要打 “pear config-show”, Symfony的程式必須要能存取這個目錄來取得圖檔和一些 javascript檔 ,才能適當地執行除錯的工具列和 AJAX 輔助工具。

在 Windows ,你必須將這個別名指向如:

Alias /sf "C:\php\pear\data\symfony\web\sf"

宣告網域名稱

domain name askeet 必須在本機宣告,假如你在 Linux ,你編輯/etc/hosts檔,如果 你在 Windows XP ,這個檔在C:\WINDOWS\system32\drivers\etc\,加上一列,

127.0.0.1                askeet

專案設定

注意:你需要是管理者的權限來做這些事,假如你不想設一個新主機名,你可以加一個加一個監聽(Listen statement)的埠來服務你的網站。這樣也可以允許你使用本機網域(localhost domain)

測試新設定

重啟 Apache ,在瀏灠器的網址列打

http://askeet/

注意: symfony 可用 mod_rewrite 模組來移除URLs 的/index.php/ 部分(網址列的字不用打那麼長,打愈長,愈容易出錯)。如果你不想用它,或是你的網站伺服器沒有提供這種便利性,你可以移除web/下的.htaccess。假如你的版本沒有將mod_rewrite編譯進來,檢查一下你是有裝mod_rewrite DSO,及你的設定檔 httpd.conf 裏,是否有

 AddModule mod_rewrite.c
 LoadModule rewrite_module modules/mod_rewrite.so

你可在 routing chapter學更多關於聰明的(smart) URLs

你可以在開發環境裏這樣試一下,

http://askeet/frontend_dev.php/

網頁上的除錯列在右上角有秀出來,也有小小的圖示,証明了你的別名(sf/) 是設正確的

译注:當然,如果你打算跑在 IIS 上(勸你還是不要跑IIS,這手冊相對來講較少講到IIS,你會蠻不方便的,早點脫離WINDOWS也是早點往頂尖程式員之路邁進,不過真要用LINUX,還是用前人已經包好的快速包(如XAMPP),降低學習挫折,有感覺後,再從頭自己建置服務,筆者(tim)目前在UBUNTU下翻譯此教材,幾代人的投入,在LINUX下KEY中文還蠻方便的)請閱讀相對應的教材來設定它。

版本控制

懶傢伙的一個好原則是不用擔心現存的原始碼被破壞掉。我們想工作快點,如果修改的不恰當,我們想回復到上一個版本,我們要允許一個人以上一同來開發項目,我們也希望你可以存取所有每日的版本,我們將採行原始碼版本控制。我們用 Subversion 來達到目的。假設你已經裝好一個 subversion 服務器而且有權限來存取它

首先,建一個倉庫來放 askeet 項目

$ svnadmin create $SVNREP_DIR/askeet
$ svn mkdir -m "layout creation" file:///$SVNREP_DIR/askeet/trunk file:///$SVNREP_DIR/askeet/tags

然後,你必須做第一次匯入,cache/和log/這些檔就省略掉不用匯入了。 (只要對“原始碼”的部分匯入即可)

$ cd /home/sfprojects/askeet
$ rm -rf cache/*
$ rm -rf log/*
$ svn import -m "initial import" . file:///$SVNREP_DIR/askeet/trunk

現在離開原來的程式目錄,用 checkout 從倉庫拿原始碼出來。

$ cd /home/sfprojects
$ mv askeet askeet.origin
$ svn co file:///$SVNREP_DIR/askeet/trunk/ askeet/
$ ls askeet
$ rm -rf askeet.origin

還有一件事要做,就是當你提交(commit ,回寫你的程式變更)你的工作目錄回倉庫時。你可能會有一些不用回寫的檔案,如剛剛的 cache 和log目錄下的檔案。所以你必須要指定一個忽略列表(ignore list )

$ cd /home/sfprojects/askeet
$ svn propedit svn:ignore cache
*

此時會出現 SVN 的預設文字編輯器。输入*号后cache/子目录就会被添加到SVN忽略的名单里了。儲存和離開即可。

對log/也是同樣的作法

$ svn propedit svn:ignore log
*

現在,請確定你的網站伺服器對 cache 和 logs 目錄有寫入的權限,在指令列

$ chmod 777 cache
$ chmod 777 log

注意: Windows 可以使用超級有名的 TortoiseSVN 來管理他們的subversion源碼倉庫。

假如你要知道更多原始碼版本控制,請看手冊裏的 project creation 章節。

注意:本項目 askeet 的 SVN 源碼倉庫是公開的,你可以通過http://svn.askeet.com/http://svn.askeet.com/存取它

開始吧,取出它(checkout也是SVN的常用的動作)

今天的 code 已經提交了,你可以用 release_day_1 這個標好籤來取出它。

  $ svn co http://svn.askeet.com/tags/release_day_1/ askeet/

相关热词搜索:项目

上一篇:什么是Symfony?
下一篇:symfony 初始化资料模型

分享到: 收藏
频道总排行
频道本月排行