root 拥有的 hhvm unix 套接字,但需要更改为 nginx

hhvm unix socket owned by root but need to change to nginx

我可以 运行 hhvm 使用通常的 tcp 端口 9000,但我希望 nginx 和 hhvm 通过 unix 套接字进行通信,但问题是套接字默认为 root:root,我必须每次重新启动时用 chown 手动更改它。我 运行 CentOS7 的最小安装并且以前使用过 php-fpm 但你可以选择 select user for socket 那里,但似乎不是在 hhvm 中,我不确定.有什么想法吗?

/etc/hhvm/server.ini

pid = /var/run/hhvm/pid                          

hhvm.server.ip = 127.0.0.1                       
;hhvm.server.port = 9000                         
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
hhvm.server.type = fastcgi                       
hhvm.server.default_document = index.php         
hhvm.source_root = /srv/www/public_html          
hhvm.server.always_use_relative_path = false     
hhvm.server.thread_count = 32                    
hhvm.resource_limit.max_socket = 65536           

hhvm.jit = true                                  
hhvm.jit_a_size = 67108864                       
hhvm.jit_a_stubs_size = 22554432                 
hhvm.jit_global_data_size = 22554432             

; mysql                                          
hhvm.mysql.socket = /var/lib/mysql/mysql.sock    
hhvm.mysql.typed_results = true                  

; logging                                        
hhvm.log.use_syslog = false                      
hhvm.log.use_log_file = true                     
hhvm.log.file = /var/log/hhvm/error.log          
hhvm.log.level = Warning                         
hhvm.log.always_log_unhandled_exceptions = true  
hhvm.log.runtime_error_reporting_level = 8191   

/usr/lib/systemd/system/hhvm.服务

[Unit]
Description=HipHop Virtual Machine (FCGI)

[Service]
ExecStart=/usr/local/bin/hhvm -c /etc/hhvm/server.ini -c /etc/hhvm/php.ini --user hhvm --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock

[Install]
WantedBy=multi-user.target

您可以在 /etc/hhvm/server.ini 中指定用户,添加行

hhvm.server.user = nginx

如果需要,将 nginx 更改为您的 nginx 用户并重新启动 hhvm

sudo service hhvm restart

您必须在 HHVM 创建文件后手动更改文件所有权。

或者使用TCP模式代替unix sock。

在我的 Docker 中,我有这样的服务:

#!/bin/sh
set -e

# @todo this is horrible (but HHVM is creating socket as root user)

while [ ! -S /var/run/php5-fpm.sock ]
do
  usleep 1
done

chown www-data /var/run/php5-fpm.sock

sv stop fix_socket_perms

这样做。