准备工作

新版的 Mac OS 内置了Apache 和 PHP,我的系统版本是OS X 10.9.3,可以通过以下命令查看Apache和PHP的版本号:

httpd -v

	Server version: Apache/2.2.26 (Unix)
	Server built:   Dec 10 2013 22:09:38

php --version

	PHP 5.4.24 (cli) (built: Jan 19 2014 21:32:15)
	Copyright (c) 1997-2013 The PHP Group
	Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

因为我们要自己动手来安装 Nginx,因此首先来关闭系统自带的apache:

sudo apachectl stop  #关闭apache,如果事先没开启过,可以忽略报错信息


如果你的apache已经加入了launchctl,使用下面的命令来关闭:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist


为什么选择关闭apache?因为mac os x系统自带的apache是没有优雅的remove/uninstall 的方式的… 对于“洁癖”比较严重的童鞋,可以选择直接删除相关的文件!

sudo rm /usr/sbin/apachectl
sudo rm /usr/sbin/httpd
sudo rm -r /etc/apache2/

sudo rm -r /usr/bin/php #删除自带的php


如果没有安装brew,可以按照官网的步骤安装

http://brew.sh/


nginx的安装与配置

#安装nginx
brew install nginx

sudo vim /usr/local/etc/nginx/nginx.conf #修改配置文件

#给予管理员权限
sudo chown root:wheel/usr/local/opt/nginx/bin/nginx
sudo chmod u+s/usr/local/opt/nginx/bin/nginx

#加入launchctl启动控制
mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist


运行nginx

sudo nginx #打开 nginx
nginx -s reload|reopen|stop|quit  #重新加载配置|重启|停止|退出 nginx
nginx -t   #测试配置是否有语法错误
用法详解

nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
选项列表

-?,-h           : 打开帮助信息
-v              : 显示版本信息并退出
-V              : 显示版本和配置选项信息,然后退出
-t              : 检测配置文件是否有语法错误,然后退出
-q              : 在检测配置文件期间屏蔽非错误信息
-s signal       : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
-p prefix       : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/)
-c filename     : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf)
-g directives   : 设置配置文件外的全局指令


mysql的安装与配置

#安装mysql
brew install mysql

cd /usr/local/opt/mysql/

sudo vim my.cnf #修改配置文件
#如果出现无法启动mysql,rm my.cnf 

#加入launchctl启动控制
mkdir -p ~/Library/LaunchAgents/
cp /usr/local/opt/mysql/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

#取消启动
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

#初始化 mysql
./bin/mysql_install_db 

#执行安全设置脚本,设置root账号密码
./bin/mysql_secure_installation

#命令行连接mysql
mysql -uroot -p


php的安装与配置

#brew 默认没有 php 安装包:
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php

#现在可以安装php了:
brew install php54 --with-imap --with-tidy --with-debug --with-mysql --with-fpm

将php路径加入PATH
sudo vim ~/.bash_profile	
export PATH="$(brew --prefix php54)/bin:$PATH"
	
source ~/.bash_profile

#加入launchctl启动控制
mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/php54/homebrew.mxcl.php54.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php54.plist

配置路径
/usr/local/etc/php/5.4/php.ini
/usr/local/etc/php/5.4/php-fpm.conf


使用系统自带的FPM:

php-fpm
#直接运行,有报错找不到配置文件。
[11-Jan-2014 16:03:03] ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)
[11-Jan-2014 16:03:03] ERROR: failed to load configuration file '/private/etc/php-fpm.conf'
[11-Jan-2014 16:03:03] ERROR: FPM initialization failed

可以在/private/etc/ 目录下生成配置文件,需要root权限(sudo)

或者在普通用户有权限的目录里放置配置文件,通过--fpm-config参数指定配置文件的位置,如下:

cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

php-fpm --fpm-config /usr/local/etc/php-fpm.conf


配置 Nginx 支持 PHP-FPM

sudo vim /usr/local/etc/nginx/nginx.conf	
	
# 添加默认首页 php
index  index.php index.html index.htm;
	
# 取消以下内容的注释,并做修改
location ~ \.php$ {
   fastcgi_intercept_errors on;
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.0_1/html$fastcgi_script_name;
   include        /usr/local/etc/nginx/fastcgi_params;
}


附:mac上一个启动和停止原生php-fpm相关操作的脚本

#!/usr/bin/env bash

DESC="php-fpm daemon"
NAME=php-fpm
# php-fpm路径
DAEMON=/usr/sbin/$NAME
# 配置文件路径
CONFIGFILE=/etc/$NAME.conf
# PID文件路径(在php-fpm.conf设置)
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/usr/sbin/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

rh_start() {
  $DAEMON -y $CONFIGFILE || echo -n " already running"
}

rh_stop() {
  kill -QUIT `cat $PIDFILE` || echo -n " not running"
}

rh_reload() {
  kill -HUP `cat $PIDFILE` || echo -n " can't reload"
}

case "$1" in
  start)
        echo "Starting $DESC: $NAME"
        rh_start
        #echo "\n"
        ;;
  stop)
        echo "Stopping $DESC: $NAME"
        rh_stop
        #echo "\n"
        ;;
  reload)
        echo "Reloading $DESC configuration..."
        rh_reload
        echo "reloaded."
  ;;
  restart)
        echo "Restarting $DESC: $NAME"
        rh_stop
        sleep 1
        rh_start
        #echo "\n"
        ;;
  *)
         echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
         exit 3
        ;;
esac
exit 0


可以将其保存在/usr/local/bin/,并附权限chmod u+x xxx.sh

然后可以如下执行:

sudo fpm {start|stop|restart|reload}


附:开机启动原生FPM

在 /Library/LaunchDaemons/ 目录新建 org.php.php-fpm.plist 文件:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
<plist version="1.0">  
<dict>  
    <key>Label</key>  
    <string>php-fpm</string>  
    <key>Program</key>  
    <string>/User/wyt/module/php/sbin/php-fpm</string>  
    <key>KeepAlive</key><true/>  
</dict>  
</plist>

launchctl load -w /Library/LaunchDaemons/org.php.php-fpm.plist


本文来自网络整理