6

HipHop/HHVM 可以作为守护进程运行(因此它会在重新启动后自动启动)

sudo /usr/bin/hhvm --mode daemon --config /etc/hhvm/server.hdf

运行时,它运行良好(这表明配置没问题)。但是重启机器后HHVM就没了,需要手动重启。上述行包括。这些配置已从 HHVM 创建者的官方教程中删除。类似的经典服务语法sudo service hhvm start也可以完美运行,但无法在机器重新启动时使用。

我为追查问题所做的工作:

/var/log/hhvm/error.log 中的 HHVM 错误日志在每次重新启动时记录此行:Unable to open pid file /var/run/hhvm/pid for write. /etc/hhvm/server.hdfPidFile = /var/run/hhvm/pid第一行。由于它默认附带 HHVM,因此我不想更改它。我认为sudo是这里的问题。没有 sudo HHVM 将无法运行。Chmod 777'ing pid 文件并指向另一个空文件并不能解决问题。

问题:

将 HHVM 安装为守护程序的正确方法是什么?

4

1 回答 1

17

手动方式

参考HHVM自带的封装材料,需要将hhvm作为守护进程运行。

因此,在 /etc/init.d/hhvm 创建一个文件并粘贴:

#! /bin/sh

test -x /usr/bin/hhvm || exit 0

case "$1" in
  start)
        /usr/bin/hhvm --config /etc/hhvm/server.hdf --user www-data --mode daemon
        ;;
  stop)
        start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/hhvm/pid
        ;;

  reload|force-reload|restart|try-restart)
        $0 stop
        $0 start
        ;;

  status)
        echo "No status"
        ;;

  *)
        echo "Usage: /etc/init.d/hhvm {start|stop|restart|status}"
        exit 1
esac

exit 0

现在,我们需要创建 /etc/hhvm/server.hdf 文件。这是一个示例文件:https ://gist.github.com/sinaa/9151973

对于 /usr/share/hhvm/hdf/static.mime-types.hdf 文件,使用这个: https ://github.com/hhvm/packaging/blob/master/hhvm/deb/skeleton/usr/share/ hhvm/hdf/static.mime-types.hdf

最后,创建目录:

  • /var/run/hhvm
  • /var/log/hhvm

现在只需将 hhvm 作为服务启动: /etc/init.d/hhvm restart


自动化方式:安装预构建包 (Ubuntu)

如果您使用的是预构建版本,则默认情况下 HHVM 包含上述所有内容。您可以按如下方式安装它(来源)

# If this command is not found then do this: sudo apt-get install python-software-properties
sudo add-apt-repository ppa:mapnik/boost
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/ubuntu precise main | sudo tee /etc/apt/sources.list.d/hhvm.list
sudo apt-get update
sudo apt-get install hhvm

重启后

要让您的服务在启动时自动运行,请运行以下命令:

sudo update-rc.d hhvm defaults
于 2014-02-22T11:06:20.387 回答