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