有赞的zan framework安装与初步使用

赞赏 2017-05-28

高性能的PHP后端开发框架 zan framework的初步入门教程

有赞的zan framework安装与初步使用

1.准备工作

1.1 一台腾讯云服务器2核CPU+2G内存的Linux CentOS 7.2(谢谢小杨同学@erchoc)

attachments-2017-05-2fVY45FB592a42c959288.png

1.2 预装lnmp一键安装包环境,官方地址:lnmp一键安装包 (如不会使用请查看此链接)

attachments-2017-05-AlzePe79592a4306df850.png

2.安装swoole

pecl install swoole

刚安装完就发现zan framework需要swoole的1.8.5-stable版本,框架作者说明如下:

Zan 基于 swoole-1.8.5-stable 版本构建,因 Swoole 更高版本 MySQL Query API 大幅变更,请勿使用更高版本。

但是swoole1.9.11-stable版已经安装好了
attachments-2017-05-ab2V63o8592a44e102097.png

没事,我们卸载它

attachments-2017-05-2LAieVFj592a450663a93.png

安装1.8.5版本,就用

pecl install swoole-1.8.5-stable

安装时报错

attachments-2017-05-M4Pqp1B1592a50441ff22.png

怎么办,查看帮助文档

pecl -h

看到下面这个

attachments-2017-05-GYx8FbfF592a50970d488.png

于是继续探索猫腻

pecl help install

attachments-2017-05-chveKTiZ592a50e675922.png

stability状态(stable|beta|alpha)是不能跟版本号放在一起,这很好理解哈,那行我们继续

pecl install swoole-1.8.5

安装成功了。


重启php-fpm

lnmp php-fpm reload

在web可访问的根目录加入index.php,并编写代码

<?php     phpinfo();    exit;?>

搜索swoole字符串

attachments-2017-05-7M4V5KAQ592a525aba8a6.png

小诀窍:如下查看当前php加载的ini配置文件信息?

php --ini

咦,笔者发现zan framework竟然建议启用swoole的3个configure参数,什么?

./configure  --enable-async-mysql --enable-async-httpclient --enable-sockets --enable-async-redis

那pecl有没有对应的途径可以帮我们快速指定configure参数呢?

# 笔者也没找到,如果同学们这里有好办法可以给我发邮件(820467790@qq.com),求指教。

那么还等什么呢?赶紧下载swoole-1.8.5源码压缩包吧。

cd ~/download && wget https://github.com/swoole/swoole-src/archive/swoole-1.8.5-stable.tar.gz

下面就是PHP的C扩展通用编译流程了

tar xzvf swoole-stable.tar.gz
cd swoole-src-swoole-stable pecl uninstall swoole

./configure ---php-config=/usr/local/php/bin/php-config --enable--mysql --enable--httpclient --enable-sockets --enable--redismake -j2 && make install

报错了

attachments-2017-05-uyqiQQ3F592a59e7be0f7.png

搜索一下hiredis是什么鬼?

找到了,链接地址:https://github.com/redis/hiredis(最小化的redis C client,要求redis 版本>1.2)

我们下载它并直接make&&make install

git clone https://github.com/redis/hiredis.git
make && make install

再次进入swoole源码目录继续未完成的编译过程

make -j2 && make install

安装成功

attachments-2017-05-ouuA6Whq592a5c57cebfc.png

但是php -m查看继续报错

attachments-2017-05-LCNi7aJX592a5f9142bc1.png

目测是hiredis编译生成的libhiredis.so.0.13这个库文件没有找到导致的。

看这个

attachments-2017-05-oC3VbzfW592a60d3b9064.png

cat /etc/ld.so.conf #想知道什么是什么吗,自己搜索一下吧,内容较多

忽然想起来,我现在安装的操作系统是CentOS7.2 64bit,那么对应的yum仓库版本应该比较新,可以直接使用

yum install hiredis-devel hiredis

接下来在php.ini文件加入一行"extension=swoole.so"即可,继续php -m,成功了,接着可以重启php-fpm(lnmp php-fpm reload)了。

下载并安装comoser

curl -sS https://getcomposer.org/installer | php

结果各种超时

不能忍,打开迅雷下载installer:https://getcomposer.org/installer

还是超时+报错

attachments-2017-05-JzLSfK18592a6dd75f09a.png

不能忍了,直接下载composer.phar文件(备注:phar是php项目文件压缩包格式)

composer下载地址:https://getcomposer.org/download/,选择最下面最新版

attachments-2017-05-y7WTn93w592a6e999ebf5.png

迅雷下载完成后,执行下面的代码,看看是否正常

php composer.phar

接着进行下面的操作

mv composer.phar /usr/local/bin/composerchmod a+x /usr/local/bin/composer

接下来你可以直接使用composer了

composer -V

我们发现竟然是开发版,不太好吧,还是下载最新稳定版吧。

attachments-2017-05-eO7UUaMP592a709b140cc.png
嗯,就是1.4.2,继续使用迅雷下载,爽歪歪。

attachments-2017-05-JlCRbAJF592a70d875d96.png

说实话,下载一共花了3秒。

接着通过xshell的直接拖放过去。

rz #命令行下输入此命令,选择文件即可,此命令需要安装lrzsz软件包

接下来我们先删掉之前的composer并安装新的composer

rm -rf /usr/local/bin/composermv 
composer.phar /usr/local/bin/composerchmod a+x /usr/local/bin/composer

安装成功了。

attachments-2017-05-dTv53ftc592a728816413.png

加速composer依赖包的下载

参考链接:https://pkg.phpcomposer.com/ (国内composer下载加速镜像链接)

composer config -g repo.packagist composer https://packagist.phpcomposer.com

安装zan-installer脚手架工具

composer   youzan/zan-installer

attachments-2017-05-IvVj9vLs592a740225078.png

10秒内就安装好了。

接下来我们在终端下直接输入zan命令,发现这个命令并没有集成进去

其实我们只需要把composer的工具安装目录(通常在 ~/.config/composer/vendor/bin)放到PATH环境变量里面就好了,那行我们修改~/.bash_profile

复制当前终端并重新打开一个ssh,我们发现PATH环境变量生效了。

接下来我们就使用zan这个工具时发现zan这个脚手架工具没有执行权限

attachments-2017-05-x3Rg3ute592a773ac99ae.png那我们就分配给它执行权限,为了省事,直接给composer下面的vendor递归加上可执行权限

chmod -R a+x ~/.config/composer/vendor

继续执行zan命令,又发现新问题

attachments-2017-05-zEl14OKe592a77fb74fc8.png

我嚓,这个框架竟然需要这个disable_functions里面的函数shell_exec

好,哥满足你,修改php.ini文件并把shell_exec去掉(危险提示:千万不要再生产环境中使用,否则后果自负)

attachments-2017-05-jtqxkpGO592a7893d098c.png去掉shell_exec之后继续使用zan命令发现好了,但是出现了警示。

attachments-2017-05-Gf0v7Vp6592a7a86d7813.png

好吧,我把exec这个被禁用的函数也开启

总算好了,连warning也没有了。

attachments-2017-05-5k5b87CQ592a7a6ca1c47.png

到最后composer提示笔者,请不要使用root账户玩composer,听你的,添加一个用户kemin,并赋予sudo权限。

attachments-2017-05-ztSSekxQ592a80b165a9a.png

但是请一定要记得,重新执行下面的操作

composer config -g repo.packagist composer https://packagist.phpcomposer.comcomposer global require youzan/zan-installer
chmod -R a+x ~/.config/composer/vendor
vim ~/.bash_profile #当然你也可以把这个加入到/etc/profile里面,但是不太建议哈

接下来可能还会初选disable_functions的问题,你只需要把它从disable_functions里面去掉就好了。

我们创建一个web可访问的目录

mkdir -p /srv/www

输入zan命令的时候,我们进入了交互模式,输入上面创建的/srv/www即可,由于是学习使用阶段,其它配置一路回车默认即可。

attachments-2017-05-sCkF957Z592a8129aa351.png

安装tree工具查看zan工具生成的目录结构

yum install -y tree
tree -L 2 /srv/www/zanphp-demo

如下所示

attachments-2017-05-M9S8QPLz592a82f759351.png

运行你的第一个zan应用

阅读文档:https://github.com/youzan/zanhttp

我们修改php.ini并加入2项配置:

# sudo vim /usr/local/php/etc/php.inizan.RUN_MODE = testzan.DEBUG = true

接着在项目目录下面执行命令

php bin/httpd

访问127.0.0.1:8030

wget 127.0.0.1:8030

attachments-2017-05-zUSmqcbq592a880b5aafa.png

配置nginx并开启外网访问

参考官方给出的nginx配置:https://gist.github.com/agalwood/df9c7316d7e41a363c6fcc8e7907e54c

创建日志文件目录

sudo mkdir -p /data/logs/nginx

在aliyun上域名云解析那里加一条A解析记录。

把文件名为zan.shukaiming.com.conf和内容如下的文件放到nginx的vhost目录(在本地编辑好使用sudo rz放过去即可)

server {    listen       80;    server_name  zan.shukaiming.com;    charset utf-8;    access_log  /data/logs/nginx/zanphp.access.log  main;    error_log   /data/logs/nginx/zanphp.error.log;    root    /srv/www/zanphp-demo;    index   index.html index.htm index.php;    error_page  404              /404.html;    error_page  500 502 503 504  /50x.html;    location = /50x.html {        root   html;
    }    location = /404.html {        root  html;
    }    location / {        index index.html index.htm index.php;        proxy_set_header Host $host:$server_port;        proxy_pass http://127.0.0.1:8030;
    }
}

笔者放到的目录是/usr/local/nginx/conf/vhost

sudo lnmp nginx reload

结果报错了

attachments-2017-05-WUgKDSYS592a8b835e48f.png

简单,原来是main这种标签命名的日志格式没有定义,我们去掉它,关于log_format同学们可以去nginx官网看看,那里讲得比较详细,这里就不展开了。

我们再次尝试,done

我们来看看访问效果。

attachments-2017-05-yxHoF70n592a8d5b309f4.png

本原创文章同步发表在PHP问答网:

https://wenda.shukaiming.com/article/15

https://wenda.shukaiming.com/article/16

登陆后阅读全文
阅读 1874 赞赏 0 有用 5 没用 0 收藏 0 分享

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

月夜阁主的头像

月夜阁主

PHP技术大全作者

相关文章

Linux php-fpm报错:allow_call_time_pass_reference

如何配置php显示错误信息?

6款程序员必备的开源中文汉字拼音转换及处理工具 (PHP Java .net)

PHP Fatal error: Allowed memory size of bytes exhausted

Linux 服务器如何隐藏 PHP 版本号?

PHP 程序无法识别短标签

改了php.ini中的open_basedir仍报错open_basedir restriction in effect

原来这条命令可以让我们快速找到php.ini的位置

php call_user_fun Call-time pass-by-reference has been remov

php.ini 设置了 error_log 为什么不生效?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

PHP单进程单线程如何达到每秒100次的百度首页抓取

windows下恼人的composer安装与加速

有赞的zan framework安装与初步使用

手机扫一扫
分享文章