一开始我曾想过花钱买MAMP PRO来搭建WordPress的本地开发环境(MAMP免费版本只支持PHP7),图省事。但后来还是决定自己折腾,省下这笔钱。于是花了那么几天自己搭建了一套本地WordPress编码、运行和调试环境。除了Apache + MySQL + PHP之外,为了能在编辑器中单步调试,我还给PHP加装了Xdebug扩展,并给Vim编辑器加装了Vdebug插件。最终我将自己的WordPress站点从云主机拷贝到了本地,并在Vim中愉快地编写和调试里面的PHP代码:
让我哭笑不得的是,在我把环境搭建好一个月后写这篇文章的过程中,才发现其实Mac本身已经自带了Apache和PHP,并不用我自己去下载源代码再安装。
1 MySQL
可能是因为涉及到授权的问题,Mac并没有自带MySQL,所以还是要自己装。不过这几个软件当中MySQL的安装算是很容易的,从官方网站下载安装包解压安装,再配置一下环境变量即可。可参考这篇文章:《mac安装mysql的两种方法(含配置)》。
2 Apache
2.1 通过源代码安装Apache服务器
如果是要自己下载Apache源代码来安装的话,PHP的安装文档,即PHP源代码包中的INSTALL文件包含了Apache HTTP服务器的安装说明。我参考的是Apache 2.x on Unix systems这节。文档给出的Apache配置命令是:
./configure --enable-so
设置了 --enable-so 才能在不重编译apache的情况下通过配置文件添加PHP和URL重写等模块。
然而对我来说仅仅 --enable-so是不够的。Apache 2.4在Unix系统上的多处理模块(Multi-Processing Module,简称MPM)默认是event模式,即多线程,默认开启了线程安全。但线程安全模式是无法加载Xdebug的。因此我需要将MPM设为传统的prefork模式:
./configure --enable-so --with-mpm=prefork
接着 make; sudo make install 即可。configure和make的过程可能会遇到缺少别的库而导致失败。到网上搜索下载相应的库然后 ./configure; make; sudo make install 三部曲编译安装即可。大多是Apache软件基金会的库,如apr和apr-util。
2.2 启动并配置Apache服务器
sudo /usr/local/apache2/bin/apachectl start
sudo apachectl start
两者的版本可以通过 -v 选项区分:
$ /usr/local/apache2/bin/apachectl -v
Server version: Apache/2.4.25 (Unix)
Server built: May 3 2017 23:44:06
$ apachectl -v
Server version: Apache/2.4.23 (Unix)
Server built: Aug 8 2016 18:10:45
Apache服务器启动后,打开浏览器,在地址栏中输入localhost并回车,看到下面“It works!”的页面,就证明apache已经成功安装并正常运行了:
编辑apache的配置文件httpd.conf。Mac自带apache的该文件的路径是/etc/apache2/httpd.conf,通过源代码安装的这个文件则是/usr/local/apache2/conf/httpd.conf。在httpd.conf中找到下面的配置:
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
...
</Directory>
或
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
...
</Directory>
将它替换为
DocumentRoot "/Users/zhixiangzhu/Sites"
<Directory "/Users/zhixiangzhu/Sites">
Options Indexes ExecCGI FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
其中/Users/zhixiangzhu/是我的用户主目录。保存文件后重启Apache服务器: