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 相关文章推荐
php中用数组的方法设置cookies
Apr 21 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
php中http与https跨域共享session的解决方法
Dec 20 PHP
Yii2框架使用计划任务的方法
May 25 PHP
Yii CGridView用法实例详解
Jul 12 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
Yii框架常见缓存应用实例小结
Sep 09 PHP
tp5 sum某个字段相加得到总数的例子
Oct 18 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
使用图灵api创建微信聊天机器人
2015/07/23 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
python实现textrank关键词提取
2018/06/22 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
python使用Matplotlib画条形图
2020/03/25 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
python输出pdf文档的实例
2020/02/13 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
单位综合评价意见
2015/06/05 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang