如何部署Ruby应用程序 - 而不是ROR?

时间:2013-10-09 16:25:11

标签: ruby rubygems

我对ruby很新,我想知道,是否可以在服务器上部署我的ruby脚本?
或者我应该使用Rails?

我可以理解Rails不是核心Ruby lang的一部分,Ruby即使没有Rails也有server功能。 (如在Java,PHP等中。)

修改

我有Ruby script - 充当cmd-line传递的程序 - 我想以CGI脚本/程序过去的方式将其部署到外部(甚至内部)服务器。

2 个答案:

答案 0 :(得分:0)

是的,您可以部署任何Ruby应用程序,而不仅仅是Rails应用程序。看看Capistrano

然而,部署和服务是两回事。如果您正在寻找Ruby HTTP服务器,请查看Unicorn,Thin,WEBrick,Puma。

如果您想要一个成熟的解决方案,请尝试处理部署网络服务部分的Heroku

答案 1 :(得分:0)

有很多工具可以部署Ruby项目,但你可以手动完成。

我也发现很难找到一个易于使用的解决方案,我认为这在RoR框架中是一个非常烦人的差距。

我一直在使用Git将项目部署到服务器的解决方案,比如Heroku工具带(google it,这是一个非常好的工具)。主要概念是:您使用Git推送您的项目,服务器执行其他所有操作!在这里,您可以看到我的项目:https://github.com/sentient06/RDH/

但请不要专注于此。相反,请阅读我在wiki中获取所有信息的方式:https://github.com/sentient06/RDH/wiki

这有点过时了,但我可以在这里总结一下:

首先,设置您的服务器。这是最无聊的部分,您必须设置所有配置,安全措施,远程访问等等。

如果您没有服务器,可以专门为RoR应用程序雇用一台服务器。有一些好的,每个都有不同的部署工作流程。但假设您决定自己设置:

我建议你有任何Linux或Unix系统,服务器版本。然后安装Ruby Version Manager,然后安装Ruby,然后安装Rails。然后安装服务器应用程序。我建议使用Thin,但很多人使用Unicorn或Apache或其他服务器。在互联网上挖掘一下,找到一个易于使用的解决方案。但是,如果您不使用Apache,则还需要“反向代理”,因此您可以将端口80,8080等上的所有请求重定向到您的应用程序。我建议Nginx(我不喜欢Apache,我认为太过分了)。

现在,一切都已完成,部署过程可以或多或少地完成:

1 - 以在服务器中更新文件的方式提交所有内容;

2 - 在服务器中,cd到应用程序的目录并执行以下命令:

$ bundle package
$ bundle install --deployment
$ RAILS_ENV=production rake db:migrate
$ rake assets:precompile

3 - 重新启动服务器,如有必要,重启反向代理。

在互联网上挖掘以了解每个命令。这些将极大地迫使您的应用程序进入生产模式,减少javascript和CSS使用的空间,迁移生产数据库并安装捆绑包。生产RoR与开发RoR没有太大差别,它更紧凑,更快。

我希望这些信息有用。

祝你好运!

<强>更新

我忘了提及,检查ruby-toolbox,它有一些非常有用的统计信息和有关Rails技术更新频率的信息。它们有许多类别,这个类别是部署自动化,请看一看:https://www.ruby-toolbox.com/categories/deployment_automation

干杯!