MAC上使用LNMP随笔
准备工作
新版的 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,可以按照官网的步骤安装
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
本文来自网络整理