本来在 Mac 下用 Homebrew 安装 HHVM 应该是最容易的,但是最近有一个 bug 导致我在自己电脑上一直安装失败,所以我只好决定用 Docker 来装。

安装 Docker

现在在 Mac 下安装 Docker 非常方便,到 官网 下载一个 dmg 包直接安装就好。

制作 HHVM 镜像

HHVM 官方提供了 Docker image,但是我在直接启动启动时发现官方的 image 竟然没有启动 hh_client ,所以需要自己稍微修改一下。

另外在 build 过程中可能因为网络问题会失败… 因为你懂得的原因。所以直接把这个过程放在国外服务器上执行吧,速度快还不会出问题。

下载 Dockerfile

git clone https://github.com/hhvm/hhvm-docker.git

官方给了 hhvm-latest-proxygenhhvm-latest 的 Dockerfile,这里我推荐前者,直接就可以映射一个代码目录,在浏览器测试 HHVM。后者的话需要登陆到 container 里面测试代码,不是非常方便。

修改 Dockerfile

因为运行 HHVM 需要启动 typechecker,所以需要稍微修改一下 HHVM server 的启动命令。在刚刚下载好的目录 hhvm-latest-proxygen 中代码的最后一行改为:

CMD ["/usr/bin/hhvm", "-m", "server", "-c", "/etc/hhvm/server.ini", "-c", "/etc/hhvm/site.ini", "-d", "hhvm.hack.lang.look_for_typechecker=0"]

生成自己的 image

然后在 hhvm-latest-proxygen 目录下执行下面命令即可:

docker build -t yourname/hhvm-proxygen .

上传到到自己仓库中

我就直接上传到 Docker Hub 了。

先用 docker login 登陆一下,然后执行下面命令就行了

docker push yourname/hhvm-proxygen

启动 HHVM

启动的话我建议弄一个自己的工作目录,建立一个 index.php 文件,写入以下内容

<?hh
phpinfo();

然后在工作目录下执行以下命令就可以了。

docker run --name=hhvm -v $(pwd):/var/www/public -d -p 80:80 yourname/hhvm-proxygen

我绑定了80端口,所以直接打开 http://localhost 就可以测试了。想看 log 的话可以执行

docker logs hhvm