【问题标题】:How do you deploy a Happstack application to production?如何将 Happstack 应用程序部署到生产环境?
【发布时间】:2023-04-01 13:55:01
【问题描述】:

我似乎找不到关于这个主题的任何文档、任何博文或其他资源。

From what I have seen so far there seems to be support for FastCGI 但该项目已经 4 年没有提交了。然后可能会使用mod_proxy。也许您可以将 Happstack 应用程序作为一个守护进程运行,它自己处理所有请求。

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

【问题讨论】:

  • 当今世界大部分地区的标准是使用 nginx 反向代理。
  • 一般我只是倾向于使用happstack的内置网络服务器,这对于大多数情况来说已经足够了。

标签: linux haskell deployment web-deployment happstack


【解决方案1】:

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

我使用这种策略来部署我的大部分网络应用程序,除了基于 Erlang 的应用程序;我相信 Yaws 会自行处理。显然有些人正在考虑同样的事情with warp,但我对此知之甚少,无法发表评论。只要您运行的语言能够响应 HTTP 请求,反向代理方法就可以工作,这比指望(fast)?CGI 或适当的mod_.*? 更好。

选择 Nginx 作为服务器是因为它是 faster than the alternatives at serving static files(在这种情况下几乎就是它所做的一切),而且我发现它很容易配置。这是偏好而非规则。您可能可以以相同的方式使用 Apache 或 Lighttpd 或其他任何东西,但我会将这个解释留给更有经验的人。

【讨论】:

  • 谢谢!多么巧合,我只是在阅读 Nginx for Developers: An Introduction 并在 vagrant vm 中设置 nginx :)
  • 顺便说一句,配置 nginx 似乎比配置 Apache 好得多。我真的很喜欢配置文件的语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 2016-10-05
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多