php的各种扩展配置起来实在不容易,记录一下备忘:

一、php56 安装

虽然php7出来了,但是没用过,不知道有没有坑,这里仍然使用php5.6版本

1.1 安装php/php-pfm

brew update
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
brew install --without-apache --with-fpm --with-mysql php56

注意:记得要带上--with-mysql 否则代码无法连接mysql

1.2 添加环境变量

在~/.bash_profile(如果终端使用zsh的话,在~/.zshrc)里参考下面的内容,进行添加:

export PHP_HOME=/usr/local/opt/php56
export PATH=${PHP_HOME}/bin:${PHP_HOME}/sbin:$PATH

1.3 验证

php --version
php-fpm -i
lsof -i:9000

1.4 php-fpm的停止及重启

pkill php-fpm
php-fpm &

  

二、thinkphp的下载

2.1 下载3.2.x版本(建议下载full版本)
地址:http://www.thinkphp.cn/donate/download/id/610.html

解压到某个目录:
比如:/Users/jimmy/Work/Code/php/ThinkPHP_3.2.2/

2.2 验证

如何验证后面会讲。

三、nginx安装及php转发配置

3.1 安装

brew install nginx

3.2 php的rewrite处理

在/usr/local/etc/nginx/servers下创建一个名为tp.conf的文件,内容参考以下:

server {
listen 8001;
server_name localhost;
root /Users/jimmy/Work/Code/php/ThinkPHP_3.2.2; location / {
index index.html index.shtml index.php;
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
} location ~ \.php {
root /Users/jimmy/Work/Code/php/ThinkPHP_3.2.2;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf; set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
set $fastcgi_script_name2 $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
} access_log /Users/jimmy/data/log/nginx/tp_access.log;
error_log /Users/jimmy/data/log/nginx/tp_error.log;
}

然后

nginx -t 校验配置文件是否正确,如果没问题
nginx -s reload 重启(如果之前没有启动nginx,直接nginx即可)
启动过程中,如果出现警告worker连接数超过1024之类的(类似下面这样)

nginx: [warn] 1024 worker_connections exceed open file resource limit: 256

可运行:
ulimit 4096 调大系统连接数
然后再
nginx -s reload

如果启动成功,浏览 http://localhost:8001/home/index 应该能看到thinkpap的默认欢迎页面

四、gearman的搭建

4.1 安装

brew install gearmand

然后,在~/.zshrc中参考下面的内容修改:(目前是可直接在终端中运行gearmand命令)

export GEARMAN_HOME=/usr/local/Cellar/gearman/1.1.12
export PATH=${GEARMAN_HOME}/bin:${GEARMAN_HOME}/sbin:${PHP_HOME}/bin:${PHP_HOME}/sbin:$PATH

4.2 启动gearman

gearmand -d

五、安装Gearman扩展

5.1 安装

下载地址:http://pecl.php.net/ 上搜索gearman

wget http://pecl.php.net/get/gearman-1.1.2.tgz

(注:mac上默认没有wget命令,可先用brew install wget安装)

tar -zxvf gearman-1.1.2.tgz
cd gearman-1.1.2
phpize

然后找一下php-config在本机的位置

where php-config

(注:如果不是zsh终端,可能没有where命令,改用whereis)

通常会在

/usr/local/opt/php56/bin/php-config
/usr/local/bin/php-config
/usr/bin/php-config

继续:

./configure --with-php-config=/usr/local/opt/php56/bin/php-config
sudo make
sudo make install

注:如果./configure这个命令找不到,说明本机mac上没有安装autoconf、automake,可先运行

brew install autoconf
brew install automake

然后再重新运行 phpize 及 ./configure ... 之类

  

查看下php.ini的位置

➜ gearman-1.1.2 php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/5.6
Loaded Configuration File: /usr/local/etc/php/5.6/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.6/conf.d
Additional .ini files parsed: (none)

修改php.ini文件

vi /usr/local/etc/php/5.6/php.ini

找到; extension=msql.so的位置,添加一行内容(参考下面)

; extension=msql.so
extension=gearman.so

重启php-fpm

命令行验证:

php-fpm -i |grep gearman
...
gearman
gearman support => enabled
libgearman version => 1.1.12

如果有看到gearman support =>enabled输出,说明gearman扩展安装成功了。

5.2. php使用gearman验证

thinkphp根目录下,新建一个名为client.php的文件(相当于MQ中的消息发送方),内容参考下面:

<?php
$client= new GearmanClient();
$client->addServer(); print $client->doNormal("myTask1", "111");
print "\n";
print $client->doNormal("myTask2", "222");
print "\n"; print $client->doBackground("myTask1", "AAA");
print "\n";
print $client->doBackground("myTask2", "BBB");
print "\n"; $client->doBackground("myTask1", "CCC");
$client->doBackground("myTask2", "DDD"); // while (true){
// sleep(10);
// }
?>

再创建一个worker.php(相当于MQ中的消息接收方)

<?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("myTask1", "myTask1_function");
$worker->addFunction("myTask2", "myTask2_function"); while ($worker->work()); function myTask1_function($job)
{
print($job->workload());
print "\n";
return ($job->workload())." done";
} function myTask2_function($job)
{
print($job->workload());
print "\n";
}
?>

验证,开二个终端窗口:

php /Users/jimmy/Work/Code/php/ThinkPHP_3.2.2/client.php
php /Users/jimmy/Work/Code/php/ThinkPHP_3.2.2/worker.php

如果client及worker窗口,都能内容正常输出,表示gearman及php代码工作正常。

  

六、seaslog扩展

wget http://pecl.php.net/get/SeasLog-1.5.3.tgz
tar -zxvf SeasLog-1.5.3.tgz
cd SeasLog-1.5.3
phpize
./configure --with-php-config=/usr/local/opt/php56/bin/php-config
sudo make
sudo make install

然后修改php.ini,添加以下二行  

extension = seaslog.so
seaslog.default_basepath =/Users/jimmy/data/log/seaslog

其中seaslog.default_basepath是日志存放的目录,大家根据本机情况自行调整。

 

七、redis扩展

wget http://pecl.php.net/get/redis-2.2.7.tgz

剩下的跟前面这些扩展的编译、安装方法类似,只是make install成功后,在php.ini里,加一行:

extension=redis.so

最后别忘记了重启php-fpm,然后来一个终极校验大法:thinkphp根目录下,放一个info.php,里面写上:

<?php
phpinfo();
?>

然后浏览http://localhost:8001/info.php,然后用浏览器的页面查找功能,搜索gearman, redis, seaslog, mysql这些关键字,如果能跳到相关的位置,说明安装成功了,参考下图:

  

mac机上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman扩展/seaslog扩展/redis扩展环境的更多相关文章

  1. docker学习(8) 在mac机上搭建私有仓库

    docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证 ...

  2. Mac上搭建直播服务器Nginx+rtmp

    简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 步骤安装 1.安装Homebrow Homebrew简 ...

  3. Mac上搭建直播服务器Nginx

    Mac上搭建直播服务器Nginx 1.安装Homebrew,执行命令 Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就 ...

  4. mac 教你如何在Mac上搭建自己的服务器——Nginx

    WHAT 本篇主要是基于Nginx在Mac上搭建自己的服务器. 我相信很多朋友肯定是第一次听到Nginx,关于它具有怎样的传奇,这儿肯定说不完也说不透. 有兴趣的朋友可以自行google或者baidu ...

  5. 在家用机上搭建 Git https 服务器

    今天主要叙述在家里台式机的虚拟机上搭建支持 https 的 ubuntu git 服务器. 实际上,从一个用户请求家里 git 服务器代码,最终完成代码的传输,主要是通过以下的过程: 首先,从外界寻找 ...

  6. 在Mac上搭建React Native开发环境

    概述 前面我们介绍过在window环境下开发React Native项目,今天说说怎么在mac上搭建一个RN的开发环境. 配置mac开发环境 基本环境安装 1.先安装Homebrew:用于安装Node ...

  7. LNMP环境搭建:Nginx安装、测试与域名配置

    Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件 2.编译安装Nginx (1)安装Nginx依赖函数库pcre pcre为“perl兼容正则表达 ...

  8. mac上搭建appium+IOS自动化测试环境(二)

    上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...

  9. [转] 在Mac上搭建React Native开发环境

    原文链接: http://blog.csdn.net/xiangzhihong8/article/details/53914336 概述 前面我们介绍过在window环境下开发React Native ...

随机推荐

  1. linux mount/umount挂载命令解析。

    如果想在运行的Linux下访问其它文件系统中的资源的话,就要用mount命令来实现. 2.      mount的基本用法是?格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: ...

  2. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  3. Bootstrap框架的学习(一)

    一.Bootstrap框架介绍 Bootstrap是一个非常优秀的前端UI框架,一个轻量级的UI前端框架,是基于HTML+CSS+JavaScript的框架. 二.简单介绍 Bootstrap框架是属 ...

  4. MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)

    最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题.这里写一篇文章,总结一下这几类问题,以及其对应的解决方案.方便其它项目组参考.   常见问题一:打开页面非常慢,有 ...

  5. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(三)

    (三) 搭建Windows Azure Pack环境 1安装SQL SERVER 2012 服务器 为简单起见,本例直接使用了Azure提供的具有SQLServer的Win2012 Server镜像来 ...

  6. Go语言开发

    Go语言圣经(中文版)     Go编程语言规范 搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇           Go开发工具 Go命令行操作命令详细介绍 ...

  7. 【转】MVC、MVP与MVT

    MVC是Model-View-Control的缩写,Model指的是数据层,View指的是UI层,Control指的是控制层,这三层之间彼此联系.View层的用户行为,触发Control层,Contr ...

  8. 应用SqlGeometry无法加载sqlserverspatial.dll

    最近需要完成一个API,通过用户上传的经纬度判断用户的所在县市省,数据量相对不是很大所以把相关数据全部扔到了内存里知行,主要用到了SqlGeometry, 代码写完后运行本地没问题,扔到服务器上开始报 ...

  9. 301和302 Http状态有啥区别?

    301和302 Http状态有啥区别? 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently ...

  10. JavaScript学习总结——我所理解的JavaScript闭包

    一.闭包(Closure) 1.1.什么是闭包? 理解闭包概念: a.闭包是指有权限访问另一个函数作用域的变量的函数,创建闭包的常见方式就是在一个函数内部创建另一个函数,也就是创建一个内部函数,创建一 ...