本文主要和大家分享mac下搭建php环境,最近工作环境切换到Mac,所以以OS X Yosemite(10.10.1)为例,记录一下从零开始安装Mac下LNMP环境的过程

确保系统已经安装xcode,然后使用一行命令安装依赖管理工具Homebrew。ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

之后就可以使用brew install FORMULA

来安装所需要的依赖了。

brew(意为酿酒)的命名很有意思,全部都使用了酿酒过程中采用的材料/器具,名词对应以下的概念:Formula(配方) 程序包定义,本质上是一个rb文件

Keg(桶)程序包的安装路径

Cellar(地窖)所有程序包(桶)的根目录

Tap(水龙头)程序包的源

Bottle (瓶子)编译打包好的程序包

最终编译安装完毕的程序就是一桶酿造好的酒

更详细的信息参考Homebrew的官方Cookbook

因此使用Homebrew常见的流程是:增加一个程序源(新增一个水龙头) brew tap homebrew/php

更新程序源 brew update

安装程序包(按照配方酿酒) brew install git

查看配置 brew config 可以看到程序包默认安装在/usr/local/Cellar下 (酒桶放在地窖内)

安装PHP5.6(FPM方式)

首先加入Homebrew官方的几个软件源brew tap homebrew/dupes

brew tap homebrew/versions

brew tap homebrew/php

PHP如果采用默认配置安装,会编译mod_php模块并只运行在Apache环境下,为了使用Nginx,这里需要编译php-fpm并且禁用apache,主要通过参数--without-fpm --without-apache来实现。完整的安装指令为brew install php56 \

--build-from-source \

--without-snmp \

--without-apache \

--with-fpm \

--with-intl \

--with-homebrew-curl \

--with-homebrew-libxslt \

--with-homebrew-openssl \

--with-imap \

--with-mysql \

--with-tidy

由于OSX已经自带了PHP环境,因此需要修改系统路径,优先运行brew安装的版本,在~/.bashrc里加入:export PATH="/usr/local/bin:/usr/local/sbin:$PATH"

如果要安装新的php扩展,可以直接安装而不用每次重新编译php,所有的扩展可以通过brew search php56

看到,下面是我自己所需要的扩展,可以支持Phalcon框架:brew install php56-memcache php56-memcached php56-mongo php56-phalcon php56-redis php56-xdebug --build-from-source

PHP-FPM的加载与启动

安装完毕后可以通过以下指令启动和停止php-fpmphp-fpm -D

killall php-fpm

同时可以将php-fpm加入开机启动ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

安装Nginxbrew install nginx

安装完毕后可以通过nginx

nginx -s quit

启动和关闭,同时也支持重载配置文件等操作nginx -s reload|reopen|stop|quit

nginx安装后默认监听8080端口,可以访问http://localhost:8080查看状态。如果要想监听80端口需要root权限,运行sudo chown root:wheel /usr/local/Cellar/nginx/1.6.2/bin/nginx

sudo chmod u+s /usr/local/Cellar/nginx/1.6.2/bin/nginx

并使用root权限启动sudo nginx

开机启动ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

Nginx + PHP-FPM配置

Nginx一般都会运行多个域名,因此这里参考了@fish的方法,按Ubuntu的文件夹结构来存放Nginx的配置文件mkdir -p /usr/local/var/logs/nginx

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

编辑Nginx全局配置vim /usr/local/etc/nginx/nginx.confworker_processes 1;

error_log /usr/local/var/logs/nginx/error.log debug;

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" $host $request_time $upstream_response_time $scheme ' '$cookie_evalogin';

access_log /usr/local/var/logs/access.log main;

sendfile on;

keepalive_timeout 65;

port_in_redirect off; include /usr/local/etc/nginx/sites-enabled/*;

}

这样一来首先可以把一些可复用配置独立出来放在/usr/local/etc/nginx/conf.d下,比如fastcgi的设置就可以独立出来vim /usr/local/etc/nginx/conf.d/php-fpm

内容为location ~ \.php$ {

try_files $uri = 404;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_intercept_errors on; include /usr/local/etc/nginx/fastcgi.conf;

}

然后/usr/local/etc/nginx/sites-enabled目录下可以一个文件对应一个域名的配置,比如web服务器目录是/opt/htdocsvim /usr/local/etc/nginx/sites-enabled/defaultserver {

listen 80;

server_name localhost;

root /opt/htdocs/;

location / {

index index.html index.htm index.php; include /usr/local/etc/nginx/conf.d/php-fpm;

}

}

此时启动了php-fpm并且启动了Nginx后,就可以通过http://localhost来运行php程序了

安装MySQLbrew install mysql

可以通过mysql.server start

mysql.server stop

来启动/停止,启动后默认应为空密码,可以通过mysqladmin设置一个密码mysqladmin -uroot password "mypassword"

但是在操作的时候出现了空密码无法登入的情况,最终只能通过mysqld_safe来设置sudo mysqld_safe --skip-grant-tables

mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('mypassword') WHERE User='root';

mysql> FLUSH PRIVILEGES;

最后将MySQL加入开机启动cp /usr/local/Cellar/mysql/5.6.22/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

Memcachebrew install memcached

启动/停止指令memcached -d

killall memcached

加入开机启动cp /usr/local/Cellar/memcached/1.4.20/homebrew.mxcl.memcached.plist ~/Library/LaunchAgents/

Redisbrew install redis

Redis默认配置文件不允许以Deamon方式运行,因此需要先修改配置文件vim /usr/local/etc/redis.conf

将daemonize修改为yes,然后载入配置文件即可实现后台进程启动redis-server /usr/local/etc/redis.conf

加入开机启动cp /usr/local/Cellar/redis/2.8.19/homebrew.mxcl.redis.plist ~/Library/LaunchAgents/

设置别名

最后可以对所有服务的启动停止设置别名方便操作vim ~/.bash_profile

加入alias nginx.start='launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'

alias nginx.stop='launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'

alias nginx.restart='nginx.stop && nginx.start'

alias php-fpm.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist"

alias php-fpm.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist"

alias php-fpm.restart='php-fpm.stop && php-fpm.start'

alias mysql.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist"

alias mysql.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist"

alias mysql.restart='mysql.stop && mysql.start'

alias redis.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist"

alias redis.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist"

alias redis.restart='redis.stop && redis.start'

alias memcached.start="launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist"

alias memcached.stop="launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist"

alias memcached.restart='memcached.stop && memcached.start'

安装其他项目支持brew install composer node

安装Oh My Zshbrew install zsh-completions

chsh -s /usr/local/bin/zsh

vim ~/.zshenv

加入内容export PATH=/usr/local/bin:$PATH

然后vim ~/.zshrc

加入内容fpath=(/usr/local/share/zsh-completions $fpath)

autoload -Uz compinit

compinit -u

最后运行rm -f ~/.zcompdump; compinit

查看正在使用的shelldscl localhost -read Local/Default/Users/$USER UserShell

安装Oh My Zshwget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

php环境苹果搭建,mac下搭建php环境相关推荐

  1. mac php环境配置教程,Mac下搭建PHP 开发环境的教程(详细步骤)

    本篇文章给大家带来的内容是关于Mac下搭建PHP 开发环境的教程(详细步骤),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. php 的本地开发环境,搭建很简单,成功启动三个进程就可以 ...

  2. Mac下搭建java环境与卸载

    Mac下搭建Java环境与卸载 Mac下搭建Java环境 1.在终端命令行输入java -version查看JDK版本 例:java version "1.8.0_161" ​ j ...

  3. 在mac下搭建java开发环境

    刚刚从windows系统转到使用mac系统,感觉不是特别熟悉,需要一定的适应时间.下面简单介绍一下mac下搭建基本的java开发环境. 1.安装jdk 安装jdk1.7后,发现不需要进行环境变量配置, ...

  4. 关于mac下搭建php、apache、mysql环境

    关于mac下搭建php.apache.mysql环境 装置 Mac预装的有Apache和PHP,我们可以直接使用.但是需要自己下载Mysql. Apache 首先,让我们来看一下是怎么开启Apache ...

  5. Mac下搭建php开发环境教程

    这篇文章主要介绍了Mac下搭建php开发环境教程,Mac OS X内置了Apache 和 PHP,这样使用起来非常方便.本文以Mac OS X 10.6.3为例,需要的朋友可以参考下 Mac OS X ...

  6. mac搭建svn服务器文件被锁定,mac安装svn_在MAC下搭建SVN服务器的详细教程

    摘要 腾兴网为您分享:在MAC下搭建SVN服务器的详细教程,易信,无忧兼职,茄子快传,每日一淘等软件知识,以及android解锁大师,workflow,乐客联盟,海鸥旅游,mm直播app,腾讯新闻,中 ...

  7. 基于WSL2和Clion搭建Win下C开发环境

    系列文章目录 一.基于WSL2和Clion搭建Win下C开发环境 二.make.makeFile.CMake.CMakeLists的使用 三.全面.详细.通俗易懂的C语言语法和标准库 文章目录 系列文 ...

  8. brew install php55redis,Mac下安装LNMP环境

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

  9. Mac 下安装 ruby 环境解决 brew 安装 yarn 问题

    Mac 下安装 ruby 环境解决 brew 安装 yarn 问题 参考文章: (1)Mac 下安装 ruby 环境解决 brew 安装 yarn 问题 (2)https://www.cnblogs. ...

最新文章

  1. jQuery基础之(一)jQuery概述
  2. android: 播放音频
  3. Java 修饰符、运算符笔记总结
  4. vb鼠标涂鸦板的制作
  5. 开发、测试与QA的区别以及其他
  6. php获取表所有数据类型,php excel 导入 导入三级分类 表格应该怎么设计才能得到想要的数据格式?...
  7. t3s java_关于JAVA的this关键字
  8. 销售到出仓所经历的表
  9. SQL基础(八)-- sql左右连接中的on and 和 on where 的区别
  10. linux中date命令设置系统时间的方法-转
  11. Ubuntu的root
  12. #微软MVP分享# WP手机使用记录
  13. Java(1):Java SE疯狂复习基本数据类型、OOP
  14. 在QT框架下进行仿照PS图像调整功能设计(亮度对比度,色相饱和度及明度)
  15. iOS Charts库绘制曲线
  16. Linux学习 十二单元
  17. break,returned,和continue
  18. android 调试原理
  19. Excel 公式大全与实战演示
  20. Cisco服务器怎么安装系统,思科CISCO 3750交换机配置导出导入及IOS升级步骤

热门文章

  1. java中main缺少主体_缺少方法主体,或声明了摘要
  2. java hash取余_为什么Java的hash表的长度一直是2的指数次幂?为什么这个(hash(h-1)=hash%h)位运算公式等价于取余运算?...
  3. javascript V8引擎垃圾收集机制
  4. Java - 计算不同字符或数字的个数
  5. java 异步得到函数返回值_使用JavaScript进行异步编程
  6. mysql 删除表记录的 存储过程命令_用SQL语句删除一个数据库的所有表和所有存储过程...
  7. 数据分析(SQL)常见面试题:开窗函数
  8. java sql server 2016_SQL server 2016 安装步骤
  9. flog和flag_FLAG:写作,英语和持续学习
  10. pip命令提示unknow or unsupported command install解决方法