php7的发布对于我等phper是一个重大的消息,做为一只码农,怎么不能够去膜拜一番呢,在保留工作时用的php5.6环境,再安装个php7.因此猿猿我用了个周末把环境搭了一遍,但是,其中走了不少弯路,写出来以便大
家以后碰到类似的问题而不用大废周折。
我平时开发用的是MAC,因此只针对MAC下的开发用户。用过ubuntu和centos的同类们,都知道apt-get,和yum这俩个神器,Mac 也有和这俩工具差不多的玩意,homebrew,
安装软件特别方便,建议大家没有安装的话最好安装一下,省的被各种以来弄得脑袋疼。在安装之前,有必要解释下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/LaunchAgents6.安装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就行
结束语,
好了,大概就是这么个步骤,可能大家的实际安装配置过程中有所不同,但大体思路就是这样。遇到问题,不要灰心,解决了任何一个问题都会对自己有一个提高,每次解决完问题后的喜悦,不就当初选择这行的原因吗!