在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实现利用phpexcel导出数据
Aug 24 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
DOM基础及php读取xml内容操作的方法
Jan 23 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
php使用指定编码导出mysql数据到csv文件的方法
Mar 31 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
简单谈谈 php 文件锁
Feb 19 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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中ob函数缓冲机制深入理解
2015/08/03 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
js 操作css实现代码
2009/06/11 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
python与php实现分割文件代码
2017/03/06 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
2014中考励志标语
2014/06/05 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
大学生个人总结范文
2015/02/15 职场文书
酒店厨房管理制度
2015/08/06 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL