haskell - 如何托管 Happstack 网站?
问题描述
我已经使用 Happstack 建立了一个网站,但我没有托管经验。我在网上找到的所有东西要么已经过时,要么对我来说太复杂了。有没有一种简单的方法或教程可以用来发布我的 Happstack 网站?
谢谢
解决方案
这是我使用 Haskell 服务器软件运行网站所遵循的托管过程的简短概述。
获取服务器
托管时,您需要的第一件事是运行服务器代码的设备。
您可以从公司(虚拟专用服务器或 VPS)租用“虚拟计算机”,也可以使用家里的计算机。
虚拟专用服务器
从提供此类服务的众多公司中选择 VPS 提供商。提供商应允许您在 VPS 上安装软件并为其附加静态 IP 地址。我过去使用过 AWS Lightsail 和 Cloud9。
一旦您决定了提供者,您需要订阅一个计划。这里重要的是选择一个可以安装堆栈的操作系统。您还应该选择足够的 RAM、存储空间和时钟速度,以使堆栈正常工作。
当您的 VPS 准备好使用时,为其附加一个静态 IP 地址,然后在其上安装堆栈。
如果您完成了所有这些,您可以忽略“家庭服务器”部分并直接跳转到“设置 Happstack”
家庭服务器
静态 IP(家庭网络)
让您的家庭路由器为您打算用作服务器的设备分配一个固定 IP。请注意,这仅适用于您的家庭网络。
使这项工作的方式因操作系统而异。您最好在网络上搜索特定于您的操作系统的步骤。
转发端口
您的家庭路由器的设置页面应该有一个名为“端口转发”或类似内容的部分。
目标是将与家庭路由器的端口 80 建立的所有连接转发到您已配置 happstack 侦听的设备端口。您要将其转发到的 IP 地址将是您设备的固定 IP 地址。
同样,该过程因路由器的制造商而异。您可以随时查看在特定品牌和型号的路由器上执行端口转发的步骤。
静态 IP(互联网)
请联系您的 Internet 服务提供商,为您的路由器在 Internet 上获取固定 IP 地址。
设置 Happstack
假设您想在设备的 81 端口上运行 happstack。
执行以下步骤:
stack new happstack-hosting
添加
happstack-server
到项目的 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 happstack-hosting --allow-different-user
当然,一旦您确认可以从 Internet 访问该网站,您就必须用您自己的服务器代码替换此 Main.hs。
使用域名
从注册商处获取域名。我以前使用过 Google Domains、Namecheap 和 GoDaddy,但还有很多其他的。
如果您使用 VPS,请按照注册商的说明将域名重定向到 VPS IP 地址的端口 81。
否则将域名重定向到路由器静态 IP 地址的 80 端口。
推荐阅读
- python-3.x - 如何将 1D np 数组重塑为 3D?
- bash - 使用 awk 重新格式化文本文件并将其剪切为单行
- python - 在 Pandas 中拆分日期列
- java - 如何在一个类中使用另一个类的方法?
- python - ORA-00933: SQL 命令未以 psycopg2 正确结束
- api - Flutter API 数据获取
- linux - 主题解析错误:gtk.css:2794:15:不推荐使用单位。假设'px'
- javascript - 浏览器如何重构无效的html结构,有什么规则或方法吗?
- javascript - 如何使用按钮将 html 画布保存为图像?
- javascript - 如何通过单击应用程序中的按钮生成新的锻炼?