• 安装
    • 环境要求
    • 国内镜像
    • Composer 安装
      • 安装
      • 运行
    • 基础配置
      • 入口目录
      • 目录权限
    • 搭建站点
      • Nginx
      • Apache

    安装

    QueryPHP 是一个渐进式 PHP 常驻框架,我们强调的是一个渐进式,它既可以运行在 php-fpm 场景,也可以将框架核心编译成 C 扩展,同时还支持在 swoole 服务中运行。

    环境要求

    事实上,QueryPHP 也是一个普通的 PHP 框架,目前最低版本要求 PHP 7.1.3,我们对环境并没有特别的要求。

    • PHP ^7.1.3
    • ext-mbstring 字符处理
    • ext-openssl 加密组件

    我们系统依赖的组件可以通过 composer.json 找到,我们提供了大量开箱即用的功能。

    实际上,QueryPHP 对于环境来说只需要安装一个 PHP 7.1.3 及以上版本即可,这个时候甚至无需安装 Nginx 而使用 PHP 内置 webserver 即可将 QueryPHP 跑起来。

    对于每位 PHP 工程师来说,您的电脑早已经运行着一个 PHP 7 版本,接着您可以进行安装了。

    国内镜像

    QueryPHP 使用 Composer 来管理整个项目依赖,因此确保您已经安装了 Composer。###

    国外镜像访问速度很慢,我们建议通过下面的方式使用国内镜像。

    • 镜像 1 https://pkg.phpcomposer.com/
    • 镜像 2 https://packagist.laravel-china.org
    1. composer config -g repo.packagist composer https://packagist.phpcomposer.com

    或者

    1. composer config -g repo.packagist composer https://packagist.laravel-china.org

    Composer 安装

    你可以在终端中运行 create-project 命令来安装 QueryPHP.

    安装

    1. composer create-project --prefer-dist hunzhiwange/queryphp myapp

    或者体验开发版本

    1. composer create-project hunzhiwange/queryphp myapp dev-master

    运行

    你也可以简单实用 PHP 内置的服务器来运行 QueryPHP,当然更好的选择配置 Nginx 站点。

    1. php leevel server <Visite http://127.0.0.1:9527/>
    • 首页 http://127.0.0.1:9527/
    • Mvc 路由 http://127.0.0.1:9527/api/test
    • Mvc restful 路由 http://127.0.0.1:9527/restful/123
    • 指定方法的 Mvc restful 路由 http://127.0.0.1:9527/restful/123/show
    • 注解路由 http://127.0.0.1:9527/api/v1/petLeevelForApi/helloworld
    • 带有绑定的注解路由 http://127.0.0.1:9527/api/v2/withBind/foobar
    • php leevel link:public http://127.0.0.1:9527/public/css/page.css
    • php leevel link:storage http://127.0.0.1:9527/storage/logo.png
    • php leevel link:apis http://127.0.0.1:9527/apis/
    • php leevel link:debugbar http://127.0.0.1:9527/debugbar/debugbar.css

    ::: tip
    QueryPHP 在 composer 安装过程中自动运行了创建软连接的命令将一些非 web 根目录的站点映射到根目录,
    这样我们可以使用内置的服务来访问这些链接。这些服务包含: 公共资源(public)、上传文件(storage)、
    Swagger Api(apis)、Debugbar 调试(debugbar)。
    :::

    基础配置

    QueryPHP 在初始化应用程序会自动帮您创建 .envphinx.yml 文件。

    • .env (系统配置文件)
    • phinx.yml (Phinx 数据库迁移命令配置,与 .env 独立)

    入口目录

    您必须将 web 站点的根目录指向 www 目录,其中 index.php 是整个应用的单一入口文件,例如 Nginx。

    1. root /data/codes/queryphp/www;
    2. index index.html index.php;

    目录权限

    系统有两个目录需要配置写入权限 storageruntime,一个是资源上传目录,例外一个是系统运行过程中的缓存。

    搭建站点

    笔者的 QueryPHP 项目采用 VirtualBox + Vagrant 搭建的开发环境,跟 Laravel 提供的 Homestead 是一种开发环境,当前开发环境如下:

    • Macos High Sierra 10.13.2
    • Atom with vim plugin、Subtime text3
    • VirtualBox 5.2.8
    • Vagrant
    • ubuntu-16.04-LTS
    • mysql-5.6.28
    • nginx-1.6.2
    • php-5.6.23
    • php-7.1.6
    • php-7.2.1
    • redis-2.8.17

    建议开发者使用 Laravel Homestead 来搭建 PHP 开发环境蛮不错的,也可以自己维护一套镜像。

    Nginx

    首先需要在 ubuntu 虚拟机创建一个站点的配置文件,例如 /server/nginx-1.6.2/vhosts/queryphp.conf:

    1. server {
    2. add_header HostName php7.2.1-app1;
    3. listen 8080;
    4. server_name queryphp.cn *.queryphp.cn;
    5. error_log /var/log/nginx/queryphp.error.log;
    6. access_log /var/log/nginx/queryphp.access.log main;
    7. root /data/codes/queryphp/www;
    8. index index.html index.php;
    9. location / {
    10. try_files $uri $uri/ /index.php?$query_string;
    11. }
    12. location ~ \.php$ {
    13. fastcgi_split_path_info ^(.+\.php)(/.+)$;
    14. fastcgi_pass 127.0.0.1:9000;
    15. fastcgi_index index.php;
    16. include fastcgi_params;
    17. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    18. }
    19. location ~ /nginx_status$ {
    20. stub_status on;
    21. access_log off;
    22. allow all;
    23. }
    24. }

    ::: tip
    笔者因为会在 Mac 中将端口转发到虚拟机中的 8080 端口,您的开发环境直接配置 80 端口即可。
    :::

    修改虚拟机 /etc/hosts,添加几个测试域名,后面 vip 这些主要用于调试路由域名匹配,可以不要 。
    Mac 系统的 /etc/hosts 也需要添加这些如下域名。

    1. 127.0.0.1 queryphp.cn
    2. 127.0.0.1 www.queryphp.cn
    3. 127.0.0.1 test.queryphp.cn
    4. 127.0.0.1 vip.queryphp.cn
    5. 127.0.0.1 x.vip.queryphp.cn

    重启 Nginx

    1. service nginx restart

    访问地址

    • 首页 http://queryphp.cn/
    • Mvc 路由 http://queryphp.cn/api/test
    • Mvc restful 路由 http://queryphp.cn/restful/123
    • 指定方法的 Mvc restful 路由 http://queryphp.cn/restful/123/show
    • 注解路由 http://queryphp.cn/api/v1/petLeevelForApi/helloworld
    • 带有绑定的注解路由 http://queryphp.cn/api/v2/withBind/foobar
    • php leevel link:public http://queryphp.cn/public/css/page.css
    • php leevel link:storage http://queryphp.cn/storage/logo.png
    • php leevel link:apis http://queryphp.cn/apis/
    • php leevel link:debugbar http://queryphp.cn/debugbar/debugbar.css

    Apache

    Web 根目录已经内置了 www/.htaccess 文件来为隐藏 index.php,需要启用 mod_rewrite 模块。

    1. <IfModule mod_rewrite.c>
    2. <IfModule mod_negotiation.c>
    3. Options -MultiViews -Indexes
    4. </IfModule>
    5. RewriteEngine On
    6. RewriteCond %{HTTP:Authorization} .
    7. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    8. RewriteCond %{REQUEST_FILENAME} !-d
    9. RewriteCond %{REQUEST_FILENAME} !-f
    10. RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    11. </IfModule>