php环境苹果搭建,mac下搭建php环境

本文主要和大家分享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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php后门 佛像,35张活的再久,也未必见过的照片,图2是佛像通过CT扫描后内部照...

今天这组照片可能很多人都是一次见到,包括小编本人看了也十分惊讶。最大的感触是,很多的商品居然是这么做出来的,看完了才有一种豁然开朗的感觉,废话不多说一起看看吧。鸡蛋里面套鸡蛋1000年前佛像,经过CT扫描后&#…

oracle层次化查询

一般我们在处理层次关系的数据时,在建ER关系模型,我们都会产生自关联的数据结构。如:emp员工表中empno和managerno就是,这样就产生了层次化的结构。 那么如何快速的查询一个已知的根节点,查找到相应的一系列子节点呢&a…

民生付 php,“民生付”升级我省电商支付体验

■周昆 俞正林我省电子商务的发展正在得到更多的金融支持,未开通网银的消费者也能方便地进行网上支付了。记者近日从民生银行福州分行了解到,该行全网线上收单产品“民生付”已经得到我省电子商务企业的青睐。通过该服务,我省电子商务商户只需…

droidbox官网

droidbox官网,droidbox已经移植到github上了 https://github.com/pjlantz/droidbox 转载于:https://www.cnblogs.com/nightnine/p/5169261.html

java实现缓存中间件,Redis,分布式系统中不可少的缓存中间件

1.为什么要用缓存内存在整个计算机系统来说也就是一个缓存,CPU操作内存速度很快;因为操作数据的时候,先从硬盘中取出数据放到内存中,然后CPU操作数据缓存:提升访问效率,将一些频繁访问地放在缓存里面image.…

matlab自带的人脸分类器,基于MATLAB,运用PCA+SVM的特征脸方法人脸识别

概述:此文章将要描述一种基于MATLAB平台,运用PCA主成分分析方法对图片数据进行降维,运用SVM支持向量机分类器对降维后的图片数据进行分类处理,从而达到人脸识别的目的。首先要感谢以下几篇文章的作者(后面引用会标识文章标号)2.PC…

J2EE的13个规范之(二) JDBC 及其使用

我想大家都知道ODBC是什么?ODBC(OpenDatabaseConnectivity。开放数据库互连)是微软公司开放服务结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成部分。它建立了一组规范,并提供了一组对数据库訪问的标准API(应…

被恶意上传了.php,轻松解决网站被恶意镜像

老听说有人的网站被恶意镜像,于是我先收藏几种解决方法。镜像站看似一个完整的站点,其实每次用户访问镜像站点,他的小偷程序就会来正版的网站查询数据,并修改相关链接然后呈献给用户。实质上还是在读取原站的数据,我们…

【代码笔记】iOS-对UIView进行截图

一,效果图。 二,工程图。 三,代码。 RootViewController.m #import "RootViewController.h"interface RootViewController ()endimplementation RootViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBund…

matlab实现浮点转定点,浮点转定点方法总结.doc

浮点转定点方法总结浮点转定点方法总结—孔德琦目录定点运算方法31.1 数 的 定 标31.2c语言:从浮点到定点41.2.1 加法41.2.2乘法61.2.3除法71.2.4 三角函数运算81.2.5 开方运算91.3 附录101.3.1 附录1:定点函数库101.3.2附录2:正弦和余弦表28…

caffe官网的部分翻译及NG的教程

Caffe原来叫:Convolutional Architecture for Fast Feature Embedding 官网的个人翻译:http://blog.csdn.net/fengbingchun/article/details/49535873 NG的英文教程:http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks…

matlab 中 t=0:t:(n-1)t;k=0:n-1,《MATLAB语言与应用》练习题答案

《MATLAB 语言与应用》实验课程任务书一、 实验教学目标与基本要求上机实验是本课程重要的实践教学环节;实验的目的不仅仅是验证理论知识,更重要的是通过上机实验,加强学生的实验手段与实践技能,掌握应用MATLAB 语言求解问题的方法…

Kerbose

http://blog.csdn.net/wulantian/article/details/42418231转载于:https://www.cnblogs.com/diyunpeng/p/5175290.html

IIS虚拟目录实现与文件服务器网络驱动器映射共享

这篇文章转载别人,想原创作者致敬! 我本人也遇到同样的问题,故转载记录。 本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本。 通常情况下,拥有多台服务器的朋友在使用IIS建立站点的时候,会遇到如…

rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密

项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式.公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制)前端: jsencrypt库加密后端: Node crypto模块使用openssl生成公钥私钥linux生成公钥私钥命令:genrsa -out rsa_private_key.pem 1024 // 生成1024位…

php 事件调度,MySQL的事件调度器使用介绍

自MySQL5.1.0起,增加了一个非常有特色的功能ndash;事件调度器(Event Scheduler),可以用做定时执行某些特定任务,可以看作基于自MySQL5.1.0起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执…

mysql中括号_干货!Python与MySQL数据库的交互实战

作者 | Huang supreme,责编 | 郭芮头图 | CSDN 下载自视觉中国安装PyMySQL库如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这个库的安装很简单,直接使用pip install pymysql;假如这种方式还是安装不上…

Xcode清缓存

前往-->按住option键进入资源库-->Developer-->Xcode-->DerivedData 删除里面的文件就行了转载于:https://www.cnblogs.com/10-19-92/p/5181940.html

苹果天气不显示_热门天气APP被苹果拿下,安卓用户不能再使用

近日,Android平台最受欢迎的订阅式天气APP之一Dark Sky官方宣布其被苹果收购。收购后,Android和Wear OS上的Dark Sky APP都会在2020年7月1日下架,届时将关闭服务并提供退款,iOS版APP则不受影响。Dark Sky天气预报Dark Sky服务早就…

java 安全 认证和授权,Java安全之认证与授权

Java平台提供的认证与授权服务(Java Authentication and Authorization Service (JAAS)),能够控制代码对敏感或关键资源的访问,例如文件系统,网络服务,系统属性访问等,加强代码的安全性。主要包含认证与授权两部分&…