笔记:使用 Homebrew 在 OS X 10.10 上安装配置 Apache、PHP、MySQL 和 DNSMasq


前言

  • 搭建环境包括:Apache, PHP, MySQL 和 DNSMasq
  • 本文环境搭建的目标在于安装配置完成后,在不修改 etc/hostsApache 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

  1. 使用 Homebrew 安装 Mysql;
  2. 为了使默认配置文件在开始运行的时候自动获取配置,需要把默认的 my-default.cnf 文件拷贝到 Mysql homebrew 下的相关文件夹里;
  3. 使用 OSX 自带的 Launchd 来使用 Mysql,安装 brew services;
  4. 安装完成后运行Mysql;
  5. 运行之后配置 mysql_secure_installation

安装、配置 Apache

首先,如果系统内置的Apache正在运行,需要使用sodo暂时停止,并且把开机自启动关闭。

安装相关模块:

避免和系统自带的相关模块冲突,去除所有相关模块 references:

配置 Apache,PHP,PHP-FPM 和 mod_fastcgi,配置使用 ~/Sites/httpd-vhosts.conf 来作为 VirtualHostsConfig

在较新版本的 OS X 中,Sites 文件夹非默认存在:

继续配置 httpd-vhosts.conf

以为为一条终端命令,复制整个区块进终端回车

也许你也注意到了,~/Sites/ssl/ssl-shared-cert.inc 被进行了多次的引入;所以需要创建它所需要 SSL 文件:

开启 Apache

配置开机使用 homebrew 自动启动 Apache

运行在 80 端口上

你可能也注意到了,httpd.conf 配置文件中,Apache 的端口现在是 80808443。每一次都需要手动配置 :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

  1. 安装 PHP,版本 5.6,需要安装 5.3,5.4,5.5 版本,只需要把结尾后缀改成相对应版本号;
  2. 设置时区,添加 PHP error log;
  3. 去除已知bug;
  4. 安装 optional Opcache extension;
  5. 运行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/hostsApache config 文件的前提下,于 ~/Sites/ 目录下新建文件夹之后,可以直接使用 http:// + folder-name + .dev + / 在浏览器中访问。

感谢阅读

你们好, 2018 年初把小站从 Jekyll 迁移到 Hugo 的过程中,删除了评论区放的 Disqus 插件,考虑有二:首先无论评论、还是对笔记内容的进一步讨论,读者们更喜欢通过邮件、或者 Twitter 私信的方式来沟通;其次一年多以来 Disqus 后台能看到几乎都是垃圾留言(spam),所以这里直接贴一下邮件、以及 Twitter 账户 地址。

技术发展迭代很快,所以这些笔记内容也有类似新闻的时效性,不免有过时、或者错误的地方,欢迎指正 ^_^。

BEST
Lien(A.K.A 胡椒)
本站总访问量 本站总访客量 本文总阅读量