2014-02-12 42 views
4

首先,我從AUR安裝了apache24,從AUR安裝了hhvm(HipHop VM 2.4.0(rel))。 apache24已啓用mod_proxy_fcgi。從hhvm終端運行php文件似乎工作正常,但我不能配置它與Apache的工作。
在httpd.conf我有:爲archlinux配置hhvm和apache

ProxyPass/fcgi://127.0.0.1:9000/srv/http/ 

,然後我從doc_root的運行HHVM服務器:

sudo hhvm --mode server -vServer.Type=fastcgi -vServer.Port=9000 

,但當訪問從瀏覽器中的HTTP鏈接我得到:

"HipHop Notice: File could not be loaded: proxy:fcgi://127.0.0.1:9000/srv/http/index.php" 

有什麼建議嗎?

+0

是否有index.php avaiable? – AMB

回答

1

它可以完成。這裏是我的Ubuntu Web服務器示例:

您需要一種方法將HHVM掛接到您的Apache Web服務器。這是使用FastCGI完成的,您需要安裝它。幸運的是,HHVM提供了一個shell腳本來設置它。運行以下...

sudo /usr/share/hhvm/install_fastcgi.sh 

確保HHVM在引導激發起來,運行這個...(可選)

sudo update-rc.d hhvm defaults 

配置HHVM和Apache虛擬主機

安裝腳本會要求你重啓HHVM和Apache。不要只是,否則你的網站訪問者將會看到一些404動作來自他們的方式。相反,打開hhvmproxyfcgi.conf並註釋那裏的單個ProxyPassMatch行。

sudo emacs /etc/apache2/mods-available/hhvm_proxy_fcgi.conf 

# ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/v 

這將停止所有PHP /哈克從腳本通過FastCGI的被路由,這將讓你選擇你想通過HHVM要發送的Web應用程序。如果您只在Web服務器根目錄下運行單個Web應用程序,則無需執行此操作,但無論如何,我認爲這是一個明智之舉。

現在HHVM正在運行,但無法將腳本移交給它。我們需要將ProxyPassMatch配置添加到我們希望HHVM支持的Web應用程序的虛擬主機配置。將其添加到每個配置文件中的每個虛擬主機實例(以下示例中涵蓋的安全和非安全流量)。

sudo nano /etc/apache2/sites-available/hhvm.example.com.conf 

#HHVM示例 - hhvm.example.com

<VirtualHost *:80> 
    ServerName hhvm.example.com 
    DirectoryIndex index.php 
    DocumentRoot /var/www/sites/hhvm.example 
    ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/sites/hhvm.example/$1 
</VirtualHost> 
<VirtualHost *:443> 
    ServerName hhvm.example.com 
    DirectoryIndex index.php 
    DocumentRoot /var/www/sites/hhvm.example 
    SSLEngine On 
    SSLCertificateFile /etc/ssl/certs/hhvm.crt 
    SSLCertificateKeyFile /etc/ssl/private/hhvm.key 
    SSLCACertificateFile /etc/ssl/certs/hhvm.ca.crt 
    ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/sites/hhvm.example/$1 
</VirtualHost> 

你也可以指定其他端口明確地使用HHVM,如果你想快速A/B測試的性能提升。要做到這一點,只需在/etc/apache2/ports.conf

Listen 8080 

然後在你的虛擬主機配置打開端口,創建指定的新端口的另一實例和ProxyPassMatch配置添加到您想運行HHVM之一。

<VirtualHost *:80> 

    ... 

</VirtualHost> 
<VirtualHost *:8080> 

    ... 

    ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/var/www/$1 

</VirtualHost> 

重新啓動Apache和HHVM

現在,我們已經準備好踢Apache和HHVM的頭部。重新啓動這兩項服務...

sudo service apache2 restart 
sudo service hhvm restart