Haskell 如何主持Happstack网站?

Haskell 如何主持Happstack网站?,haskell,web-hosting,happstack,Haskell,Web Hosting,Happstack,我已经用Happstack建立了一个网站,但我没有主持的经验。我在网上找到的东西要么已经过时,要么对我来说太复杂了。有没有一种简单的方法或教程可以让我发布我的Happstack网站 谢谢以下是我使用Haskell服务器软件运行网站所遵循的托管过程的简要概述 获取服务器 托管时,您需要的第一件事是运行服务器代码的设备 你可以从公司租一台“虚拟计算机” (虚拟专用服务器或VPS)或您可以使用您拥有的计算机 大约在家里 虚拟专用服务器 从众多提供此服务的公司中选择VPS提供商 一种服务。提供商应允许您

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


谢谢

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

获取服务器 托管时,您需要的第一件事是运行服务器代码的设备

你可以从公司租一台“虚拟计算机” (虚拟专用服务器或VPS)或您可以使用您拥有的计算机 大约在家里

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

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

当VPS准备好使用时,将静态IP地址附加到VPS上,然后 在上面安装堆栈

如果您完成了所有这些,您可以忽略“Home Server”部分并 直接跳到“设置Happstack”

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

实现这一点的方法在不同的操作系统中有很大不同。 您最好在web上搜索特定于操作系统的步骤

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

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

同样,根据路由器制造商的不同,处理过程也有很大差异。 您始终可以查找在路由器上执行端口转发的步骤 指特定的品牌和型号

静态IP(互联网) 请与您的internet服务提供商联系,以获取您的网络的固定IP地址 因特网上的路由器

设置Happstack 假设要在设备的端口81上运行happstack

执行以下步骤:

  • stack-new-happstack-hosting

  • 将happstack服务器添加到项目内部的依赖项列表中 package.yaml文件

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

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

  • 运行sudo stack exec hapstack hosting--允许不同的用户

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

    使用域名 从注册商处获取域名。我以前使用过谷歌域名,namescape和GoDaddy,但是还有很多其他的域名

    如果您正在使用VPS,请按照注册商的指示将域名重定向到VPS IP地址的端口81

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

    感谢所有回答的人。最后,我在heroku旁边使用了docker映像进行部署。如果您想查看docker文件的外观,请检查

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