如何将Happstack应用部署到生产环境?

6
我似乎找不到任何关于这个主题的文档、博客文章或其他资源。从目前看来,似乎支持FastCGI,但这个项目已经4年没有提交了。然后可以使用mod_proxy。也许您可以将Happstack应用程序作为守护程序运行,由其自己处理所有请求。这只是我的猜测,真希望看到有经验的人说些什么!

3
目前大多数宇宙中采用的标准是使用nginx反向代理。 - Carl
1
通常我只使用happstack内置的Web服务器,这对大多数情况来说已经足够了。 - Alp Mestanogullari
1个回答

5

@Carl在他的评论中提到了这一点,所以我将详细说明我的过程,希望对您有用。这些是在Debian Linux上使用nginx作为服务器的步骤。

  • 使用apt-get install nginx安装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;
       }
 }
  • 使用/etc/init.d/nginx restart重启您的服务器
  • 启动您的Happstack应用程序,并确保它正在监听端口3000(或在location中替换适当的端口)

我使用这种策略部署大多数Web应用程序,除了基于Erlang的应用程序; 我相信Yaws可以自行处理。 显然,一些人正在考虑使用warp,但我对此不太了解。只要您运行的语言能够响应HTTP请求,反向代理方法就可以奏效,这比依靠(fast)?CGI或适当的mod_.*?更可靠。

Nginx被选为服务器,因为它在提供静态文件方面比其他替代品更快(在这种情况下几乎是它的全部工作),而且我发现它非常容易配置。这只是一种偏好而不是规则。你可能也可以使用Apache或Lighttpd或其他方式来完成同样的工作,但我会把解释留给更有经验的人。

谢谢!真巧,我刚刚在阅读《Nginx for Developers: An Introduction》并在vagrant虚拟机中设置nginx :) - rzetterberg
顺便说一下,配置nginx比配置Apache要容易得多。我真的很喜欢配置文件的语法。 - rzetterberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接