mac下php开发环境搭建:nginx+mysql+php+php-fpm+xdebug+phpstorm

一、安装Homebrew

Brew是Mac下面的包管理工具,就像centos下面的yum一样。HomeBrew可以通过ruby来安装,mac系统是自带ruby的,所以只要在终端运行下面的代码即可安装HomeBrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

在安装的时候会有下面的提示,你应该仔细看下,要清楚知道HomeBrew给你安装了哪些脚本,给你创建了哪些文件夹,路径是在哪里的。仔细的看下安装时出现的说明信息,这样即使没有用过的软件,你根本不用看文档,都是能够使用它的最基础功能的。如果你一定要研究下细致的,可以看HomeBrew的官网:https://brew.sh/

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following new directories will be created:
/usr/local/Cellar
/usr/local/Homebrew
/usr/local/Frameworks
/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/opt
/usr/local/sbin
/usr/local/share
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var

现在我们已经安装完HomeBrew了,其实你只要运行brew help就能知道该怎么用这个软件了。


自检Brew

安装完成之后,建议执行一下自检,brew doctor如果看到Your system is ready to brew.那么你的brew已经可以开始使用。
"这里是我已经安装了oh-my-zsh"


这里是我已经安装了Oh-My-Zsh下面会说怎么安装

Homebrew 常用命令一览

$ brew --help        #简洁命令帮助
$ man brew          #完整命令帮助
$ brew install git    #安装软件包(这里是示例安装的Git版本控制)
$ brew uninstall git #卸载软件包
$ brew search git    #搜索软件包
$ brew list            #显示已经安装的所有软件包
$ brew update      #同步远程最新更新情况,对本机已经安装并有更新的软件用*标明
$ brew outdated      #查看已安装的哪些软件包需要更新
$ brew upgrade git  #更新单个软件包
$ brew info git      #查看软件包信息
$ brew home git      #访问软件包官方站
$ brew cleanup      #清理所有已安装软件包的历史老版本
$ brew cleanup git  #清理单个已安装软件包的历史版本

美化下终端

安装oh-my-zsh

brew我们已经安装好了,现在已经可以使用了,但是看上面的图,我们的终端太他妈的丑了,mac默认使用的shell是bash,如果把它换成zsh,并安装zsh的插件oh-my-zsh,那就会好很多了,mac系统已经自带了zsh,我们就不用去安装了,执行zsh --version可以查看zsh的版本,我们需要安装个zsh的插件oh-my-zsh

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

终端执行上面的代码即可
接下来我们先安装字体,设置稍后再说。


安装FiraCode字体

我们安装个比较流行的编程字体FireCode,可以进入:https://github.com/tonsky/FiraCode点击下载,下载后解压然后找到TTF文件夹,安装其中的五个字体。

下载位置在这里

现在打开终端,点击终端->偏好设置,在这里按自己的喜欢设置一下背景,字体,颜色,行间距等即可


设置样式,自己看着调整吧

设置完就成为下面这样了,嗯,这样就好看多了

这个样子我感觉还不错,哈哈

设置启动安装完oh-my-zsh后会自动帮我们把shell切换为zsh,现在我们的终端就变成这样了,注:oh-my-zsh还可以更换主题和装插件的,具体访问:http://ohmyz.sh


安装终端的命令自动提示

在终端下操作会经常需要输入一些常用的命令,要不出错的输入这些命令也不是件容易的事,zsh还有一个很好用的补全命令的插件zsh-autosuggestions, 我们通过下面命令安装下:

brew install zsh-autosuggestions

安装完成后我们需要设置一下变量:
这里根据之前查阅资料设置以后,执行后只有本次有效,关闭后再打开就无效了,所以在这里进行了修改,增加echo 'xxx' >> ~/.zshrc,这样每次打开都有提示了!不知道是不是只有我这样。

echo 'source /usr/local/Cellar/zsh-autosuggestions/0.4.2/share/zsh-autosuggestions/zsh-autosuggestions.zsh' >> ~/.zshrc
source ~/.zshrc

好了,然后你可以执行source ~/.zshrc或者重新打开终端,看下效果,输入b以后会自动提示输入过的内容,然后按向右的箭头就可以自动补全:

自动提示,对于新手,老司机都很好用

二、安装Mysql

先查找下mysql

brew search mysql

==> Searching local taps...
mysql ✔ mysql-connector-c
automysqlbackup mysql-connector-c++
josegonzalez/php/php53-mysqlnd_ms mysql-sandbox
josegonzalez/php/php54-mysqlnd_ms mysql-search-replace
josegonzalez/php/php55-mysqlnd_ms mysql-utilities
josegonzalez/php/php56-mysqlnd_ms mysql@5.5
mysql++ mysql@5.6
mysql-cluster mysqltuner
……

看一下mysql的版本信息

brew info mysql  

mysql: stable 5.7.20 (bottled), devel 8.0.3-rc
Open source relational database management system
https://dev.mysql.com/doc/refman/5.7/en/
……

下面就用brew install mysql安装下吧,安装时的消息有这么一句话We've installed your MySQL database without a root password. To secure it run:mysql_secure_installation,那就来设置下root的密码

# 第一步:打开mysql服务
mysql.server start
# 第二步:执行mysql_secure_installation
mysql_secure_installation 
# 执行后按照提示信息进行设置,慢慢看下英文,都能看懂的,主要修改密码,和一些基本配置,实在看不懂可以用翻译软件

登录mysql

mysql -u root -p

Enter password: #输入你设置的密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20 Homebrew
……

设置mysql开机启动

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

三、安装PHP

直接brew search php72 也可以,你可以试下看看提示信息,只是有时候会有包错误,要先添加php扩展其中php72中的72对应版本号,如:你要安装php5.6那么就是php56

brew update # 安装软件前都要习惯的更新下brew源
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php

现在brew search php就可以了,出来一堆版本的php,我们就安装php7.2版本吧。

可以先brew options php72看看你安装的时候要哪些选项,我选择了下面这些,因为后面我们会用nginx作为反向代理,所以就不要用--with-apache选项了,也不要添加--without-fpm选项

brew install php72 --with-debug --with-gmp --with-homebrew-curl --with-homebrew-libressl --with-homebrew-libxml2 --with-homebrew-libxslt --with-imap --with-libmysql --with-mssql

由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本,我们用的是zsh,所以放进/.zshrc中,如果你用的shell是bash,那么可以把下面的信息写入到/.bash_profile文件中,如果这个文件没有,你自己建一个就行。

注:上面我们有安装过oh-my-zsh,所以我们在~/.zshrc文件中写入内容,如果你没有安装,请将下段中的~/.zshrc替换为~/.bash_profile。

echo 'export PATH="$(brew --prefix php72)/bin:$PATH"' >> ~/.zshrc #for php
echo 'export PATH="$(brew --prefix php72)/sbin:$PATH"' >> ~/.zshrc #for php-fpm
echo 'export PATH="/usr/local/bin:/usr/local/sbib:$PATH"' >> ~/.zshrc #for other brew install soft
source ~/.zshrc

测试下效果
输入php -v和php-fpm -v查看版本是不是自己安装的版本

#brew安装的php
➜  ~ php -v    
PHP 7.2.0 (cli) (built: Dec 14 2017 21:50:48) ( NTS DEBUG )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
    with Xdebug v2.6.0alpha1, Copyright (c) 2002-2017, by Derick Rethans
#brew安装的php-fpm
➜  ~ php-fpm -v
PHP 7.2.0 (fpm-fcgi) (built: Dec 14 2017 21:50:50) (DEBUG)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
    with Xdebug v2.6.0alpha1, Copyright (c) 2002-2017, by Derick Rethans
#mac自带的php
➜  ~ /usr/bin/php -v
PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
#mac自带的php-fpm,呵呵没找到。。
➜  ~ /usr/bin/php-fpm -v
zsh: no such file or directory: /usr/bin/php-fpm

下面先来看下php-fpm的配置文件,路径在/usr/local/etc/php/7.0/php-fpm.conf, 大家应该都猜的到。我们主要看下pid和log文件会放在哪里

  1. [global]
  2. ; Pid file
  3. ; Note: the default prefix is /usr/local/var
  4. ; Default Value: none
  5. pid = run/php-fpm.pid
  6. ; Error log file
  7. ; If it's set to "syslog", log is sent to syslogd instead of being written
  8. ; into a local file.
  9. ; Note: the default prefix is /usr/local/var
  10. ; Default Value: log/php-fpm.log
  11. error_log = log/php-fpm.log

自己看下上面的信息,去掉17行和24行前面的分号,使用php-fpm -t测试下配置是否正确,按提示信息是不管它也可以,默认就是在/usr/local/var路径下的,不过还是设置下吧;

➜  ~ php-fpm -t
[15-Dec-2017 10:31:28] NOTICE: configuration file /usr/local/etc/php/7.2/php-fpm.conf test is successful

php-fpm的一些管理:

#测试php-fpm配置
php-fpm -t

#启动php-fpm
php-fpm -D

#关闭php-fpm
kill -INT cat /usr/local/var/run/php-fpm.pid

#重启php-fpm
kill -USR2 cat /usr/local/var/run/php-fpm.pid

#也可以用上文提到的brew命令来管理php-fpm
brew services start|stop|restart php72

#还可以用这个命令来管理php-fpm
php72-fpm start|stop|restart

#建议使用最后两个命令来启动|停止|重启php-fpm

启动php-fpm之后,确保它正常运行监听9000端口:

➜  ~ lsof -Pni4 | grep LISTEN | grep php
php-fpm    2255 qytx   10u  IPv4 0xd1e5b0fbcd0615df      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm    2256 qytx    0u  IPv4 0xd1e5b0fbcd0615df      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm    2257 qytx    0u  IPv4 0xd1e5b0fbcd0615df      0t0  TCP 127.0.0.1:9000 (LISTEN)

四、安装Nginx

和前面一样先brew search nginx查找nginx, 看下信息brew info nginx
然后安装brew install nginx
安装信息记录下,用的到:

➜ ~ brew install nginx
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
gitless
==> Updated Formulae
fzf gammu
==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.2.sierra.bottle.tar.gz ############################################### 100.0%
==> Pouring nginx-1.10.2.sierra.bottle.tar.gz
==> Using the sandbox
==> Caveats Docroot is:
/usr/local/var/www
The default port has been set in/usr/local/etc/nginx/nginx.conf to 8080 so that nginx can run without sudo.
nginx will load all files in /usr/local/etc/nginx/servers/.
To have launchd start nginx now and restart at login:
brew services start nginx Or, if you don't want/need a background service you can just run:
nginx
==> Summary

Nginx启动关闭命令:

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

#打开nginx
sudo nginx

#重新加载配置|重启|停止|退出nginx
sudo nginx -s reload|reopen|stop|quit

好了,来跑下nginx

sudo nginx
2120606-277302a6abfca5c4.png

到这里为止,我们已经安装完了mysql php nginx, 在安装php的时候添加了--with-mysql, 所以php操作mysql是没有问题的,现在我们就要配置nginx,让它监听php-fpm的进程,这样当用户打开浏览器访问的时候,身为反向代理的nignx就能把东西让php去执行了。

接下来,我们要配置nginx.conf文件,创建一个php-fpm文件(监听php-fpm), 还要约定下将nginx.pid文件,log日志,以及以后我们要配置的站点.conf的路径,我们的路径约定还是按照brew默认的目录来设置,如下:

# nginx.conf,已经被创建好了,我们一会要更改下
/usr/local/etc/nginx/nginx.conf

# php-fpm,这个我们就放在和nginx.conf一样的路径下吧,这个要我们自己创建
/usr/local/etc/nginx/php-fpm

# 日志文件放在/usr/local/var/log/nginx中,默认已经有了access.log和error.log文件了
/usr/local/var/log/nginx/

# nginx.pid文件,放在/usr/local/var/run/下面,和php-fpm.pid放一堆
/usr/local/var/run/

# 以后要配置的站点.conf, 我们就放在/usr/local/etc/nginx/servers/下面,这个servers文件夹本身就存在的
/usr/local/etc/nginx/servers/

# 站点的根目录,也就用brew给我们设置的吧
/usr/local/var/www/

一般我都用brew安装软件,所以用brew默认的路径,我能方便的找到我的文件。

下面我们先来修改nginx.conf, 用vim打开,把下面的信息覆盖nginx.conf, vim /usr/local/etc/nginx/nginx.conf, 如果你不习惯vim, 那就用sublime/Atom打开吧subl /usr/local/etc/nginx/nginx.conf

worker_processes  1;

error_log   /usr/local/var/log/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"';

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

    sendfile        off;
    keepalive_timeout  65;
    port_in_redirect off;

    include /usr/local/etc/nginx/servers/*;
}

接下来,将下面的信息放入到php-fpm文件中,vim /usr/local/etc/nginx/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;
    }

ok, 下面就能配置站点了,先到/usr/local/var/www目录下建立站点根目录,就叫做default吧,然后在里面建立个info.php,内容就放phpinfo()函数就行.

mkdir /usr/local/var/www/default
vi /usr/local/var/www/default/info.php #输入 ,活着自己去这个目录下手动创建文件也可以
<?php  phpinfo();?>
#info.php内容

最后,去创建站点.conf文件

vi /usr/local/etc/nginx/servers/default.conf   #在目录下创建文件

#输入下面的内容
server {
    listen       80;
    server_name  localhost;
    root         /usr/local/var/www/default;

    access_log  /usr/local/var/log/nginx/default.access.log  main;

    location / {
        index  index.html index.htm index.php;
        autoindex   on;
        autoindex_exact_size on;
        autoindex_localtime off;
        include     /usr/local/etc/nginx/php-fpm;
    }
    error_page  404     /404.html;
    error_page  403     /403.html;
}
#以上内容中可自定义端口号listen、项目路径root,以及日志路径access_log
#如要设置错误页,则在error_page 中添加即可,注意路径
#测试下配置文件
➜  ~ sudo nginx -t
Password:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

然后开启php-fpm,已经开启的就不用开了

php-fpm -D

开启nginx服务

sudo nginx # 已经开启的用sudo nginx -s reload 重启下

浏览器打开http://localhost/info.php测试下

这里我设置了自定义路径,所以地址为:localhost/aaa/

别名

上面的php-fpm关闭和重启的命令有点长,我们给它做个别名,在你的个人主目录下先建立一个.aliases文件,然后放入下面的内容

alias fpm.start='php-fpm -D'
alias fpm.stop='kill -INT `cat /usr/local/var/run/php-fpm.pid`'
alias fpm.restart='kill -USR2 `cat /usr/local/var/run/php-fpm.pid`'
alias fpm.status='lsof -Pni4 | grep LISTEN | grep php-fpm'

然后

echo 'source ~/.aliases' >> ~/.zshrc
source ~/.zshrc

这里我自己没有建,我用
brew services start|stop|restart php72
或者
php72-fpm start|stop|restart

五、安装xdebug

安装php扩展,也可以先不急,等后面要用到什么扩展的时候再安装也可以
安装扩展的方法(以xdebug扩展为例):

brew install php72-xdebug --build-from-source;

最后的--build-from-source是一定要加上的,我看很多教程里都漏了这一句。加上这句可以保证安装的扩展与php版本保持一致

备注:要卸载通过homebrew安装的php扩展,参考这篇文章:mac环境下通过
homebrew安装的php报错解决

找到/usr/local/etc/php/7.2/conf.d/ext-xdebug.ini

#复制以下内容到ext-xdebug.ini
[xdebug]
zend_extension="/usr/local/Cellar/php72-xdebug/2.6.0alpha1/xdebug.so"
xdebug.remote_autostart=On
xdebug.remote_enable=Off
xdebug.remote_mode="req"
xdebug.remote_host="localhost" 
xdebug.remote_port=9001
xdebug.remote_handler="dbgp"
xdebug.idekey="PhpStorm"
xdebug.max_nesting_level=600

重新启动php-fpm和nginx

php72-fpm restart
sudo nginx -s reopen

查看xdebug信息

xdebug设置好了

六、配置PHPSTORM

PHPSTORM的安装就不说了

详细看图吧
配置xdebug
配置xdebug
配置servers
点编辑。
点+号选择php web page,然后填写右边的信息即可

THE END

这篇文章摘自Zackpy and 笨尛孩你谁啊整合版本
然后经过自己的一些实践和后期加工完成!
整理出来,以后自己忘了也能看,哈哈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容