在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 相关文章推荐
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
ThinkPHP实现多数据库连接的解决方法
Jul 01 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
php session实现多级目录存放实现代码
Feb 03 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP生成图表pChart的示例解析
Jul 31 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
php代码书写习惯优化小结
2013/06/20 PHP
php rsa加密解密使用详解
2015/01/14 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
JSON 教程 json入门学习笔记
2020/09/22 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
javascript常用的方法分享
2015/07/01 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
js实现随机数小游戏
2019/06/28 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
Python的形参和实参使用方式
2019/12/24 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
满月酒邀请函
2015/01/30 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
孙振耀退休感言
2015/08/01 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
基于redis+lua进行限流的方法
2022/07/23 Redis
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS