安装

Testing Is Documentation

tests/Docs/Started/InstallDoc.php安装 - 图1

QueryPHP 是一个渐进式 PHP 常驻框架,我们强调的是一个渐进式,它既可以运行在 PHP-FPM 场景,同时还支持在 Swoole 服务中运行。

环境要求

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

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

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

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

国内镜像

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

国外镜像访问速度很慢,我们建议使用国内阿里云镜像。

  1. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

Composer 安装

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

安装

  1. composer create-project 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/>

TIP

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

基础配置

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

  • .env (系统配置文件)
  • .env.phpunit (单元测试配置文件)
  • phinx.yml (Phinx 数据库迁移命令配置,他会读取 .env 或者 .env.phpunit 中的数据库配置)

入口目录

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

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

目录权限

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

搭建站点

笔者的 QueryPHP 项目采用 VirtualBox + Vagrant 搭建的开发环境,可以运行在各种环境。

  • 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
  • php-7.4.0
  • redis-2.8.17

Windows 开发者如果不需要 Swoole 则可以按照其他普通的 PHP 项目来搭建就是了,如果依赖 Swoole 可以采用上面这种虚拟机的方式来搭建环境。

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

刷新虚拟机 Ubuntu 网络使域名生效

  1. /etc/rc.d/init.d/network restart

重启 Nginx

  1. service nginx restart

访问地址

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>