在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 地址

相關文章
相關標籤/搜索