在Mac OS下搭建LNMP开发环境的步骤详解


Posted in PHP onMarch 10, 2017

一、概述

大家应该都知道LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。下面来看看本文的详细内容吧。

二、安装Homebrew

使用Mac的程序员必不可少的一步便是安装Homebrew,他就像是centOS的yum命令和ubuntu的apt-get命令一样,通过brew命令,我们可以快速的安装一些软件包。

使用命令行安装Homebrew的命令如下:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

使用brew doctor检查是否存在冲突,然后使用brew update && brew upgrade对brew进行升级。

三、安装nginx

nginx在Mac OS中可以直接使用brew命令进行安装:

brew install nginx

如果需要使用80端口的话,需要将nginx加入root组当中:

sudo cp -v /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

然后使用命令启动nginx服务:

sudo nginx

测试nginx是否安装成功,因为默认配置文件监听的是8080端口,所以先对8080端口发起请求:

curl -IL http://127.0.0.1:8080

结果应该类似于下:

HTTP/1.1 200 OK
Server: nginx/1.9.1
Date: Fri, 29 May 2015 14:50:47 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 29 May 2015 14:40:47 GMT
Connection: keep-alive
ETag: "5444dea7-264"
Accept-Ranges: bytes

nginx的相关操作如下:

sudo nginx //启动nginx
sudo nginx -s reload|reopen|quit //重新加载|重启|退出

四、安装php-fpm

因为brew并没有php-fpm的源,所以首先要添加源:

brew tap homebrew/dupes
brew tap homebrew/php

然后安装php-fpm,输入命令:

brew install php56 --whitout-apache --with-imap --with-tidy --with-debug --with-pgsql --with-mysql --with-fpm

程序会自动安装,等待几分钟后完成安装。

安装完成后,还需要将php加入$PATH当中:

# 如果使用bash的话
vim ~/.bash_profile
export PATH="/usr/local/sbin:$PATH"
source ~/.bash_profile

# 如果使用ZSH的话
vim ~/.zshrc
export PATH="/usr/local/sbin:$PATH"
source ~/.zshrc

然后可以设置php-fpm的开机自启动:

mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/php56/homebrew.mxcl.php56.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

使用以下命令监测php-fpm是否启动成功:

lsof -Pni4 | grep LISTEN | grep php

如果启动成功应当有以下类似输出:

php-fpm 27578 wenzhiquan 9u IPv4 0xf29f8b26c08fc27  0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 27628 wenzhiquan 0u IPv4 0xf29f8b26c08fc27  0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 27629 wenzhiquan 0u IPv4 0xf29f8b26c08fc27  0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 27630 wenzhiquan 0u IPv4 0xf29f8b26c08fc27  0t0 TCP 127.0.0.1:9000 (LISTEN)

五、安装MySQL

MySQL也可以使用brew命令直接进行安装:

brew install mysql

同样,可以设置MySQL的开机自启动:

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

然后进行MySQL的安全安装,使用以下命令,可以更改root密码、删除匿名用户、关闭远程连接等:

mysql_secure_installation

然后会输出以下内容:

> Enter current password for root (enter for none):  //默认没有密码,直接回车即可
> Change the root password? [Y/n]      //是否更改root密码,选择是,然后输入并确认密码
> Remove anonymous users? [Y/n]       //是否删除匿名用户,选择是
> Disallow root login remotely? [Y/n]     //是否禁止远程登录,选择是
> Remove test database and access to it? [Y/n]   //是否删除test数据库,选择是
> Reload privilege tables now? [Y/n]     //是否重载表格数据,选择是

测试数据库是否安装成功:

mysql -u root -p

然后输入刚才设置的root密码,将会输出以下内容:

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit   //输入exit退出数据库

六、配置nginx

首先,为我们的配置文件创建一些文件夹,这些是仿照ubuntu的nginx结构进行建立的目录:

mkdir -p /usr/local/etc/nginx/logs
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

sudo mkdir -p /var/www
sudo chown :staff /var/www
sudo chmod 775 /var/www

然后修改nginx配置文件:

vim /usr/local/etc/nginx/nginx.conf

将内容替换为:

worker_processes 1;

error_log /usr/local/etc/nginx/logs/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 /usr/local/etc/nginx/logs/access.log main;

 sendfile   on;

 keepalive_timeout 65;

 index index.html index.php;

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

然后创建php-fpm配置文件:

vim /usr/local/ect/nginx/conf.d/php-fpm

输入以下内容:

location ~ \.php$ {
 try_files  $uri = 404;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include  fastcgi_params;
}

然后加入站点配置文件:

vim /usr/local/ect/nginx/sites-enabled/default

输入以下内容:

server {
 listen  80;
 server_name localhost;
 root  /var/www/;

 access_log /usr/local/etc/nginx/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;
}

重启nginx,至此,配置完成,在www下写一个测试文件,进行测试即可

总结

以上就是在Mac OS上搭建LNMP开发环境的全部步骤了,尽情的享受在Mac OS开发PHP的快感吧!希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php 日期时间处理函数小结
Dec 18 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
PHP简单选择排序算法实例
Jan 26 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
PHP连接access数据库
Mar 27 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
php workerman定时任务的实现代码
Dec 23 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
Yii2.0中使用js异步删除示例
Mar 10 #PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 #PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 #PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
Mar 08 #PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 #PHP
php封装json通信接口详解及实例
Mar 07 #PHP
PHP获取真实客户端的真实IP
Mar 07 #PHP
You might like
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
2017/07/06 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
Python教程之全局变量用法
2016/06/27 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
使用Python读取大文件的方法
2018/02/11 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
优秀教研组申报材料
2014/12/26 职场文书
统计员岗位职责范本
2015/04/14 职场文书
运动会主持词大全
2015/07/02 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
Python实现视频中添加音频工具详解
2021/12/06 Python
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android