2010 年开始使用 Yii,由 1.0 用到 2.0。
由于项目变迁快速,在 9 月之前使用的都是 basic 模板;前台和后台各自一个 git 库,使得复用多有不便,最明显的地方有两个:config 文件和 models。
终于,我们在 9 月 23 日,由于持续部署的倒逼,从 oss 入手引入 高级应用模板(中文版),逐步并入 api 项目,实现了多个应用的共享;
本文是上周在和 laravel dotenv 对照的过程中产生的想法,便于不了解 yii 的同学参照;
目录结构
backend - backend web application.
common - files common to all applications.
console - console application.
environments - environment configs.
frontend - frontend web application.
- 我们的 backend 后端应用是 oss;
- common:多个应用共享的 models;
- 我们的 console 应用主要就是 cron jobs;
- 我们的 frontend 应用是 api;
Modules
Yii 的 Modules 是一个应该充分利用起来的特性,相对独立,符合可以单独开发、单独测试、单独部署
的要求,如果使用 Composer 进行包的发布,就更好了。在 Yii 里面,这通常就是 扩展(extensions) 的一般做法;当然如果你闲的蛋疼,也可以了解 如何手动安装;
环境配置
说起来,最终促使实施高级模版的稻草是其环境配置比较适合在多个环境下持续部署;因为高级模板自动支持多个环境下的配置问题;
- me 本地个人环境;
- dev 开发环境;
- test 测试环境;
- prod 生产环境;
在发布包里,默认包含了 dev 和 prod 两个,你自己可以加任意个环境;由于 yii 的 config 配置文件(main.php 和 params.php)具有极大的配置灵活性,结合配置文件的加载顺序,较好地解决了重复配置和灵活配置的两难问题;
使用约定
- 应用目录下的 config/main.php 和 params.php 是一个配置全集;
不论应用目录下的 *-local.php,还是 environments 目录下的 *-local.php,都是他们一个子集; - 应用目录下的 config/main-local.php 不入代码库,如果不熟悉 yii 的话,可以整体拷贝一份 main.php 到 main-local.php;
同理,应用目录下的 config/params-local.php 的处理方式就参照 main-local.php; - environments 目录下的 main-local.php 和 params-local.php 要入代码库,方便在部署各个环境时使用;
部署步骤
- init 执行初始化自动部署;
即复制 environments 目录下对应的配置文件到各个应用下面即可; - me 本地个人环境供开发人员使用,若需改动,请直接修改应用目录下的 *-local.php;
- dev 和 test 环境,init 初始化部署完毕后,通常不需再修改;
- prod 生产环境尚需进行少许配置;
1. 数据库用户名/密码;
2. 应用的 key;
3. 测试 X-Test-* 属性值;
网友评论