即使在退出shell时也要保持ROR应用程序运行

时间:2015-04-24 11:56:55

标签: ruby-on-rails

坦率地说,这是我在测试服务器上开发模式下的第一个ROR安装。 我已安装了https://github.com/sharetribe/sharetribe

的实例

我使用rvmsudo rails server -p 80启动了服务器 通过ssh 它工作得很好。 但是一旦我退出终端[mac],应用就停止了。注意我在某台服务器上运行它,而不是在我的机器上的localhost上运行。

我已经和node一起工作了,并且我知道有很多库存就像永远一样,即使在退出时也能保持脚本运行。是否有更简单的方法在rails应用程序中实现这一点?

我为某些lib提供了一些链接,例如" God"但很难理解如何使用它。

请建议。

3 个答案:

答案 0 :(得分:2)

尝试将其作为守护程序运行:

 rvmsudo rails server -p 80 -d &

现在即使退出shell

,应用程序仍应运行

答案 1 :(得分:1)

听起来您正试图绕过为生产网站创建永久服务器。

基本上,rails s命令实际上只是用于开发,在编写时尝试编写代码。它不适合在大而宽的世界中运行实际的应用程序(这就是为什么它默认情况下不会在端口80上运行)。

如果您希望在任何给定时间内有多个人使用该应用,则在使用rails s方法时,这将导致无法解释的错误。

您需要一个更重量级的服务器应用程序来处理请求,然后将这些请求传递给rails。

通常情况下,我会将其设置为使用apache和'乘客'插入。这将允许您的应用程序同时处理多个请求(同样,您将难以使用sqlite数据库执行此操作,几乎任何其他将处理多个访问点)。

尝试查看乘客https://www.phusionpassenger.com/

的文档

网上还有很多关于如何部署rails应用程序的教程,这里只有几个:

如果出于某种原因,您希望打开此服务器而不使用终端供单个用户使用,则可以使用nohup

nohup rails s &
exit

答案 2 :(得分:0)

如果您只想快速替代,可以在rails shttp://linux.die.net/man/1/screen)内投放screen
首先从包存储库中安装screen,然后:

开始输入屏幕:screen
运行服务器:rails s
分离屏幕并转到主要流程:Press CTRL+a then CTRL+d
如果您想稍后查看屏幕:screen -r(在您的主要流程上)
如果你想杀死屏幕:CTRL+d(在屏幕过程中)

请记住,这只是用于测试,对于生产服务器而言,这种替代方案并不是那么好。