Mac nginx PHP7 MySQL5.7 环境搭建

在安装之前,有必要解释下apachenginx解析PHP的原理。以前,我一直使用的是apache做web服务器,配置过apache的都应该知道,php是挂在apache下的一个模块,当http请求一个php'文件的话,apache会调用php模块进行解析,然后返回htmlapache`。

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

下面是安装步骤 (提前安装好homebrew)

1、卸载mac自带的 apachephp,有用集成环境,建议也删掉。

先停掉apache

sudo apachectl stop

然后统统删除掉

sudo rm /usr/sbin/httpd
sudo rm -rf /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 -t #测试配置是否有语法错误
#如果提示pid丢失的话,就用这句话
nginx -c /usr/local/etc/nginx/nginx.conf

好了 nginx安装完毕,大家可以localhost:8080一下,就可以看到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
lauchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist(取消开机启动)

初始化mysql

cd /usr/loacl/Cellar/mysql5.7.11/bin
mysql_install_db

设置root账户和密码

./mysq_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   

6、安装php扩展包

其实很简单,比如你想安装php7xdebug扩展,就brew install php70-xdebug,想安装mcryptbrew install php70-mcrypt是不是so easy,另外你可以brew search php70可以看到所有php70的扩展库。

7、配置nginxphp-fpm

nginx 配置 很简单,nginx的配置文件在 /usr/local/etc/nginx/文件中 vim nginx.conf
然后 根据 自己的需求去配置就行,这里就不用详细说了
php-fpm的配置: 先cd/usr/local/etc/php,你可以看到7.0这个文件夹,这没什么配置的,就是把nginx和fpm的端口统一就行

8、最后关键

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

sudo killall php-fpm #先停掉所有php-fpm的进程
cd /usr/local/Cellar/php/7.0/sbin

sbin目录会有php70-fpm

sudo ./php70-fpm start #启动php-fpm

结束语

好了,大概就是这么个步骤,可能大家的实际安装配置过程有所不同,但大体思路就是这样。遇到问题,不要灰心,当你解决了这个问题的时候对你自身是一次提高,每解决完一个bug后的成就是不是满满的^_^!

本作品采用《CC 协议》,转载必须注明作者和本文链接
994914376
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

借宝地mark下

使用Homebrew常见的操作:

  1. 增加一个程序源(新增一个水龙头)brew tap homebrew/php
  2. 更新程序源 brew update
  3. 安装程序包(按照配方酿酒) brew install php71
  4. 查看安装某程序时有哪些参数 brew options php71
  5. 查看配置 brew config 可以看到程序包默认安装在/usr/local/Cellar下
  6. 搜索软件 brew search php
  7. 卸载或删除软件 brew remove php 或 brew uninstall --force php
  8. 查看已安装软件 brew list

安装PHP7.1(FPM方式)
官方软件源
首先加入Homebrew官方的几个软件源

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/php

更新源
brew update

安装PHP
根据如下命令选择你要装哪些参数

brew options php71

然后根据选择的参数开始安装

brew install php71 \
--with-debug \
--with-homebrew-curl \
--with-homebrew-libxslt \
--with-homebrew-libressl \
--with-homebrew-libxml2 \
--with-phpdbg \
--with-webp \
--with-imap

phpdbg:php 调试利器之phpdbg
webp : webp格式图片

安装 PHP 扩展

brew install --build-from-source php71-mcrypt \
php71-redis

常用扩展

php71-igbinary:序列化和反序列化 
php71-mcrypt:加密扩展库 
php71-mongodb:这个就不用说了,数据库 
php71-redis:缓存数据库 
php71-intl:国际化提供帮助 
php71-uuid:UUID含义是 通用唯一识别码 
php71-grpc:rpc框架的一种 
php71-swoole:swoole 
php71-ssh2:ssh2 
php71-xdebug:xdebug

更多其他扩展请输入以下命令查看

brew search php71

配置文件

/usr/local/etc/php/7.1/php.ini

或其他配置文件,到下面目录查看

cd /usr/local/etc/php/7.1/

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!