2013-06-18 10 views
6

Non riesco a trovare alcuna documentazione, blog o altre risorse su questo argomento.Come si distribuisce un'applicazione Happstack in produzione?

From what I have seen so far there seems to be support for FastCGI ma il progetto non ha avuto un commit per 4 anni. E quindi probabilmente si potrebbe usare mod_proxy. Forse puoi semplicemente eseguire l'applicazione Happstack come un demone che gestisce tutte le richieste da solo.

Sto solo indovinando, sarebbe davvero bello vedere cosa dicono le persone con esperienza!

+3

Lo standard su gran parte dell'universo utilizza un proxy inverso di nginx, in questi giorni. – Carl

+1

Generalmente tendo a utilizzare il web server integrato di happstack, questo è sufficiente per la maggior parte dei casi. –

risposta

4

@Carl ne parla nel suo commento, quindi specificherò il mio processo nella speranza che sia utile per voi. Questi sono i passi su Debian linux con nginx come server.

  • installare nginx con apt-get install nginx
  • creare un file a /etc/nginx/sites-available/your-app-name contenente

.

server { 
     listen 80; 
     server_name your-app.com www.your-app.com your-app.ca; 

     rewrite .*/favicon.ico /img/favicon.ico last; 

     location ~ ^/(css|js|img|html)/ { 
       root /path/to/your/static/resource/folder; 
       expires 30d; 
     } 

     location/{ 
       proxy_pass http://localhost:3000; 
       proxy_redirect 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; 
       client_max_body_size 10m; 
       client_body_buffer_size 128k; 
       proxy_connect_timeout 90; 
       proxy_send_timeout 90; 
       proxy_read_timeout 90; 
       proxy_buffer_size 4k; 
       proxy_buffers 4 32k; 
       proxy_busy_buffers_size 64k; 
       proxy_temp_file_write_size 64k; 
     } 
} 
  • riavviare il server con /etc/init.d/nginx restart
  • iniziare la Happstack app, e assicurarsi che sia in ascolto sulla porta 3000 (o sostituire la porta appropriata nel location)

Io uso questa tattica distribuire la maggior parte delle mie app Web, ad eccezione di quelle basate su Erlang; Mi fido di Yaws per gestire se stesso. Apparentemente alcune persone stanno considerando la stessa cosa with warp, ma non ne so abbastanza per commentare. L'approccio del reverse proxy funzionerà fintanto che la lingua che stai utilizzando è in grado di rispondere alle richieste HTTP, che è una scommessa migliore del conteggio allo (fast)?CGI o allo mod_.*? appropriato.

Nginx viene scelto come server perché è faster than the alternatives at serving static files (che è praticamente tutto ciò che sta facendo in questo caso) e perché lo trovo davvero facile da configurare. Questa è una preferenza, non una regola. Probabilmente potresti usare Apache o Lighttpd o qualsiasi altra cosa allo stesso modo, ma lascerò questa spiegazione a qualcuno più esperto con esso.

+0

Grazie! Che coincidenza, stavo solo leggendo [Nginx for Developers: An Introduction] (http://carrot.is/coding/nginx_introduction) e impostando nginx in un vm vagabondo :) – rzetterberg

+0

E btw, la configurazione di nginx sembra molto più bella di configurare di Apache. Mi piace molto la sintassi dei file di configurazione. – rzetterberg

Problemi correlati