如何将Happstack应用程序部署到生产中?

rze*_*erg 6 linux deployment haskell web-deployment happstack

我似乎无法找到有关此主题的任何文档,任何博客或其他资源.

从我到目前为止看来似乎有所支持,FastCGI但该项目已经有4年的承诺.然后mod_proxy可能会被使用.也许您可以将Happstack应用程序作为守护程序运行,该守护程序可以自行处理所有请求.

我只是在这里猜测,看看有经验的人说的真是太好了!

Ina*_*thi 5

@Carl在他的评论中提到了这一点,所以我将指明我的过程,希望它对你有用.这些是使用nginx作为服务器的Debian linux上的步骤.

  • 安装nginx使用apt-get install nginx
  • /etc/nginx/sites-available/your-app-name包含时创建一个文件

.

  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;
       }
 }
Run Code Online (Sandbox Code Playgroud)
  • 重启你的服务器 /etc/init.d/nginx restart
  • 启动你的Happstack应用程序,并确保它正在侦听端口3000(或替换端口中的相应端口location)

我使用这种策略来部署我的大多数Web应用程序,除了基于Erlang的应用程序; 我相信雅司会处理自己.显然有些人正在考虑使用warp相同的东西,但我不太了解这一点.只要您运行的语言能够响应HTTP请求,反向代理方法就会起作用,这比依靠(fast)?CGI或适当的更好mod_.*?.

选择Nginx作为服务器,因为它比提供静态文件的选择更快(在这种情况下几乎就是它所做的全部),并且因为我发现它非常容易配置.这是一种偏好而非规则.您可能会以相同的方式使用Apache或Lighttpd或其他任何东西,但我会将该解释留给更有经验的人.