在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 相关文章推荐
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
探讨php中防止SQL注入最好的方法是什么
Jun 10 PHP
CI框架学习笔记(二) -入口文件index.php
Oct 27 PHP
Yii数据库缓存实例分析
Mar 29 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
PHP常用函数总结(180多个)
Dec 25 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP大文件分片上传的实现方法
Oct 28 PHP
PHP基于cookie实现统计在线人数功能示例
Jan 16 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
最省空间的计数器
2006/10/09 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
js常见遍历操作小结
2019/06/06 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
建筑经济管理专业求职信分享
2014/01/06 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
护士个人年度总结范文
2015/02/13 职场文书
教师节主题班会方案
2015/08/17 职场文书
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS