Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境


Posted in PHP onMarch 03, 2015

Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境。但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache和php,在brew的帮助下非常容易手动搭建,可控性很高。

Brew

brew对于mac,就像apt-get对于ubuntu,安装软件的好帮手,不能方便更多…

brew的安装方式如下:

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

brew常用选项

brew install xxx

brew uninstall xxx

brew list 

brew update xxx

Apache || Nginx

Apache

Apache的话使用mac自带的基本就够了,我的系统是10.9,可以使用以下命令控制Apache

sudo apachectl start

sudo apachectl restart

sudo apachectl stop

唯一要改的是主目录,mac默认在home下有个sites(站点)目录,访问路径是

http://localhost/~user_name

这样很不适合做开发用,修改/etc/apache2/httpd.conf内容

DocumentRoot "/Users/username/Sites"

<Directory />

    Options Indexes MultiViews

    AllowOverride All

    Order allow,deny

    Allow from all

</Directory>

这样sites目录就是网站根目录了,代码都往这个下头丢

Nginx

要使用Nginx也比较方便,首先安装

brew install nginx

启动关闭Nginx的命令如下(如果想要监听80端口,必须以管理员身份运行)

#打开 nginx

sudo nginx

#重新加载配置|重启|停止|退出 nginx

nginx -s reload|reopen|stop|quit

#测试配置是否有语法错误

nginx -t

配置Nginx

cd /usr/local/etc/nginx/

mkdir conf.d

修改Nginx配置文件

vim nginx.conf

主要修改位置是最后的include

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;

}

修改自定义文件

vim ./conf.d/default.conf

增加一个监听端口

server {

    listen       80;

    server_name  localhost;

 

    root /Users/username/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站点,因为还没有开启php-fpm。

虽然mac 10.9自带了php-fpm,但是由于我们使用了最新的PHP,PHP中自带php-fpm,所以使用PHP中的php-fpm可以保证版本的一致。

这里的命令在安装完下一步的php后再执行

sudo nginx

sudo php-fpm -D

PHP

PHP在mac下默认安装了,但是不好控制版本,利用brew可以再mac下安装最新版本,甚至是多个版本,我装了php5.5

brew update

brew tap homebrew/dupes

brew tap josegonzalez/homebrew-php

# brew install php55 --with-fpm #Nginx

brew install php55 #Apache

然后修改php的cli路径和apache使用的php模块。在.bashrc或.zshrc里头加以下内容
#export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH" 

export PATH="/usr/local/bin:/usr/local/sbin:$PATH"

就用刚刚安装的php代替了系统默认cli的php版本。然后在/etc/apache2/httpd.conf下增加
LoadModule php5_module /usr/local/Cellar/php55/5.5.8/libexec/apache2/libphp5.so

这样就对apache使用的php版本也进行了修改。

后面会用到mongo和mysql,所以可以直接利用下面命令安装php模块,其他模块也类似

brew install php55-mysql

brew install php55-mongo

MySQL

mac不自带mysql,这里需要重新安装,方法依然很简单

brew install mysql

unset TMPDIR

mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

sudo chown -R your_user /usr/local/var/mysql/

第一句是安装,后面的是确保正常使用。然后是启动命令

mysql.server start

最好给mysql设个密码,方法如下
mysqladmin -u root password 'xxx'

如果想修改mysql的配置,在/usr/local/etc下建立一个my.cnf,例如增加log
[mysqld]

general-log

general_log_file = /usr/local/var/log/mysqld.log

MongoDB

MongoDB可以说是最简单的一个,直接执行

brew install mongodb

启动方法

mongod --fork

PHPMyAdmin

phpmyadmin几乎是管理mysql最容易的web应用了吧,每次我都顺道装上。

1.去官网下载最新的版本
2.解压到~/Sites/phpmyadmin下
3.在phpmyadmin目录下创建一个可写的config目录
4.打开http://localhost/phpmyadmin/setup,安装一个服务,最后保存(这里只需要输入帐号密码就够了)
5.将config下生成的config.inc.php移到phpmyadmin根目录下
6.删除config

这样就装好了,虽然可能有点小复杂,但是来一次就习惯了。

这里很可能会遇到2002错误,就是找不到mysql.sock的问题,用下面方法解决

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

RockMongo

RockMongo是MongoDB很好用的一个web应用,安装也很容易

1.去官网下载最新版本
2.解压到~/Sites/rockmongo下
3.运行http://localhost/rockmongo即可

完成

这样就在mac下配置好一个php开发环境了,enjoy it!

PHP 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
php返回json数据函数实例
Oct 09 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
php无限级分类实现方法分析
Oct 19 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 #PHP
laravel安装zend opcache加速器教程
Mar 02 #PHP
分享一个Laravel好用的Cache宏
Mar 02 #PHP
php解析http获取的json字符串变量总是空白null
Mar 02 #PHP
laravel 5 实现模板主题功能(续)
Mar 02 #PHP
laravel 5 实现模板主题功能
Mar 02 #PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 #PHP
You might like
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
jquery select选中的一个小问题
2009/10/11 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
理解javascript异步编程
2016/01/27 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
Python 多核并行计算的示例代码
2017/11/07 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
银行求职推荐信范文
2013/11/30 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
工作收入证明模板
2014/10/10 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
质量保证书格式模板
2015/02/27 职场文书
幼师辞职信范文
2015/02/27 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL