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

搭建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. VBS基础篇 - 常用函数

    Option Explicit '*********************************Date/Time函数******************************* 'CDate函 ...

  2. 团队开发NABC特点

    一.软件特点 我们所设计的躲避小球游戏,能够防止用户沉迷,且不会使用户有挫败感,失去玩游戏的兴趣. 二.进行NABC分析 N:我们适应于用户对娱乐.打发时间需求 A:我们用图形界面实现 B:此游戏适用 ...

  3. Mysql高级之存储过程

    参考地址1:http://www.2cto.com/database/201411/350819.html 参考地址2:http://www.jb51.net/article/39471.htm my ...

  4. android 通过socket获取IP

    如题<android 通过socket获取IP>: socket.getInetAddress().getHostAddress();

  5. WP手机升级WIN10被PIN码锁定

    WP8.1手机升级WIN10后,需要输入PIN码(不知道啊),多次输入(1234,0000,8888 ...)后被锁定,无法使用手机(郁闷), 重启无数次,提示由于多次输入PIN码,手机无法使用(天啊 ...

  6. 引擎设计跟踪(九.14.2h) 开发计划

    以后的开发计划: 完善game runtime code, 跑简单的demo目前只有编辑器的运行流程, 没有游戏/demo流程, 图形的测试主要在编辑器上测试, 现在需要测试android系统的图形, ...

  7. Post 的数据被截断

    原因: Form 域 POST 提交数据 100K(可能不是这个值) 限制的解决方案   因为微软这个限制是对表单内每个域(第一个控件)的限制.问题的解决办法是,对于一个需要发送大数据的域,在提交表单 ...

  8. C#与C++之间类型的对应{转}

    Windows Data Type   .NET Data Type BOOL, BOOLEAN   Boolean or Int32 BSTR    String BYTE    Byte CHAR ...

  9. 由浅入深了解Thrift之结果封装

    一.thrift返回结果封装 Thrift文件添加版本号,方便对thrift的版本进行控制 服务与返回的数据类型分开定义 在项目中使用Thrift提供RPC服务时,很多情况下我们都会将返回的结果进行封 ...

  10. HDU 2571 命运 动态规划

    命运 http://acm.hdu.edu.cn/showproblem.php?pid=2571 Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到, ...