在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程


Posted in PHP onDecember 21, 2015

安装homebrew

homebrew是mac下非常好用的包管理器,会自动安装相关的依赖包,将你从繁琐的软件依赖安装中解放出来。
安装homebrew也非常简单,只要在终端中输入:

<!-- lang: shell -->
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

homebrew的常用命令:

<!-- lang: shell -->
brew update #更新可安装包的最新信息,建议每次安装前都运行下
brew search pkg_name #搜索相关的包信息
brew install pkg_name #安装包

想了解更多地信息,请参看homebrew

安装nginx

安装

<!-- lang: shell -->
brew search nginx
brew install nginx

当前的最新版本是1.4.4。

配置

<!-- lang: shell -->
cd /usr/local/etc/nginx/
mkdir conf.d
vim nginx.conf
vim ./conf.d/default.conf

nginx.conf内容,

<!-- lang: shell -->
worker_processes 1; 

error_log    /usr/local/var/log/nginx/error.log warn;

pid    /usr/local/var/run/nginx.pid;

events {
  worker_connections 256;
}

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   /usr/local/var/log/nginx/access.log main;
  port_in_redirect off;
  sendfile    on; 
  keepalive_timeout 65; 

  include /usr/local/etc/nginx/conf.d/*.conf;
}

default.conf文件内容,

<!-- lang: shell -->
server {
  listen    8080;
  server_name localhost;

  root /Users/user_name/nginx_sites/; # 该项要修改为你准备存放相关网页的路径

  location / { 
    index index.php;
    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; 
  }  

}

安装php-fpm

Mac OSX 10.9以后的系统自带了PHP、php-fpm,省去了安装php-fpm的麻烦。
这里需要简单地修改下php-fpm的配置,否则运行php-fpm会报错。

<!-- lang: shell -->
sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
vim /private/etc/php-fpm.conf

修改php-fpm.conf文件中的error_log项,默认该项被注释掉,这里需要去注释并且修改为error_log = /usr/local/var/log/php-fpm.log。如果不修改该值,运行php-fpm的时候会提示log文件输出路径不存在的错误。

安装mysql

安装

<!-- lang: shell -->
brew install mysql

常用命令

<!-- lang: shell -->
mysql.server start #启动mysql服务
mysql.server stop #关闭mysql服务

配置
在终端运行mysql_secure_installation脚本,该脚本会一步步提示你设置一系列安全性相关的参数,包括:设置root密码,关闭匿名访问,不允许root用户远程访问,移除test数据库。当然运行该脚本前记得先启动mysql服务。

测试nginx服务

在之前nginx配置文件default.conf中设置的root项对应的文件夹下创建测试文件index.php:

<!-- ~/nginx_sites/index.php -->
<?php phpinfo(); ?>

启动nginx服务,

sudo nginx;

修改配置文件,重启nginx服务,

sudo nginx -s reload

启动php服务,

sudo php-fpm;

在浏览器地址栏中输入localhost:8080,如果配置正确地话,应该能看到PHP相关信息的页面。

PHP 相关文章推荐
Gregarius中文日期格式问题解决办法
Apr 22 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
PHP中使用gettext来支持多语言的方法
May 02 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
解析PHP工厂模式的好处
Jun 18 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
PHP反射API示例分享
Oct 08 PHP
Laravel 的数据库迁移的方法
Jul 31 PHP
PHP7内核CGI与FastCGI详解
Apr 14 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 #PHP
反射调用private方法实践(php、java)
Dec 21 #PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 #PHP
变量在 PHP7 内部的实现(二)
Dec 21 #PHP
变量在 PHP7 内部的实现(一)
Dec 21 #PHP
php阿拉伯数字转中文人民币大写
Dec 21 #PHP
详解PHP执行定时任务的实现思路
Dec 21 #PHP
You might like
PHP中实现进程间通讯
2006/10/09 PHP
抓取YAHOO股票报价的类
2009/05/15 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
python实现excel读写数据
2021/03/02 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Flask配置Cors跨域的实现
2019/07/12 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Python自省及反射原理实例详解
2020/07/06 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
机械绘图员岗位职责
2013/11/19 职场文书
通信生自我鉴定
2014/01/18 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
简历的自我评价范文
2014/02/04 职场文书
党员对照检查材料
2014/09/22 职场文书
优秀教师事迹材料
2014/12/15 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
2015年教研员工作总结
2015/05/26 职场文书
大学生暑期实践报告
2015/07/13 职场文书
合作合同协议书
2016/03/21 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python