Installing PHP 7 with nginx on mac OS X

70

Install Commandline Tools

xcode-select --install

Install Homebrew

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

Check Installation

brew doctor

Install brew services

brew tap homebrew/services

Install bash completion (Optional)

brew install bash-completion

Update Brew and Packages if allready installed

brew update && brew upgrade

Setup Environment

sudo nano ~/.bash_profile

Add following lines

  ##
  # Homebrew
  ##
  export PATH="/usr/local/bin:$PATH"
  export PATH="/usr/local/sbin:$PATH"

  ##
  # Homebrew bash completion
  ##
  if [ -f $(brew --prefix)/etc/bash_completion ]; then
    source $(brew --prefix)/etc/bash_completion
  fi

PHP-FPM

Install php70

  brew tap homebrew/dupes && \
  brew tap homebrew/php && \
  brew install --without-apache --with-fpm --with-mysql php70

Configure

sudo nano /usr/local/etc/php/7.0/php-fpm.d/www.conf

  user = YOUR_USERNAME
  group = YOUR_GROUP || staff

Testing

start php-fpm

sudo brew services start php70

show running processes

lsof -Pni4 | grep LISTEN | grep php

NGINX

Install NGINX

brew tap homebrew/nginx && \
brew install nginx

Test Installation

  ## Start Nginx
  sudo brew services start nginx

  ## Check if Nginx is running on default port
  curl -IL http://127.0.0.1:8080

Output should look like this

HTTP/1.1 200 OK
Server: nginx/1.10.0
Date: Sat, 07 May 2016 07:36:32 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 Apr 2016 13:31:24 GMT
Connection: keep-alive
ETag: "571f6dac-264"
Accept-Ranges: bytes

Stop Nginx

sudo brew services stop nginx

Configure

Create missing directories

  mkdir -p /usr/local/etc/nginx/sites-available && \
  mkdir -p /usr/local/etc/nginx/sites-enabled && \
  mkdir -p /usr/local/etc/nginx/conf.d && \
  mkdir -p /usr/local/etc/nginx/ssl

Configure nginx.conf

# Remove default
vi  /usr/local/etc/nginx/nginx.conf
# Copy below
worker_processes  1;

error_log  /Library/Logs/nginx/error.log debug;

events {
    worker_connections  1024;
}

http {
    include             mime.types;
    default_type        application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /Library/Logs/nginx/access.log  main;

    sendfile            on;

    keepalive_timeout   65;

    index index.html index.php;

    include /usr/local/etc/nginx/sites-enabled/*; 
}

Start and Test Nginx

  ## Start Nginx
  sudo brew services start nginx

  ## Check if Nginx is running on default port
  curl -IL http://localhost

  ## Output should look like this
  HTTP/1.1 200 OK
  Server: nginx/1.10.0
  Date: Sat, 07 May 2016 08:35:57 GMT
  Content-Type: text/html
  Content-Length: 612
  Last-Modified: Tue, 26 Apr 2016 13:31:24 GMT
  Connection: keep-alive
  ETag: "571f6dac-264"
  Accept-Ranges: bytes

Setup SSL

Create a folder for our SSL certificates and private keys:

mkdir -p /usr/local/etc/nginx/ssl

Generate 4096 bit RSA keys and the self-sign the certificates in one command:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=localhost" -keyout /usr/local/etc/nginx/ssl/localhost.key -out /usr/local/etc/nginx/ssl/localhost.crt

Setup example virtual hosts

These are working presets. But you need to edit Document-Root

server {
    listen       80;
    server_name  localhost;
    root       /Users/leeladharan/Sites;

    access_log  /Library/Logs/default.access.log  main;

    location / {
        include   /usr/local/etc/nginx/conf.d/php-fpm;
    }

    location = /info {
        allow   127.0.0.1;
        deny    all;
        rewrite (.*) /.info.php;
    }

    error_page  404     /404.html;
    error_page  403     /403.html;
}

server {
    listen       443;
    server_name  localhost;
    root       /Users/leeladharan/Sites;

    access_log  /Library/Logs/default-ssl.access.log  main;

    ssl                  on;
    ssl_certificate      ssl/localhost.crt;
    ssl_certificate_key  ssl/localhost.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        include   /usr/local/etc/nginx/conf.d/php-fpm;
    }

    location = /info {
        allow   127.0.0.1;
        deny    all;
        rewrite (.*) /.info.php;
    }

    error_page  404     /404.html;
    error_page  403     /403.html;
}

Activate Virtual Hosts

ln -sfv /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default
ln -sfv /usr/local/etc/nginx/sites-available/default-ssl /usr/local/etc/nginx/sites-enabled/default-ssl

Create info.php for testing echo "<?php phpinfo();" > /path/to/your/document/root

Test

sudo brew services restart nginx

curl -IL http://localhost/info.php

# Output should look like this
HTTP/1.1 200 OK
Server: nginx/1.10.0
Date: Sat, 07 May 2016 08:40:36 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.0.6

Restarting PHP-FPM

write this shell script and execute

#!/bin/sh

echo "Stopping php-fpm..."
brew services stop php70

echo "Starting php-fpm..."
brew services start php70

echo "php-fpm restarted"
exit 0

说点什么

7 评论 在 "Installing PHP 7 with nginx on mac OS X"

提醒
排序:   最新 | 最旧 | 得票最多

抱着学习的态度来看看

玉不琢不成器,人不学不知道,拜读了!

我也有过博客,不过那都是很多年前的事情了!

值得思考哦,受教了!

看了大有收获,真的没有白来!

来学习的,可以做友情链接吗?
我们站是北京电话群呼系统http://www.bupacha.cn,适合做电话销售行业,8分钱一分钟,QQ138130

感受学习的力量!

wpDiscuz