今天在安装完成hhvm以后出现了没法访问的情况,老出现NGINX的502 bad getway,后来发现是hhvm没有启动起来。
HHVM 权限设置:
查日志发现如下错误:
[crit] 2332#0: *681 connect() to unix:/tmp/hhvm.sock failed (13: Permission denied) while connecting to upstream, client: 104.224.169.175, server: b.jiloc.com, request: “GET /p.php HTTP/1.1”, upstream: “fastcgi://unix:/tmp/hhvm.sock:”, host: “b.jiloc.com”
Permission denied 表示权限不足,我们把socket文件设置在了 /tmp 文件夹下。如果我们手动设置成777权限就可以运行了。
我们的HHVM 版本是 3.2的,网上的一些方法好像已经不能用了。
现在我们通过修改配置文件方式进行修改。
vi /etc/hhvm/server.hdf
文件内容如下:
PidFile = /var/run/hhvm.pid Server { #Port = 9000 # SourceRoot = /var/www/ Type=fastcgi ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 我们这里是配合nginx,作为fastcgi启动 FileSocket = /tmp/hhvm.sock ? ? ? ? ? ?# 在这里设置socket方式,这里说一下这个值要跟nginx里的php段?fastcgi_pass后面的参数一致 DefaultDocument = index.php } Log { Level = Warning AlwaysLogUnhandledExceptions = true RuntimeErrorReportingLevel = 8191 UseLogFile = true UseSyslog = false File = /var/log/hhvm/error.log Access { * { File = /var/log/hhvm/access.log Format = %h %l %u % t \”%r\” %>s %b } } } Repo { Central { Path = /var/log/hhvm/.hhvm.hhbc } } #include “/usr/share/hhvm/hdf/static.mime-types.hdf” StaticFile { FilesMatch { * { pattern = .*\.(dll|exe) headers { * = Content-Disposition: attachment } } } Extensions : StaticMimeTypes } MySQL { TypedResults = false }
HHVM启动脚本修复:
比较奇怪的是,我安装完成以后发现/etc/init.d/hhvm 脚本出了问题,原先连正常启动都不行,我们修改后可以启动start跟停止stop了,下面贴一下代码:
cat /etc/init.d/hhvm
代码如下:
#!/bin/bash # # /etc/rc.d/init.d/hhvm # # Starts the hhvm daemon # # chkconfig: 345 26 74 # description: HHVM (aka the HipHop Virtual Machine) is an open-source virtual machine designed for executing programs written in Hack and PHP # processname: hhvm ### BEGIN INIT INFO # Provides: hhvm # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start and stop hhvm # Description: HHVM (aka the HipHop Virtual Machine) is an open-source virtual machine designed for executing programs written in Hack and PHP ### END INIT INFO # Source function library. . /etc/init.d/functions start() { echo -n “Starting hhvm: ” #/usr/bin/hhvm –config /etc/hhvm/server.hdf –user apache –mode daemon /usr/bin/hhvm –config /etc/hhvm/server.hdf –user www-data –mode daemon touch /var/lock/subsys/hhvm } stop() { echo -n “Shutting down hhvm: ” #killproc `cat /var/run/hhvm.pid` ps -ef | grep -e hhvm | grep -v grep | awk ‘{print $2}’ | xargs -i kill -9 {} rm -f /var/lock/subsys/hhvm } case “$1” in start) start ;; stop) stop ;; # status) # if [ -f “/proc/$(cat /var/run/hhvm.pid 2>/dev/null)” ];then # echo “hhvm is running” # else # echo “hhvm is not running” # fi # ;; # restart) # stop # start # ;; reload|condrestart|probe|status|restart) echo “$1 – Not supported.” ;; *) echo “Usage: hhvm {start|stop|status|reload|restart[|probe]” exit 1 ;; esac exit $?