I'm try to host several domain on the same VPS, using HHVM to serve the pages.
I'm wondering how can I write the VirtualHost in order to point the right folder in my /var/www directory ?
For example xxx.domain.com >> /var/www/domain.com/
I'm try to host several domain on the same VPS, using HHVM to serve the pages.
I'm wondering how can I write the VirtualHost in order to point the right folder in my /var/www directory ?
For example xxx.domain.com >> /var/www/domain.com/
好消息。自 HHVM 2.3(2013 年 12 月 13 日)发布以来,您可以在 FCGI 模式下运行 HHVM。使用 Nginx 或 Apache,它工作得非常好。
参考:http ://www.hhvm.com/blog/1817/fastercgi-with-hhvm
使用旧版本的 HHVM,您可以在内部端口(即 8001、8002 等)上运行多个服务器实例。然后将 Nginx 配置为反向代理。(Apache 也可以这样做)。
upstream node1{
server 127.0.0.1:8001;
}
upstream node2{
server 127.0.0.1:8002;
}
server {
...
server_name server1.com;
location ~ \.php$ {
proxy_pass http://node1;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on; #only for https
}
}
server {
...
server_name server2.com;
location ~ \.php$ {
proxy_pass http://node2;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on; #only for https
}
}
当然,这种设置会占用大量内存。如果可以升级,请使用 2.3。
显然还不可能。根据托管代码的官方github 存储库,存在一个关于您所问问题的未解决问题,它是愿望清单/功能请求的标签。
解决这个问题的最好方法可能是为每个域运行 HHVM 服务器(意味着每个域都需要不同的根文件夹)并使用 Apache 或 Nginx 作为代理。
在 Nginx 上,我能够让它工作的唯一方法是使用/
HHVM ,并在我的文件SourceRoot
中添加一个/
in 。有了这种组合,到目前为止,我正在运行约 7 个站点而没有问题。我正在运行 Ubuntu 13.10 64 位。fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
/etc/nginx/hhvm.conf
在/etc/hhvm/server.hdf
中,更改SourceRoot = /var/www
为SourceRoot = /
:
Server {
Port = 9000
SourceRoot = /
DefaultDocument = index.php
}
在/etc/nginx/hhvm.conf
中,在 前面添加 / $document_root$fastcgi_script_name;
:
location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_read_timeout 300;
include fastcgi_params;
}
您可能还需要更改fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
为fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
,至少我必须使用我的。
使用/
作为您的 SourceRoot 可能会产生安全隐患 - 我通过防火墙端口 9000 尽可能地缓解这种情况,因此只有 localhost 可以访问它。或者,您可以改用套接字。不是万无一失的,但从我目前所见的情况来看,还可以。