mac機上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman擴展/seaslog擴展/redis擴展環境


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這些關鍵字,如果能跳到相關的位置,說明安裝成功了,參考下圖:

點擊看大圖  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM