在macOS Sierra 10.12搭建PHP开发环境

macOS Sierra 11.12 已经帮咱们预装了 Ruby、PHP(5.6)、Perl、Python 等经常使用的脚本语言,以及 Apache HTTP 服务器。因为 nginx 既能做为 HTTP 服务器也能做为反向代理服务器,且配置简单,这里咱们用 nginx 代替 Apache 做为咱们默认的 HTTP 服务器。喜欢用 Apache 的同窗能够移步:The Perfect Web Development Environment for Your New Macphp

下面是我在 macOS Sierra 配置的 PHP 开发环境(MacOS-nginx-MySQL-PHP):html

安装命令行终端

这里咱们选择 iTerm2,iTerm2 功能强大,能够替代系统默认的命令行终端。下载解压后,将iTerm2 直接拖入"应用程序"目录。mysql

安装 IDE

这里咱们选择 JetBrains PhpStorm 做为集成开发环境。这个应该是这个星球最棒的 PHP IDE 了。nginx

安装 Xcode

Xcode 是苹果出品的包含一系列工具及库的开发套件。git

经过 App Store 安装最新版本的 Xcode。咱们通常不会用 Xcode 来开发 PHP 项目。但这一步也是必需的,由于 Xcode 会帮你附带安装一些如 Git 等必要的软件。固然你也能够经过源码包安装 Git。github

安装 Xcode Command Line Tools

这一步会帮你安装许多常见的基于 Unix 的工具。Xcode 命令行工具做为 Xcode 的一部分,包含了 GCC 编译器。在命令行中执行如下命令便可安装:web

xcode-select --install

当 Xcode 和 Xcode Command Line Tools 安装完成后,你须要启动 Xcode,并点击赞成接受许可协议,而后关闭 Xcode 就能够了。这一步骤也是必须的,不然Xcode包含的一系列开发工具都将不可用,例如 Git。redis

安装包管理器

Homebrew 做为 macOS 不可或缺的套件管理器,用来安装、升级以及卸载经常使用的软件。在命令行中执行如下命令便可安装:sql

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装后能够修改 Homebrew 源,国外源一直不是很给力,这里咱们将 Homebrew 的 git 远程仓库改成中国科学技术大学开源软件镜像:数据库

cd "$(brew --repo)"
git remote set-url origin git://mirrors.ustc.edu.cn/brew.git

安装 HTTP 服务器

这里咱们选择 nginx 代替系统自带的 Apache,做为咱们的 HTTP 服务器:

brew install nginx

安装完成后,nginx 的一些经常使用命令:

sudo nginx # 启动 nginx 服务
nginx -h # nginx 帮助信息
sudo nginx -s stop|quit|reopen|reload # 中止|退出|重启|重载 nginx 服务

安装数据库

这里咱们选择 MySQL 做为咱们的数据库服务器:

brew install mysql

固然,你也能够选择安装 PostgreSQL 或者 MariaDB。

安装完成后,启动 MySQL:

mysqld

若是不执行上述操做,直接经过命令行进入 MySQL,通常会报一个 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock’ 的错误。

进入 MySQL 服务器:

mysql -u root -p

开启 PHP-FPM

nginx 自己不能处理 PHP,它只是个 HTTP 服务器,当接收一个 PHP 请求后,nginx 会将其交由 PHP 解释器处理,并把结果返回给客户端。nginx 通常是把请求发 FastCGI 管理进程处理,FastCGI 管理进程选择 CGI 子进程处理结果并返回被 nginx。

PHP-FPM 是一个 PHP FastCGI 管理器,一开始只是 PHP 源代码的一个补丁,旨在将 FastCGI 进程管理整合进 PHP 包中。必须将它 patch 到 PHP 源代码中,在编译安装 PHP 后才能够使用。PHP 从版本 5.3 开始官方集成 PHP-FPM。

添加 PHP-FPM 的配置文件:

cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
php-fpm --fpm-config /private/etc/php-fpm.conf

修改 PHP-FPM 的 error_log 路径:

vi /var/log/php-fpm.log # 新建文件
vi /private/etc/php-fpm.conf # 将 error_log=log/php-fpm.log 修改成:error_log = /var/log/php-fpm.log,保存

启动 PHP-FPM:

sudo php-fpm

关闭 PHP-FPM:

ps aux|grep php-fpm
sudo kill php-fpm min pid # 杀死 php-fpm 最小的进程id

配置 nginx.conf 文件

经过如下命令能够查看 nginx.conf 文件的位置:

nginx -h

输出:

nginx version: nginx/1.10.1
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/Cellar/nginx/1.10.1/)
  -c filename   : set configuration file (default: /usr/local/etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

打开配置文件:

vi /usr/local/etc/nginx/nginx.conf

在文件末尾能够看到:

include servers/*;

它将同目录下的servers目录里的文件都包含了进来,由此,咱们能够在servers文件里建立开发项目的配置信息:

cd servers/
vi test.conf

将如下配置信息,写入 test.conf文件中:

server {
    listen 8099;
    server_name localhost;
    root /home/www/php_project;
    rewrite . /index.php;
    location / {
        index index.php index.html index.htm;
        autoindex on;
    }

    #proxy the php scripts to php-fpm
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi.conf;
        fastcgi_intercept_errors on;
        fastcgi_pass 127.0.0.1:9000;
    }
}

在上述的/home/www/php_project的目录下,咱们建立一个 index.php 文件:

cd /home/www/php_project
vi test.php

写入内容:

<?php
phpinfo();

重启 nginx:

sudo nginx -s stop
sudo nginx

打开浏览器,访问localhost:8099。能够看到关于 PHP 配置的信息。

至此,MNMP(MacOS-nginx-MySQL-PHP) 环境已经搭建完成。

安装 PHP 扩展

环境搭建完成后,你可能还须要安装一些 PHP 扩展,如 MemCache、Redis、Mongo、Solr 等。

在安装 PHP 扩展以前,你须要完成一些必要的操做

关闭 SIP

这是安装 PHP 扩展前的必要操做。若是跳过这一操做,即便你用 sudo 命令安装扩展,依旧会报 Operation not permitted 的错误。这是由于 OSX 10.11 El Capitan(或更高)新添加了一个新的安全机制叫系统完整性保护 System Integrity Protection (SIP),因此对于如下目录:

  • /System
  • /sbin
  • /usr 不包含(/usr/local/)

仅仅供系统使用,其它用户或者程序没法直接使用,而咱们的 /usr/lib/php/extensions/ 则恰好在受保护范围内(误伤世界上最好的语言)。

因此解决方法就是禁掉 SIP 保护机制,步骤是:

  1. 重启系统
  2. 按住 Command + R(从新亮屏以后就开始按,象征地按几秒再松开,直到出现苹果标志性的 Logo)
  3. 菜单“实用工具” ==>> “终端” ==>> 输入:csrutil disable。执行后会输出:Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect
  4. 重启系统

固然,PHP 扩展安装完成后,就能够从新打开 SIP,方法同上,命令改成:csrutil enable

安装一些必要的依赖包

安装 autoconf,phpize 生成 PHP 编译配置时须要:

brew install autoconf

安装 openssl,安装某些 PHP 扩展如 mongo 时须要:

brew install openssl

mongo 扩展安装是可能会报 openssl 错误,解决方法以下:

ln -s /usr/local/Cellar/openssl/1.0.2j/include/openssl /usr/include/openssl

正式安装扩展

这里有两种方法安装 PHP 扩展:

  • 经过 pecl 管理工具安装
  • 经过源码包安装

经过 pecl 管理工具安装

首先安装 pecl:

cd /usr/lib/php
sudo php install-pear-nozlib.phar

pecl 通常就会安装成功,若是失败,换另外一种方式安装 pecl:

curl -O http://pear.php.net/go-pear.phar
sudo php -d detect_unicode=0 go-pear.phar
  1. 输入 1,回车,输入/usr/local/pear
  2. 输入 4,回车,输入/usr/local/bin
  3. 回车

安装好 pecl 以后,咱们就能够愉快地安装 PHP 扩展了:

sudo pecl install solr
sudo pecl install memcache
sudo pecl install mongo

经过源码包安装

除了经过 pecl 安装,咱们还能够经过下载源码包来进行安装扩展:

wget http://pecl.php.net/get/redis-2.2.8.tgz
tar -zxvf redis-2.2.8.tgz
cd redis-2.2.8
phpize # 生成 php 编译配置                 
./configure # 编译配置检测
make # 编译
sudo make install # 安装

扩展安装完成后,咱们还需最后一步,修改php.ini文件,并重启 PHP-FPM:

cd /private/etc/
cp php.ini.default php.ini
vi php.ini

追加扩展信息:

extension=memcache.so
extension=mongo.so
extension=redis.so
extension=solr.so

重启 PHP-FPM:

ps aux|grep php-fpm
sudo kill php-fpm min pid # 杀死 php-fpm 最小的进程id
sudo php-fpm

打开浏览器,访问localhost:8099。查看扩展是否安装成功。

参考

github 地址

相关文章
相关标签/搜索