mac机上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman扩展/seaslog扩展/redis扩展环境

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: php的各种扩展配置起来实在不容易,记录一下备忘: 一、php56 安装 虽然php7出来了,但是没用过,不知道有没有坑,这里仍然使用php5.6版本 1.1 安装php/php-pfm  brew update brew tap homebrew/dupes brew tap jo...

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这些关键字,如果能跳到相关的位置,说明安装成功了,参考下图:

点击看大图  

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
|
4天前
|
存储 NoSQL PHP
PHP与Redis结合使用,提升数据存储性能
随着互联网应用的发展,PHP与Redis的结合成为提升数据存储性能的重要手段。PHP作为流行的服务器端语言,常用于网站开发;Redis作为高性能内存数据库,以其快速读写能力,有效优化数据访问速度,减轻数据库压力。两者结合通过缓存机制显著提升应用响应速度,支持高并发场景下的稳定性和可扩展性。
|
11天前
|
存储 NoSQL 关系型数据库
PHP 使用 Redis
10月更文挑战第22天
22 6
|
1月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
2月前
|
项目管理 Python
如何在Mac上安装多个Python环境
在你的Mac上使用多个Python环境可以对项目管理很有帮助,特别是在同时处理不同Python版本或不同的包需求时。在这篇文章中,我们将向你展示如何在Mac上轻松地安装和管理多个Python环境。
55 5
 如何在Mac上安装多个Python环境
|
20天前
|
PyTorch TensorFlow 算法框架/工具
手把手教你-MAC笔记本安装Pytorch环境
手把手教你-MAC笔记本安装Pytorch环境
21 0
|
2月前
|
JavaScript Linux Android开发
mac环境下搭建frida环境并连接网易mumu模拟器
这篇文章介绍了如何在mac环境下搭建Frida环境,并详细说明了如何连接网易MuMu模拟器进行动态分析。
117 1
|
1月前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
16 0
|
1月前
|
缓存 NoSQL 数据处理
原生php实现redis缓存配置和使用方法
通过上述步骤,你可以在PHP项目中配置并使用Redis作为高性能的缓存解决方案。合理利用Redis的各种数据结构和特性,可以有效提升应用的响应速度和数据处理效率。记得在实际应用中根据具体需求选择合适的缓存策略,如设置合理的过期时间,以避免内存过度消耗。
44 0
|
2月前
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。