2013-10-01 5 views
2

Я пытаюсь разместить несколько доменов на одном и том же VPS, используя HHVM для обслуживания страниц.HHVM обслуживает несколько доменов

Мне интересно, как я могу написать VirtualHost, чтобы указать правильную папку в каталоге/var/www?

Например xxx.domain.com >> /var/www/domain.com/

ответ

2

Хорошие новости. С момента выпуска HHVM 2.3 (13 декабря 2013 г.) вы можете запустить HHVM в режиме FCGI. Используйте либо 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, если вы можете обновить.

1

Видимо пока не представляется возможным. В соответствии с официальным номером github repository, на котором размещен код, существует open issue о той же самой проблеме, которую вы задаете, и ее тег для Список желаний/запрос функции.

Возможно, лучший способ решить этот вопрос - запустить сервер HHVM для каждого домена (значит, для каждого домена требуется другая корневая папка) и использовать Apache или Nginx в качестве прокси.

0

На Nginx, единственным способом я смог получить эту работу, чтобы использовать в качестве /SourceRoot для HHVM, и добавить в fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name; в / в моем /etc/nginx/hhvm.conf файле. С этой комбинацией я запускаю ~ 7 сайтов без проблем. Я запускаю Ubuntu 13.10 64-bit.

В /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 брандмауэра, поэтому только локальный хост может достичь этого. Или вы можете использовать сокет вместо этого. Не безупречный, но из того, что я видел до сих пор, все в порядке.

Смежные вопросы