前言
- 搭建环境包括:Apache, PHP, MySQL 和 DNSMasq
- 本文环境搭建的目标在于安装配置完成后,在不修改
etc/hosts
和Apache config
文件的前提下,于~/Sites/
目录下新建文件夹之后,可以直接使用http:// + folder-name + .dev + /
在浏览器中直接访问; - 文档适用于 OSX 10.10 搭建本地开发环境,既不适用于 10.9,也没有在即将发布的 10.11 上测试过,不同 OS X 版本可能相互版本并不兼容;
- 安装软件基本基于 HomeBrew,一款 Mac OS X上的包管理器,类似 Ubuntu 上的 apt ,或者 Python 的 pip 之类,为了可以使用HomeBrew 高效安装,可能需要比较「科学」的网络环境。
- 另,可以选择集成安装包 XAMPP,下载安装对照相关网站的配置文档。不过相对来说集成安装包安装好之后要对单独一个修改更新会比较麻烦。
Homebrew安装配置
如果没有安装 homebrew,前往 brew.sh 复制相关代码进行安装,相关可能提示需要把 xcode 的 developer tool 更新安装升级。安装完毕后 homebrew
应该存在于 /usr/local/bin/brew
,运行 which brew
进行检查,如果不在需要检查shell 的 $PATH
, 或者查看文件 /etc/paths
或者文件夹 /etc/paths.d/.
。
如果已经安装 homebrew,安装前如果长时间没有更新操作则需要先更新升级清理。
安装、配置 Mysql
- 使用 Homebrew 安装 Mysql;
- 为了使默认配置文件在开始运行的时候自动获取配置,需要把默认的
my-default.cnf
文件拷贝到 Mysql homebrew 下的相关文件夹里; - 使用 OSX 自带的 Launchd 来使用 Mysql,安装 brew services;
- 安装完成后运行Mysql;
- 运行之后配置
mysql_secure_installation
。
安装、配置 Apache
首先,如果系统内置的Apache正在运行,需要使用sodo
暂时停止,并且把开机自启动关闭。
安装相关模块:
避免和系统自带的相关模块冲突,去除所有相关模块 references:
配置 Apache,PHP,PHP-FPM 和 mod_fastcgi,配置使用 ~/Sites/httpd-vhosts.conf
来作为 VirtualHosts
的 Config
:
在较新版本的 OS X 中,Sites 文件夹非默认存在:
继续配置 httpd-vhosts.conf
以为为一条终端命令,复制整个区块进终端回车
也许你也注意到了,~/Sites/ssl/ssl-shared-cert.inc
被进行了多次的引入;所以需要创建它所需要 SSL
文件:
开启 Apache
配置开机使用 homebrew 自动启动 Apache
运行在 80 端口上
你可能也注意到了,httpd.conf
配置文件中,Apache 的端口现在是 8080
和 8443
。每一次都需要手动配置 :8080
端口是非常麻烦的,但是开启 80
端口有需要 root 权限。接下来的两个命令会将所有到 80
端口的流量转到 8080
,而所有指向 443
的请求转发到 8443
。这么做的好处是,我们就不需要在访问本地 .dev
测试站的时候加上 :8080
的后缀,比如说就可以直接访问 http://projectname.dev/
,而不需要输入 http://projectname.dev:8080/
这样的网址。
接下来的这条命令会新建 /Library/LaunchDaemons/co.echo.httpdfwd.plist
文件,并且赋予 root 权限,因为它需要相关的 elevated privileges。
上面新建的文件会在开机的时候运行,处理 80 -> 8080,和 443 -> 8443 两个端口的转发工作。但其实我们现在也可以直接手动来运行它,这样就不需要登出、登陆来反复操作:
PHP
- 安装 PHP,版本 5.6,需要安装 5.3,5.4,5.5 版本,只需要把结尾后缀改成相对应版本号;
- 设置时区,添加 PHP error log;
- 去除已知bug;
- 安装 optional Opcache extension;
- 运行PHP-FPM。
基本设置完毕,当前如果要更换PHP版本,不需要配置 Apache 的 config 文件,只需要类似 brew services stop php56 && brew unlink php56 && brew link php54 && brew services start php54.
的操作即可完成版本间的切换。
安装、配置 DNSMasq
分别运行以下命令:
基本设置完毕,测试,在终端中输入 ping -c 3 fakedomainthatisntreal.dev
, 应该可以看到从 127.0.0.1
返回类似以下的结果,如果不行则重启 WiFi ,插拔网线,或者重启系统。
Error 和 Troubleshooting
各log位置:
- Apache:
$(brew --prefix)/var/log/apache2/error_log, or run httpd -DFOREGROUND and look for output
- PHP-FPM:
$(brew --prefix)/var/log/php-fpm.log
- MySQL:
$(brew --prefix)/var/mysql/$(hostname).err
- DNSMasq: no log file, run
dnsmasq --keep-in-foreground
and look for output
后记
原文到此结束,已经完成。现在在不修改 etc/hosts
和 Apache config
文件的前提下,于 ~/Sites/
目录下新建文件夹之后,可以直接使用 http:// + folder-name + .dev + /
在浏览器中访问。
技术发展迭代很快,所以这些笔记内容也有类似新闻的时效性,不免有过时、或者错误的地方,欢迎指正 ^_^。
BEST
Lien(A.K.A 胡椒)