0

我在 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:与 <AWS-IPv4-public-IP> 端口 22 的连接:损坏的管道'

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

为我的实例分配弹性 IP 有帮助吗?

感谢任何指导。

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

4

2 回答 2

0

有很多方法可以将 rails 服务器作为守护进程运行。如果你在谷歌上搜索“rails server as daemon”,你会看到很多链接。没有添加任何链接,因为许多好的链接是由托管服务提供商提供的。

如果您出于某种原因仍想通过 shell 运行 rails 服务器,tmux则可以这样做。以下摘录无耻地从Tmux维基复制。

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

您可以打开tmux终端并启动 rails 服务器。您可以分离tmux并退出您的 ssh 会话。无论何时,您都可以通过 ssh 回到您的服务器并重新连接到tmux会话。当你离开它时,你的 Rails 服务器仍将运行。这是在前台运行开发服务器进行调试的好方法。

于 2018-03-23T08:12:23.583 回答
0

解决了https://mosh.org/的问题,适用于将来偶然发现这篇文章的任何人。

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

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

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

于 2018-03-28T08:46:46.993 回答