【问题标题】:How to deploy sinatra application on myown private server?如何在我自己的私有服务器上部署 sinatra 应用程序?
【发布时间】:2015-12-25 09:58:57
【问题描述】:

我是 sinatra 应用程序的新手。我用 sinatra 开发了我的第一个应用程序。现在,我想在我自己的私人服务器上部署这个应用程序。我自己的私有服务器是 Linux 服务器,并安装了所有必需的配置(即 ruby​​、sinatra、passenger)。

那么,我想知道如何部署它?

【问题讨论】:

  • 我将代码放在 github 上,然后将其拉到我的私人服务器上......然后我尝试运行“cap production deply”:我收到以下错误:部署失败并出现错误:以 root@MYIP 执行时出现异常:乘客配置退出状态:1 乘客配置标准输出:没有写入乘客配置标准错误:*** 错误:Phusion 乘客似乎没有运行。如果您确定它正在运行,那么导致此问题的原因可能是以下原因之一:
  • 将您的机器配置为通过端口接受来自其他人的连接/请求。并将通过此端口的请求映射到您的 sinatra 应用程序。然后启动您的应用程序(这可能是ruby yourapp.rb,或shotgun yourapp.rb 或其他)。
  • 如果我在终端上使用“ruby app.rb”运行,那么每次我应该运行这个......但我希望它自动运行......怎么做?

标签: ruby deployment sinatra


【解决方案1】:

这是我们公司的 Ruby 微服务 API 的基本设置:

1) 将您的 Ruby 应用程序放在一个特殊的文件夹中

我们喜欢 /srv/applications/

2) 为您的应用程序选择一个端口

不要使用默认端口。对于 Ruby 应用,我更喜欢 2000 系列(例如,2000、2010、2020,...)中的那些。

3) 设置反向代理以访问该端口上的应用程序

根据您的服务器,Apache 或 Nginx 有很多教程。

这样 /user-api 将重定向到您的端口。前任。 myserver.com/user-api 转到 myserver.com:2020

4) 运行您的应用程序

如果您不使用 bundler,请使用 bundle 运行应用。要在特定端口上运行,请使用“bundle exec rackup -p”

然后您应该能够访问该应用程序。如果您遇到麻烦,一些常见问题包括 1)端口被外部世界阻止,2)您在应用程序运行之前尝试访问它,现在即使应用程序正在运行,您仍然会得到 503(重新启动您的网络服务器)修复它)。

奖励 - 将您的应用程序作为 Unix 服务运行

这有很大的好处。如果您可以将 Ruby 应用程序与另一个主管级别的应用程序一起运行,那么您可以在重新启动时自动启动它,在失败时自动重新启动应用程序(当您遇到灾难性问题时可能会导致抖动)。

最初我们使用Monit,它通常用于服务监控,但实际上可以为服务启动/停止/重新启动(启动时启动)。

现在我们使用foremanupstart。我强烈推荐这种配对,因为应用监督是 Upstart 的教科书用例。如果你有 vanilla 配置,你可以跳过使用 Foreman,但如果你需要启动其他服务、设置环境变量等,它会非常有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2017-07-05
    • 2015-07-10
    相关资源
    最近更新 更多