搭建新的目录结构详细点击这里

搭建Restful API 点击这里

1.开发环境
操作系统        Windows Server 2012 R2 Datacenter
PHP架构        Apache版UPUPW PHP5.4
编程软件        Zend Studio 12.0.2

2.环境配置
解压缩UPUPW到D盘根目录,分别在UPUPW中新添加三个站点,如下
http://admin.mxq.com 
http://www.mxq.com 
http://api.mxq.com
网站目录都是用默认路径,然后修改D:\upupw\Apache2\conf\httpd-vhosts.conf文件,例如
将http://admin.mxq.com的DocumentRoot 修改为D:/upupw/vhosts/mxq.com/backend/web,php_admin_value open_basedir修改为D:\upupw\vhosts\mxq.com\,Directory修改为D:/upupw/vhosts/mxq.com/backend/web,其他站点也做相应修改

3.通过归档文件安装 Yii

  • 3.1 从 yiiframework.com 下载 Advanced 归档文件。将下载的文件解压缩到 D:\upupw\vhosts\mxq.com 目录中。
  • 3.2 把php.exe加入系统环境变量
    • ① 右击我的电脑-属性-高级-环境变量
    • ②找到 Path 这一项(可能需要向下滚动才能找到),鼠标双击 Path 这一项,在最后加入你的 PHP 目录和类库所在的路径,包括前面的“;”(例如:;C:\php;C:\php\ext)
    • ③点击“新建”按钮并在“变量名”中输入“PHPRC”,在“变量值”中输入 php.ini 文件所在的目录(例如:C:\php) ,这个步骤是为了让windows找到php.ini.
  • 3.3 运行CMD 进入安装目录中,执行init或在安装目录中运行init.bat,选择 0 开发模式进行安装
  • 3.4在UPUPW中添加本地域名解析,这样就可以通过http://admin.mxq.com进行访问,其他两个类似。

4.添加新应用API
新部署的YII只有backend和frontend,我们手动添加api应用

  • 4.1 复制frontend下的所有文件到api文件夹,批量替换frontend为api
  • 4.2 打开D:\upupw\vhosts\mxq.com\common\config\bootstrap.php,复制包含frontend的那一行,并将frontend改为api,为应用增加别名。
  • 4.3 打开D:\upupw\vhosts\mxq.com\environments\index.php,复制包含frontend的行,改为api,Development和Production下的setWritable和setCookieValidationKey都要做相应复制和修改
  • 4.4 复制D:\upupw\vhosts\mxq.com\environments\dev和D:\upupw\vhosts\mxq.com\environments\prod文件夹下的frontend到相同目录下,改名为api
  • 4.5 执行3.3的操作,通过 http://api.mxq.com 访问新添加的应用

5.添加数据库表前缀
打开D:\upupw\vhosts\mxq.com\common\config\main-local.php,
在db中增加子项

  1. 'tablePrefix' => 'mxq_',

复制代码

6.配置 Gii 为其添加允许外网访问的 IP 地址
打开D:\upupw\vhosts\mxq.com\backend\config\main-local.php,将

  $config['modules']['gii'] = 'yii\gii\Module';

复制代码

一行注释掉,改为

$config['modules']['gii'] = [

'class' => 'yii\gii\Module',

'allowedIPs' => ['127.0.0.1', '192.168.0.*']

];

192.168.0.*为您的IP地址
开发阶段进行init初始化操作会将其覆盖掉,所以我们直接修改D:\upupw\vhosts\mxq.com\environments\dev\backend\config\main-local.php,其他的应用也这样修改

7.开启国际化支持,源代码中文和设置时区、字符集默认UTF-8
因为所有应用都用中文,所以我们将开启设置在common中。
打开D:\upupw\vhosts\mxq.com\common\config\main.php,
在components一行上加入

'language' => 'zh-CN', // 启用国际化支持

'sourceLanguage' => 'zh-CN', // 源代码采用中文

'timeZone' => 'Asia/Shanghai', // 设置时区

8.禁用api应用的默认布局
打开D:\upupw\vhosts\mxq.com\api\config\main.php,
在components一行上加入

'layout' => false,

9.去掉地址栏URL编码
http://yii2/index.php?r=site%2Flogin
http://yii2/index.php?r=site/login
以上两个网址,那个看起来更清晰明了呢?显而易见是第二个,为了达到这个效果,可以进行如下修改
打开D:\upupw\vhosts\mxq.com\vendor\yiisoft\yii2\web\UrlManager.php将

  $url = "$baseUrl?{$this->routeParam}=" . urlencode($route);

改为

  $url = "$baseUrl?{$this->routeParam}=" . $route;

10.为Controller制定布局模版
在init方法中写入

  $this->layout = '';

引号之间填入您的布局文件名

11.Apache下三个应用公用一个高级模版配置

<VirtualHost *:80>
DocumentRoot "D:/upupw/vhosts/mxq.com/backend/web"
ServerName admin.mxq.com:80
ServerAlias admin
ServerAdmin webmaster@admin.mxq.com
DirectoryIndex index.html index.htm index.php default.php app.php u.php
ErrorLog logs/admin.mxq.com-error.log
CustomLog logs/admin.mxq.com-access_%Y%m%d.log comonvhost
php_admin_value open_basedir "D:\upupw\vhosts\mxq.com\;D:\upupw\memcached\;D:\upupw\phpmyadmin\;D:\upupw\temp\;C:\Windows\Temp\"
<Directory "D:/upupw/vhosts/mxq.com/backend/web">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<LocationMatch "/(inc)/(.*)$">
AllowOverride none
Require all denied
</LocationMatch>
<LocationMatch "/(attachment|attachments|uploadfiles|avatar)/(.*).(php|php5|phps|asp|asp.net|jsp)$">
AllowOverride none
Require all denied
</LocationMatch>
</VirtualHost> <VirtualHost *:80>
DocumentRoot "D:/upupw/vhosts/mxq.com/frontend/web"
ServerName www.mxq.com:80
ServerAlias www
ServerAdmin webmaster@www.mxq.com
DirectoryIndex index.html index.htm index.php default.php app.php u.php
ErrorLog logs/www.mxq.com-error.log
CustomLog logs/www.mxq.com-access_%Y%m%d.log comonvhost
php_admin_value open_basedir "D:\upupw\vhosts\mxq.com\;D:\upupw\memcached\;D:\upupw\phpmyadmin\;D:\upupw\temp\;C:\Windows\Temp\"
<Directory "D:/upupw/vhosts/mxq.com/frontend/web">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<LocationMatch "/(inc)/(.*)$">
AllowOverride none
Require all denied
</LocationMatch>
<LocationMatch "/(attachment|attachments|uploadfiles|avatar)/(.*).(php|php5|phps|asp|asp.net|jsp)$">
AllowOverride none
Require all denied
</LocationMatch>
</VirtualHost> <VirtualHost *:80>
DocumentRoot "D:/upupw/vhosts/mxq.com/api/web"
ServerName api.mxq.com:80
ServerAlias api
ServerAdmin webmaster@api.mxq.com
DirectoryIndex index.html index.htm index.php default.php app.php u.php
ErrorLog logs/api.mxq.com-error.log
CustomLog logs/api.mxq.com-access_%Y%m%d.log comonvhost
php_admin_value open_basedir "D:\upupw\vhosts\mxq.com\;D:\upupw\memcached\;D:\upupw\phpmyadmin\;D:\upupw\temp\;C:\Windows\Temp\"
<Directory "D:/upupw/vhosts/mxq.com/api/web">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<LocationMatch "/(inc)/(.*)$">
AllowOverride none
Require all denied
</LocationMatch>
<LocationMatch "/(attachment|attachments|uploadfiles|avatar)/(.*).(php|php5|phps|asp|asp.net|jsp)$">
AllowOverride none
Require all denied
</LocationMatch>
</VirtualHost>

yii2 增加新的目录结构的更多相关文章

  1. Yii2 创建新项目目录

    默认的高级应用模板包括三个应用 backend – 应用的后台 frontend – 应用的前台 console – 应用的控制台应用 那么如果我们要在增加应用呢?比如在加一个手机端的应用,或者后台和 ...

  2. NodeJs编写Cli实现自动初始化新项目目录结构

    应用场景 前端日常开发中,会遇见各种各样的cli,这些工具极大地方便了我们的日常工作,让计算机自己去干繁琐的工作,而我们,就可以节省出大量的时间用于学习.交流.开发. 注释:文章附有源码链接! 使用工 ...

  3. 分享我设计的iOS项目目录结构

    公司新项目就要着手研发了,希望能为这个项目多准备点知识.回想自己做过的项目,目录结构的划分总不如我的心意,有些目录命名不规范导致表达不明确,有些目录因为不具有代表性,导致在实际中不能充分发挥作用,导致 ...

  4. Laravel5.1 学习笔记1, 目录结构和命名空间(待修)

    自从用 Laravel4做了个小网站,使用了数据库ORM Eloquent, 就放下了一段时间,想不到这个与Asp.net MVC 有着异曲同工之妙的框架已经出了下个版本,而且还有不小的改动,因此不得 ...

  5. 整理一波Go工程化目录结构~

    在Go语言领域遨游了几个月后,发现自己对Go语言相关的工程目录结构有些不了解,按照原来的习惯在Go工程中建立的目录结构显得比较奇怪,好的目录结构绝对是可以加强工程效率的,所以接下来会参考煎鱼.毛大等大 ...

  6. Oracle目录结构及创建新数据库

    oracle目录结构 当需要创建新的数据仓库时我可以用 Database Configuration Assistant(数据库配置助手) admin 存放创建的不同数据库 cfgtoollogs c ...

  7. Yii2.0学习--目录结构

    目录结构: 创建一个控制器: <?php /** * Created by Haima. * Author:Haima * QQ:228654416 * Date: 2018/8/23 * Ti ...

  8. Yii应用的目录结构和入口脚本

    以下是一个通过高级模版安装后典型的Yii应用的目录结构: . ├── backend ├── common ├── console ├── environments ├── frontend ├── ...

  9. python基础之迭代器、装饰器、软件开发目录结构规范

    生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大 ...

随机推荐

  1. How to check if NSString begins with a certain character

    How to check if NSString begins with a certain character How do you check if an NSString begins with ...

  2. Z_blog博客尝试 http://www.uuxin.com/

    原来的博客由于没有备份所有数据全部丢失,很是郁闷. 又用Z-BLOG新建了一个博客.http://www.uuxin.com

  3. Struts2原码分析系列之一

    struts2概述 在struts2的官网上有这么一句话,翻译为:Apache Struts2是一个为企业级应用打造的优秀的.可扩展的WEB框架,该框架旨在充分精简应用程序的开发周期,从而减少创建.发 ...

  4. java面试资料总结

    一.java基础部分 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以,但是只能有一个public类,且类名与文件名相同 2.java有没有goto? goto是ja ...

  5. Bootstrap入门二:响应式页面布局

    Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mixin 用于生成更具 ...

  6. 为什么X86汇编中的mov指令不支持内存到内存的寻址?

    在X86汇编中,MOV [0012H], [0016H]这种指令是不允许的,至少得有一个操作数是寄存器.当然,这种问题在用高级语言的时候看不到,感觉好像基本上都是从内存到内存啊,为毛到了汇编就不行了? ...

  7. WPF入门学习

    WPF基础知识 总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽然WPF是XAML配置的,但是总还是要写代码的,相信各位读者应该也都有这个基础 ...

  8. Promises与Javascript异步编程

    Promises与Javascript异步编程 转载:http://www.zawaliang.com/2013/08/399.html 在如今都追求用户体验的时代,Ajax应用真的是无所不在.加上这 ...

  9. Poj 1032 分类: Translation Mode 2014-04-04 09:09 111人阅读 评论(0) 收藏

    Parliament Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16521   Accepted: 6975 Descr ...

  10. 【bzoj1005】[HNOI2008]明明的烦恼

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4175  Solved: 1660[Submit][Stat ...