在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应用程序来获取Web服务器的状态信息
Oct 09 PHP
php 空格,换行,跳格使用说明
Dec 18 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
Nov 26 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
PHP无限分类(树形类)
Sep 28 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
tp5框架内使用tp3.2分页的方法分析
May 05 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
简单了解Python write writelines区别
2020/02/27 Python
keras K.function获取某层的输出操作
2020/06/29 Python
关爱残疾人演讲稿
2014/05/24 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
介绍信如何写
2015/01/31 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript