讓咱們看看,怎樣以最小的代價使用Yii2建立一個站點。目的是學習使用Yii2應用模版的安裝過程,並開始體驗模版裏提供的一系列特性。php
開始使用Yii2最基本和直接的方式,是使用Yii2團隊發佈在GitHub上的模版文件(https://github.com/yiisoft/yii2),並使用Composer工具。在Yii的上一個版本中,你必須本身手工下載、並解壓framework文件,當你使用Yii2時,你一樣能夠手工下載,但同時也能夠採用專門精心準備的Composer工具來簡化安裝過程。html
在硬盤上找一個合適的目錄,獲取Composer的PHP歸檔文件(PHAR)。能夠採用多種方式,例如,使用以下命令:mysql
curl -sS https://getcomposer.org/installer | php
而後,運行下面的命令會建立一個名爲basic的子目錄,並使用Yii2團隊發佈的basic模版填充完成:git
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
請注意:Yii2有幾個特定的系統範圍的依賴。你可能須要事先在GitHub倉庫裏查閱一下composer.json文件,學習它的用法(https://github.com/yiisoft/yii2)。在任何案例中,Composer會告訴你須要安裝哪些東西才能使Yii2正常工做。Yii2常常更新,而且它的運行環境要求也會隨之變化。github
在開始執行上面的命令以前,你最好查看一下Composer的文檔,理解命令的含義。跟咱們有關的部分 yiisoft/yii2-app-basic basic,意思是「將發佈在 https://github.com/yiisoft/yii2-app-basic 的內容,拷貝到本地的basic目錄 」。這個命令將安裝項目的骨架,包含一系列預約義的目錄。這其中有一個名爲vendor的子目錄,裏面包含了不少的Composer包。basic目錄,就是你新建應用的根目錄。web
使用Composer安裝完所需的包,你可使用下面這條命令:sql
php -S localhost:8000 –t basic/web
在命令中,8000是一個端口號,你能夠根據本身的狀況進行修改。這樣,一個web server就已經能夠訪問了。數據庫
請注意:這固然並非配置PHP Web應用的最佳方式。內建的web server只適應於「冒煙測試」,用以檢驗應用是否能正常工做。它只適合本地開發使用,而不能承擔高負載。下一章將會介紹線上環境的部署。json
使用瀏覽器訪問 http://localhost:8000/。你將看到Yii2的歡迎頁,這意味着你的基本設置已經搞定了。bootstrap
經過閱讀模版提供的README文件(https://github.com/yiisoft/yii2/blob/master/apps/basic/README.md),你能夠得到basic目錄結構的詳盡說明。或者,你也能夠閱讀Yii2關於basic模版的文檔(http://www.yiiframework.com/doc-.0/guide-start-installation.html)。
最重要的事情是,你須要理解,web目錄,這個對外發布的目錄,只是整個應用所有代碼中的一個目錄。web目錄以外的其它目錄,都是不能經過web server進行訪問的。
正如你已經看過的安裝過程描述,在你已經擁有PHP環境,可選的curl工具時,沒有特殊的環境須要配置,全部的依賴都經過Composer管理起來了。
在basic模版中,第3代的自動化測試工具也設置好了。它包含了驗收測試,功能測試,單元測試等大部分功能。已經包含在模版中的測試,就像示例程序同樣很是有用,告訴咱們怎樣使用測試框架,這個測試工具就是 Codeception(http://codeception.com/)。
若是你只是想展現一些新聞種子或者作一個只包含幾個頁面的web工具,這個模版就已經足夠可用了。然而,若是你的目標是包含前臺和後臺的大型系統(10個以上的獨立路由),這就缺乏一些子系統了。
同查看composer.json文件中的項目依賴,Yii2有幾個重要的部分作成了獨立的插件包,它們也經過Composer安裝好了。這些包分別是:
Gii,代碼生成器,將會在第3章討論,自動生成CRUD代碼
調試控制檯,已經包含在basic應用模版中
Codeception測試框架的一個包裝
SwiftMailer庫(http://swiftmailer.org/)的包裝(https://github.com/yiisoft/yii2-swiftmailer)
Twitter Bootstrap UI庫被打包進Yii2的asset包中(http://getbootstrap.com/)
前3個只是在開發時使用,放在生產環境中反而有害。基本上,你在任何一個項目中都須要它們。
basic模版安裝的快速指引:
curl -sS https://getcomposer.org/installer | php php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic php -S localhost:8000 -t basic/web
相對於basic模版,Yii2還提供了一個advanced模版。它更多的針對中型應用(例如一些真實的商業應用),這種應用一個典型的特徵是有兩個分離的界面。一個進行內容管理,另外一個展現給訪問者。所以,經過這個模版,你能獲得一個完整的CMS骨架。
第一步跟安裝basic模版相似。須要獲取Composer,而且設置一個新的項目:
curl -sS https://getcomposer.org/installer | php php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced
你可能已經注意到,在上面的命令中,僅僅是把「basic」替換成了「advanced」。
如今,咱們來作一些新的改變。首先,進入剛剛建立的advanced目錄,你須要生成本地化配置,運行下面的命令:
./init
是的,就是在應用的根目錄執行init腳本。它會詢問你想配置開發模式仍是生產模式,並建立全部必須的輔助配置代碼,以及入口腳本。須要明確說明的是,它僅僅根據你選擇的是開發環境仍是生產環境,把文件拷貝到environments目錄下的dev或prod子目錄中。打開environments目錄看看,你就會理解init腳本是怎麼工做的了。
下一步,你須要建立本應用使用的數據庫。缺省狀況下,配置開發環境,你應該在本機設置一個名爲yii2advanced的數據庫,root用戶密碼爲空,你能夠在common/config/main-local.php文件中看到這些細節。
既然你的數據庫已經設置好了,你就能夠運行遷移了。咱們將在下一章討論遷移腳本(而且咱們甚至會本身寫一些腳本),可是,若是你對數據遷移這個很是重要的概念很陌生,你須要在Yii2網站上閱讀相關的官方文檔(在寫做本書時,官方文檔還未發佈,可是框架的文檔在這裏 https://github.com/yiisoft/yii2/blob/master/docs/guide/db-migrations.md)。(譯註:建立數據庫,寫入初始化數據,升級數據庫表等操做,建議放在遷移腳本中)
只需運行下面的命令便可:
./yii migrate
這個命令會展現當前遷移列表,目前包含一條遷移,並詢問你是否要執行遷移。(譯註:遷移使用前面配置的數據庫,用以記錄遷移執行的歷史,所以,若是前面沒有配置數據庫,執行上面的命令時會有錯誤提示)
如今,全部事情都搞定了。執行下面的命令,讓先後臺均可以訪問:
php -S localhost:8080 -t frontend/web php -S localhost:8081 -t backend/web
與配置basic模版同樣,咱們使用了PHP內建的web server,僅僅是由於做爲示例,這比在Apache或其它web server中配置更爲簡單。
如今,你可使用後臺進行內容管理,前臺展現給訪客。同時,你還有一個完善的控制檯,能夠經過yii腳原本執行遷移。advanced模版的前臺跟basic模版很類似。下面是後臺運行起來的截圖:
後臺缺省處於鎖定狀態,點擊登陸菜單,登陸成功後,你才能看到和basic模版或前臺同樣的頁面。
對於advanced模版,最重要的事情是將3個basic模版整合在一塊兒了:
frontend目錄中,放置的是前臺代碼。對外發布的功能、內容都放在這裏。
backend目錄是爲CMS(內容管理系統)準備的,非受權用戶不能訪問。你應該把CRUD這樣的管理程序放在這裏。
console目錄主要用來存放自定義的控制檯命令,能夠放置任意多命令,就像遷移腳本同樣。
common目錄包含在前臺、後臺、控制檯均可以使用的公共代碼,由於這幾部分構成了整個應用。
固然,沒有人會強制你像上面描述的同樣使用前臺和後臺,你也可能會有兩個前臺共享相同的代碼,你能夠按你想要的方式自由的使用。無論怎樣,advanced模版已經準備好的後臺UI,在開始時就提供了權限的密碼保護。
在剛剛安裝的advanced應用中,你須要知道登陸特性。初始時,沒有定義用戶,你必須使用前臺的signup(註冊)來本身建立一個。這樣,你就能用剛剛建立的身份登陸前臺和後臺。前臺跟basic應用同樣,後臺也差很少,僅僅是加入了登陸功能。因此,後續的開發就徹底交給你了。
advanced安裝的快速指引:
curl -sS https://getcomposer.org/installer | php php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced cd advanced ./init mysql -u root -e 'create database yii2advanced' ./yii migrate php -S localhost:8080 -t frontend/web php -S localhost:8081 -t backend/web
Yii2幾乎容許你配置framework中使用的全部路徑,所以,你能夠按你想法建立目錄結構。利用PHP5.3引入的命名空間,你甚至可使物理結構不一樣於邏輯結構,也就是說目錄中文件的存放不一樣於命名空間中的類的結構,但這樣作很乏味。
在下一章,咱們將會不使用模版,白手起家,經過Yii2建立一個真實的項目(即便很小)。