发展与发展从同一台机器部署Rails应用程序

时间:2012-01-06 21:51:31

标签: ruby-on-rails git deployment

我已经开始使用RVM,Rails 3和我的服务器在我的服务器上开发一个新的Rails应用程序。 Ruby v1.9.2。我使用Git作为我的代码库。这是一个简单的应用程序,我不想使用额外的服务器。我只想直接从我正在开发的同一台服务器上部署我的应用程序。

我已经安装了Phusion Passenger w / Apache来为我的应用程序提供服务,但是我已经意识到我不能指向我的开发目录,因为我的RAILS_ENV设置为“development”。 (当我尝试将RAILS_ENV设置为“生产”并为应用程序提供服务时,我发现我在资产管道上遇到了文件权限错误以及其他问题)

部署应用程序的最简单/最简单的方法是什么?我可以简单地说: 1)创建一个单独的用户来运行rails生产(开发中的Rails当前在我的Ubuntu服务器上运行) 2)将我的repo克隆到一个单独的目录中并相应地配置Apache 3)使用生产所需的数据为我的数据库建立种子(此处不需要太多数据) 4)还有什么?

我简要介绍了Capistrano,但对于这个简单的应用来说,这似乎有些过分。我只需要能够为某些数据输入提供简单的Web界面。好像git push应该足够了,但我之前没有这样做过,所以也许我错了?另外,如果我git push如何确保“生产”目录中的文件权限都设置正确,特别是对于在原始app目录结构中创建的任何新文件?

感谢任何想法。

1 个答案:

答案 0 :(得分:2)

不 - 你不需要上面的Capistrano;在这个阶段,我觉得这只会让你更进一步迷惑。

我建议您首先将您的回购保存到私人Github或免费的BitBucket帐户。你应该做的是为“开发”保留一个文件夹。

请记住,Passenger只是一个使用Apache的模块。因此,您需要做的是在apache下设置虚拟主机并将其指向系统上的另一个文件夹。对于此示例,请考虑:

~/rails/myapp_development/~/rails/myapp_production/

乘客总是在生产中运行应用程序,因此这不应成为问题。您可以在开发设置中执行bundle --without=production以忽略生产命名空间下Gemfile中列出的任何gem,也就是说您已经指定了mysql适配器,您可以忽略它并让Rails仅依赖于SQlite宝石。

您现在可以简单地在开发文件夹中进行开发,提交,推送到BitBucket。部署将简单地进入生产文件夹并执行git pulltouch tmp/restart.txt