2014-09-02 12 views
5

Questa mattina ho iniziato a utilizzare HHVM come server locale predefinito. La maggior parte delle cose va bene, ma ho ancora applicazioni che HHVM non supporta ancora completamente.Esegui server HHVM e Apache normale

Piuttosto che cambiare la configurazione e riavviare i servizi, sarebbe molto più semplice se potessi semplicemente cambiare porte o directory.

La mia domanda: È possibile eseguire un normale server Apache su una porta (80) e un server alimentato HHVM su un'altra porta (8080)? In alternativa, è possibile eseguire HHVM solo in una directory specifica (e le sue 'sottodirectory')?

Nello scenario 1 di commutazione per applicazione HHVM sarebbe simile a questa:

localhost/my-project/index.php 
    localhost:8080/my-project/index.php 

Nello scenario 2 switching per HHVM applicazione sarebbe simile a questa:

localhost/my-project/index.php 
    localhost/hhvm/my-project/index.php 

Direi che questo può essere raggiunto tramite il file di configurazione di Apache, ma non ne so abbastanza su come funzionano i file di configurazione per farlo da solo, per favore aiuto !?


OS: Ubuntu 14.04
Apache Versione: 2.4.7
HHVM Versione: 3.2.0

+1

È possibile eseguire in [modalità FastCGI] (https://github.com/facebook/hhvm/wiki/fastcgi) al fianco di Apache e PHP-FPM. – mario

+0

@mario Grazie, penso che mi mostri come fare lo scenario 2. Ma se possibile, preferirei comunque lo scenario 1; hai qualche idea per quello ??? –

risposta

6

Per /etc/apache2/ports.conf aggiungere ...

Listen 8080 

Poi, alla configurazione vhost (dal momento che utilizzando localhost come il dominio, probabilmente/etc/apache2/sites-available/default. conf), copia tutto lì dentro e incollalo qui sotto in modo da avere una seconda istanza VirtualHost. Per la seconda istanza, cambia *: 80 in *: 8080, quindi aggiungi il tuo ProxyPassMatch per dirti che vuoi usare HHVM per le estensioni di file hh e php (non dimenticare di aggiornare alla directory corretta).

Dovrebbe essere simile ...

<VirtualHost *:80> 

    ... keep the same ... 

</VirtualHost> 
<VirtualHost *:8080> 

    ... keep the same ... 

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

</VirtualHost> 

Andate in /etc/apache2/mods-available/hhvm_proxy_fcgi.conf e commentare che cosa c'è dentro. Altrimenti tutto sarà diretto verso HHVM.

Infine, riavviare apache

sudo service apache2 restart 

Ho provato questo in fretta su un sito locale esistente ed è stato il reindirizzamento di nuovo a 80 da 8080, che avrebbe dovuto fare. Se questo non funziona, fammi sapere.

UPDATE: Testato un po 'di più, e sembra che questo dovrebbe funzionare per voi. Dopo aver aggiunto quanto segue, saltare tra local.site.com/hhvm.php e local.site.com:8080/hhvm.php ha capovolto correttamente l'eco.

<?php if (defined('HHVM_VERSION')) { 
    echo "golden!"; 
} else { 
    echo "doh..."; 
} 
+0

Perfetto! = D (più di 15 caratteri) –

+1

Vorrei solo sottolineare che il passaggio in cui si commenta il contenuto di '/ etc/apache2/mods-available/hhvm_proxy_fcgi.conf' è molto importante e ** sarà necessario di nuovo se aggiorni HHVM **. –

1

Sì. È possibile avere Apache in ascolto sia sulla porta 80 che sulla porta 8080 (basta aggiungere altre configurazioni di ascolto), quindi aggiungere un host virtuale per localhost: 8080 che trasmette le richieste a HHVM tramite FastCGI.

+0

ok, sono abbastanza sicuro che ciò implichi la modifica di uno dei file di configurazione di Apache. Come detto sopra, non ne so abbastanza dei file di configurazione per farlo da solo. Puoi aggiungere un codice che mostri come sarebbe una porta usare hhvm e uno che non lo fa? –

Problemi correlati