让咱们看看,怎样以最小的代价使用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建立一个真实的项目(即便很小)。