如何托管 Happstack 网站?

How to host a Happstack website?

我已经使用 Happstack 建立了一个网站,但我没有托管经验。我在网上找到的所有内容对我来说要么已经过时,要么过于复杂。有没有简单的方法或教程可以用来发布我的 Happstack 网站?

谢谢

这是我使用 Haskell 服务器软件 运行ning 获得网站所遵循的托管过程的简短概述。

获取服务器

托管时,您首先需要的是 运行 服务器代码的设备。

您可以从公司租 "virtual computer" (虚拟专用服务器或 VPS)或者您可以使用您说谎的计算机 关于在家。

虚拟专用服务器

从众多提供此服务的公司中选择一个 VPS 提供商 种服务。提供商应允许您在 VPS 上安装软件 并为其附加一个静态 IP 地址。我使用过 AWS Lightsail 和 Cloud9 在过去。

一旦您决定了提供商,您就需要订阅一个计划。 这里重要的是选择一个可以安装堆栈的 OS。 您还应该选择足够的 RAM、存储 space 和时钟速度以允许 堆叠工作没有问题。

当您的 VPS 可以使用时,将静态 IP 地址附加到它,然后 在其上安装堆栈。

如果你完成了所有这些,你可以忽略 "Home Server" 部分并 直接跳转到 "Set Up Happstack"

家庭服务器

静态 IP(家庭网络)

让你的家庭路由器为你打算使用的设备分配一个固定的IP 作为服务器。请注意,这仅适用于您的家庭网络。

完成这项工作的方式因操作系统而异。 您最好 运行 网络搜索特定于您的 OS 的步骤。

端口转发

您的家庭路由器的设置页面应该有一个名为 "Port Forwarding" 的部分 或类似的东西。

目标是将所有连接到您家用路由器的 80 端口的连接转发到 您已将 happstack 配置为侦听的设备端口。 您要将其转发到的 IP 地址将是固定 IP 地址 您的设备。

同样,该过程因路由器制造商的不同而有很大差异。 您可以随时查找在路由器上执行端口转发的步骤 特定品牌和型号的。

静态 IP(互联网)

联系您的 Internet 服务提供商,为您的设备获取一个固定的 IP 地址 互联网上的路由器。

设置 Happstack

假设您想 运行 在您设备的端口 81 上进行 happstack。

执行以下步骤:

  1. stack new happstack-hosting

  2. happstack-server添加到项目的依赖项列表中 package.yaml 文件.

  3. 将以下代码放入项目的app/Main.hs文件

    module Main where
    
    import Happstack.Server (nullConf, simpleHTTP, toResponse, ok, port)
    
    main :: IO ()
    main = simpleHTTP (nullConf { port = 81 }) $ ok "Hello, World!"
    
  4. 运行 stack build

  5. 运行sudo stack exec happstack-hosting --allow-different-user

当然,一旦您确认可以从 Internet 访问该网站,您就必须用您自己的服务器代码替换此 Main.hs。

使用域名

从注册商处获取域名。我以前使用过 Google Domains、Namecheap 和 GoDaddy,但还有很多其他的。

如果您使用 VPS,请按照注册商的说明将域名重定向到您 VPS IP 地址的端口 81。

否则将域名重定向到80端口 您路由器的静态 IP 地址。

感谢所有回答的人。我最终使用 docker 图像和 heroku 一起进行部署。如果您想查看 docker 文件的外观,请检查 https://github.com/hpbl/haskellkoans