【问题标题】:How to host a Happstack website?如何托管 Happstack 网站?
【发布时间】:2018-06-27 14:03:44
【问题描述】:

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

谢谢

【问题讨论】:

  • 嗯,一般来说,您最终会得到一个二进制文件和一堆文件(html、js 等)。一种选择是将其托管在虚拟专用服务器上——如果您对管理 linux 服务器感到满意的话。或者,您可能想查看 Heroku 或类似服务。
  • @Chirs 实际上我没有你所说的:一个二进制文件和一堆文件(html、js 等)。自从我使用 Happstack 以来,我拥有的是一堆 .hs 文件。
  • 那么您的第一步将是编译您的 happstack 应用程序。例如。使用stack build(如果你使用堆栈)或cabal build(如果你使用cabal)。
  • 最简单的方法之一是将您的代码放在一个 Docker 上,可能不止一个,即一个用于您的应用程序,另一个用于您的数据库。大多数云服务都接受 docker 实例。

标签: haskell web-hosting happstack


【解决方案1】:

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

获取服务器

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

您可以从公司租用“虚拟计算机” (虚拟专用服务器或 VPS)或者您可以使用您的计算机 在家里。

虚拟专用服务器

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

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

当您的 VPS 准备好使用时,为其附加一个静态 IP 地址,然后 在上面安装堆栈。

如果您已完成所有这些操作,您可以忽略“主服务器”部分并 直接跳转到“设置 Happstack”

家庭服务器

静态 IP(家庭网络)

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

使这项工作的方式因操作系统而异。 您最好通过网络搜索特定于您的操作系统的步骤。

端口转发

您的家庭路由器的设置页面应该有一个名为“端口转发”的部分 或类似的东西。

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

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

静态 IP(互联网)

联系您的互联网服务提供商,为您获取固定 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 地址。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-23
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2014-11-29
      相关资源
      最近更新 更多