Mac OS下配置PHP Nginx PHP-FPM

首先需要安装homebrew, 不赘述了

php-fpm

php-fpm是mac下自带的软件, 而且兼容不同的PHP版本, 不用额外安装, 但是fpm是需要配置的, 在/private/etc下有个模板, 执行

cd /private/etc
cp php-fpm.conf.default php-fpm.conf
  1. 修改php-fpm.conf中的listen行, 将listen = 127.0.0.1改为listen = /tmp/php-fpm.sock, 这样运行php-fpm后就会生成/tmp/php-fpm.sock文件, nginx可以与这个socket文件交互了(当然也可以用默认的监听端口的方式, 但是指定socket的方式可以避免端口占用的问题, 我认为要放心一些)
  2. 修改error_log项, 改为error_log = /usr/local/var/log/php-fpm.log
  3. 修改pid项, 改为pid = /usr/local/var/run/php-fpm.pid, pid文件记录fpm的pid, 后续可以用cat /usr/local/var/run/php-fpm.pid的方式获得pid
  4. sudo php-fpm, 大功告成!

php

我安装了php56, 后来又安装了php54...brew install php56即可
设置php56开机启动

ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

在命令行中运行php时, 还需要指定shell环境下的php版本号, 导入环境变量, 在~/.zshrc中添加一行
export PATH="$(brew --prefix php56)/bin:$PATH", 重启zsh, 搞定!

问题解决

过程中碰到[crit] 2963#0: *138 connect() to unix:/tmp/php5-fpm.sock failed (13: Permission denied) while connecting to upstream的问题, google到解决方案, 这是由于没有指定nginx的用户, nginx的用户没有权限访问fpm造成的
/private/etc/php-fpm.conf中找到listen行, 在后面添加

listen.owner = nobody
listen.group = nobody

并且在/usr/local/etc/nginx/nginx.conf中找到user行, 默认的是被注释掉的, 取消注释, 这时的用户是nobody, 重启nginx和fpm, 问题得到解决

仍然存在的问题 && 收获

本来是为了装phpmyadmin才配的php环境, 现在还是没装好(╯‵□′)╯︵┻━┻ 始终报"Primary Script Unknown"的错误, 暂时不管它了, 换一个图形化工具管理MySQL好了, 还是做项目要紧...另外, 真的是对nginx配置非常不熟, 依然处于需要的时候各种google加复制粘贴, 有空一定要好好学习一下...

这次折腾发现了两个不错的链接nginx pitfallsnginx配置分析, 后一篇给了几个不错的链接, 要好好消化下.

orz...

posted @ 2015-02-17 22:56  mrzero  阅读(4091)  评论(0编辑  收藏  举报