Rails AWS 托管服务器

Rails server on AWS hosting

我在 AWS 上托管了一个 rails 应用程序。每次我想访问我的网站时,我都必须经过一些非常重复的步骤。

1. ssh -i <<a>my-keypair-pem> ec2-user@<<a>AWS-IPv4-public-IP>
2. rails s -p <<a>port> -b 0.0.0.0

一段时间后,我也得到这个错误

'packet_write_wait: Connection to <AWS-IPv4-public-IP> port 22: Broken pipe'

我做了一些研究,似乎无法找到一种方法来保持我的应用程序 运行ning 24/7 而不必在每次访问之前执行这些步骤。 我的 AWS 实例是 24/7,所以网站也应该 运行 24/7。

会为我的实例分配一个弹性 IP 帮助吗?

感谢任何指导。

编辑:我最初遵循本教程https://www.youtube.com/watch?v=jFBbcleSPoY,这就是我找到上述步骤的地方。

运行 rails 服务器作为守护进程的方法有很多种。如果你 google for "rails server as daemon",你会看到很多链接。没有添加任何链接,因为许多好的链接都是由托管服务提供商提供的。

如果出于某种原因您仍想通过 shell 运行 rails 服务器,tmux 是可行的方法。以下摘录无耻地从Tmux Wiki 中复制。

tmux 是一个终端多路复用器。它使您可以在一个终端中的多个程序之间轻松切换,分离它们(它们在后台保持 运行ning)并将它们重新连接到不同的终端。

您可以打开 tmux 终端并启动 rails 服务器。您可以从 tmux 分离并退出您的 ssh 会话。无论何时,您都可以通过 ssh 返回到您的服务器并 re-attach 到 tmux 会话。您的 rails 服务器在您离开时仍会 运行ning。这是在前台 运行 开发服务器进行调试的好方法。

解决了 https://mosh.org/ 的问题,以供日后偶然发现此 post 的任何人使用。

下载并安装mosh(手机shell)
运行我原问题中提到的命令的修改版本

mosh -ssh="ssh -i <your-keypair.pem>" ec2-user@<AWS-Instance-IP>

这解决了我的 packet_write_wait 问题,我不必继续重新启动 rails 服务器。