hhvm unix socket由root拥有但需要更改为nginx

时间:2015-03-22 01:14:54

标签: hhvm

我可以使用通常的tcp端口9000运行hhvm,但我希望nginx和hhvm通过unix套接字进行通信,但问题是套接字默认为root:root,我必须每次手动更改chown重新启动。我运行CentOS7的最小安装并且以前使用过php-fpm,但是您可以选择用于套接字的用户,但是看起来不是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.service

[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

2 个答案:

答案 0 :(得分:0)

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

hhvm.server.user = nginx

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

sudo service hhvm restart

答案 1 :(得分:0)

您必须在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

这样做。