MAC OSX 10.11 El Capitan 安装配置Nginx+PHP+Mysql环境
10.10以前一直都是使用自带的apache+php的环境,但是自带的PHP版本不新,而且有些PHP的插件并没有安装上,所以这次升级了10.11就准备直接重新安装PHP,而且现在我的服务器用的都是Nginx,所以,就打算索性直接也安装一个nginx好了。在此记录一下安装过程。
MAC环境下有一个好用的软件安装方法,使用homebrew来安装各个软件既快捷又不用考虑依赖包的问题。
1、先安装homebrew,官网:http://brew.sh/index_zh-cn.html,终端下执行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
一句命令就安装完成了。
2、安装Nginx,终端下执行:
brew install nginx
安装完成后,使用浏览器打开http://localhost:8080 ,如果展示页面正常,证明安装完成。
nginx有以下几个操作命令(命令执行不成功,请使用sudo提权):
#打开 nginx nginx #nginx -s 重新加载配置|重启|停止|退出 nginx -s reload|reopen|stop|quit #测试配置是否有语法错误 nginx -t
我本次安装的nginx版本是1.8.0,所以,默认访问目录为
/usr/local/Cellar/nginx/1.8.0/html
nginx的配置文件位置为:
/usr/local/etc/nginx/nginx.conf
如果需要开机自动启动nginx,执行
mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/nginx/1.8.0/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
3、安装Mysql,终端执行
brew install mysql
安装完成后默认没有密码,修改密码(新版本需要使用 mysql_secure_installation 命令来更改密码)
mysql -uroot -p Enter password: 【输入原来的密码,安装完默认为空,直接回车】 mysql>use mysql; mysql> UPDATE user SET password=password("修改的密码") WHERE user='root';
mysql_secure_installation命令修改密码会提示是否使用VALIDATE PASSWORD PLUGIN插件,如果使用则要求输入密码的安全级别,如果是自己本机搭建的话可以这里选择否,输入一个比较简单的密码,也方便开发的灵活性
mysql的操作命令
#开启 mysql.server start #结束 mysql.server stop
我本次安装的Mysql版本是5.6.27,配置文件位置
/usr/local/Cellar/mysql/5.6.27/my.cnf
新版本这些位置是没有配置文件的, 所以要自己建一个
ls $(brew --prefix mysql)/support-files/my-* (用这个可以找到样例.cnf) cp /usr/local/opt/mysql/support-files/my-default.cnf /etc/my.cnf (拷贝到第一个默认读取目录)
按需修改my.cnf
需要开机自启动执行
mkdir -p ~/Library/LaunchAgents/ cp /usr/local/Cellar/mysql/5.6.27/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
4、安装php,添加扩展库,终端执行
liondeMacBook-Pro:~ lion$ brew update liondeMacBook-Pro:~ lion$ brew tap homebrew/dupes liondeMacBook-Pro:~ lion$ brew tap homebrew/versions liondeMacBook-Pro:~ lion$ brew tap homebrew/php
可以查看有哪些版本可供安装
brew search php
我本次安装的是php5.6.14,默认安装方法
brew install php56
也可以通过查看可选选项来自定义安装
brew options php56 brew install php56 --with-debug 等等
安装完成以后,由于OSX 10.11自带php5.5.27,所以,需要把默认指向的位置改为新安装的php位置
echo 'export PATH="$(brew --prefix homebrew/php/php56)/bin:$PATH"' >> ~/.bash_profile #for php echo 'export PATH="$(brew --prefix homebrew/php/php56)/sbin:$PATH"' >> ~/.bash_profile #for php-fpm echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile #for other brew install soft source ~/.bash_profile #更新配置
执行完成以后,可以使用一下命令来检测是否是自己安装的新php
php -v php-fpm -v
php配置文件位置
/usr/local/etc/php/5.6/php.ini
php-fpm配置文件位置
/usr/local/etc/php/5.6/php-fpm.conf
启动 php-fpm 的话就直接在终端里执行 "php-fpm",默认打开 php-fpm 会显示一个状态 shell 出来,也可以把 php-fpm 的配置文件里的 "daemonize = no" 改为 "daemonize = yes",就会以后台守护进程的方式启动,对于刚修改的配置文件,可以执行 "php-fpm -t" 来检测配置有没有问题。
如果需要开机自动启动php-fpm,执行
mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/php56/5.6.14/homebrew-php.josegonzalez.php56.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php56.plist
5、配置nginx
打开nginx的配置文件在最后的 “ } ” 之前添加一句
include vhost/*.conf;
用于引入vhost目录下的其他配置文件,同时新建目录
/usr/local/etc/nginx/vhost
在目录里面新建一个配置文件,例如:8001.phpmyadmin.conf, 这里以phpmyadmin为例,内容为
server { listen 8001; #listen [::]:80; server_name localhost; index index.html index.htm index.php default.html default.htm default.php; root /Users/leo/web/8001_phpMyAdmin; #这里是你的项目目录 #include none.conf; #error_page 404 /404.html; location ~ [^/]\.php(/|$) { # comment try_files $uri =404; to enable pathinfo try_files $uri =404; fastcgi_index index.php; include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; #include pathinfo.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } access_log off; }
6、全部安装配置完成,启动nginx、php-fpm和mysql即可,访问http://localhost:8001就可以进入phpmyadmin的页面了。
如果不想开机自启动以上程序,可以写个脚本用于 启动|停止|重启
新建bh_nmp.sh,内容如下:
#!/bin/bash param=$1 start() { #启动nginx nginx #启动mysql mysql.server start #启动php-fpm fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'` if [ ! -n "$fpms" ]; then php-fpm echo "PHP-FPM Start" else echo "PHP-FPM Already Start" fi } stop() { #停止nginx nginx -s stop #停止mysql mysql.server stop #停止php-fpm fpms=`ps aux | grep -i "php-fpm" | grep -v grep | awk '{print $2}'` echo $fpms | xargs kill -9 for pid in $fpms; do if echo $pid | egrep -q '^[0-9]+$'; then echo "PHP-FPM Pid $pid Kill" else echo "$pid IS Not A PHP-FPM Pid" fi done } case $param in 'start') start;; 'stop') stop;; 'restart') stop start;; *) echo "Usage: ./bh_nmp.sh start|stop|restart";; esac