Mac下安装php7.0+nginx

最后更新于:2018-11-18 22:08:14

安装软件特别方便,建议大家没有安装的话最好安装一下,省的被各种以来弄得脑袋疼。在安装之前,有必要解释下apache和nginx解析PHP的原理。以前,我一直使用的是apache做web服务器,配置过apache的都应该知道,php是挂在apache下的一个模块,当http请求一个php文件的话,apache会调用php模块儿进行解析,然后返回html给apache。

而nginx又点不一样,它必须通过一个FastCGI的进程管理器来启动php解析,也就是是php-fpm,当nginx接受的php请求时,它会向它监听的fpm发送一个请求,当fpm接受到请求以后,在创建一个子进程来调用php进行解析。当解析完成后,回收线程,返回html给nginx,这里也引出了一个问题,那就是php鸡肋一般的单例,由于php的生命周期是伴随着一个请求的开始和结束,当这个请求完毕后,该线程就会自动回收了,所以php的静态对象,只能存在于一个请求当中,不想Java等其他语言,静态变量会一直存在。

好了,下面上安装步骤(提前安装好homebrew)

1.卸载mac自带的apache和php,有用集成环境,建议也删掉

先停掉apache:

sudo apachectl stop

然后统统删掉

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

2.安装nginx

brew install nginx

安装完后,先不急着修改配置文件

先设置权限

sudo chown root:wheel/usr/local/opt/nginx/bin/nginx
sudo chmod u+s/usr/local/opt/nginx/bin/nginx

如果想设开机启动的话

mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist(取消开机启动)

nginx命令

sudo nginx #打开 nginx
nginx -s reload|reopen|stop|quit  #重新加载配置|重启|停止|退出 nginx
nginx -t   #测试配置是否有语法错误
如果提示pid丢失的话,就用这句话
nginx -c "/usr/local/etc/nginx/nginx.conf"

好了nginx安装完毕,大家可以localhost一下,就可以看到nginx的信息了

3.安装MySQL

brew install mysql

加入开机启动
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

cd /usr/local/Cellar/mysql/5.7.11/bin

mysql_install_db

设置root账户和密码

./mysql_secure_installation 一直跟着提示走就行

4.先安装php7

brew install php70 --without-apache --with-fpm

因为我们用nginx,所有--without-apache,并且加上--with-fpm来编译php

安装完成后,加入全局变量

vim ~/.bash_profile 添加  export PATH=/usr/local/bin:/usr/sbin:$PATH

然后 vim ~/.bashrc  添加   export PATH = "$(brew --prefix homebrew/php/php70)/bin:$PATH"

最后 sourc ~/.bash_profile  source ~/.bashrc

然后加入开机自启

mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/php70/homebrew.mxcl.php70.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php70.plist

5.安装php5.6.18

brew install php56 --without-apache --with-fpm

vim ~/.bashrc  修改 export PATH = "$(brew --prefix homebrew/php/php70)/bin:$PATH"  为 export PATH = "$(brew --prefix homebrew/php/php70)/bin:$(brew --prefix             homebrew/php/php56)/bin$PATH";

然后加入开机自启

mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/php70/homebrew.mxcl.php56.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php70.plist

6.安装php版本切换公具

brew install php-version

安装完成后 vim ~/.bashrc 添加  source $(brew --prefix php-version)/php-version.sh && php-version 7后面的 &&php-version是你想默认开启的php版本。自己选一个就行

sourc .bashrc后,命令行输入php-version,就可以看到在你电脑中的所有php版本,你想用哪个就php-version 5.6.18 或 php-version7.0.2来切换版本

7.安装php扩展包

其实很简单,比如你想安装php7的xdebug扩展,就brew install php70-xdebug,想安装mcrypt就 brew install php70-mcrypt

如果想按5.6的就 brew install php56-xxxx,是不so easy,另外你可以 brew search php70,可以看到所有php7的扩展库,同理

也可以查php56的

8.配置nginx 和 php-fpm

nginx 配置 很简单,nginx的配置文件在 /usr/local/etc/nginx/文件中  vim nginx.conf

然后 根据 自己的需求去配置就行,这里就不用详细说了

php-fpm的配置:     先cd到  /usr/local/etc/php,你可以看到7.0和5.6这俩个文件夹,至于你想要改哪个,就改就行

这没什么配置的,就是把nginx和fpm的端口统一就行

9.最后关键

每次修改了php.ini文件。都要重启php-fpm,就行启动apache一样,不过这会不用重启nginx

重启步骤

sudo killall php-fpm 先停掉所有php-fpm的进程

cd  /usr/local/Cellar/php/版本号/sbin

不同版本的php,sbin目录里会有不同的php-fpm,比如php7.0的是php70-fpm, php5.6.18的是 php56-fpm,你想启动哪个fpm就

敲 sudo ./php70-fpm start 或php56-fpm start就行

结束语,

好了,大概就是这么个步骤,可能大家的实际安装配置过程中有所不同,但大体思路就是这样。遇到问题,不要灰心,解决了任何一个问题都会对自己有一个提高,每次解决完问题后的喜悦,不就当初选择这行的原因吗!