我有一个简单的Ruby on Rails应用程序,它通过localhost测试(使用sqlite或ruby mysql2 gem)。 我有一个Web服务器准备好在线上传我的应用程序。 我知道我需要创建一个新的mysql数据库,这没有问题,显然在database.yml中添加了连接信息,但是如何将整个事物(app root)上传到我网站的公共目录?
答案 0 :(得分:5)
Rails本身包含a few links,可帮助您开始部署。我不久前在你的船上,我在半小时内开始使用Passenger和Apache(尽管我确实有一些轻松的Apache体验)。
并不是说这是一个好主意,但最简单的“部署”方法如下(假设您已将应用程序拉入部署环境,创建数据库并运行rake db:migrate
以及任何特定于应用程序的步骤,如Rails 3上的bundle install
:
rails server -p 80
(Rails 2上的./script/server -p 80
)。这必须在您具有管理权限且其他应用程序尚未侦听端口80的计算机上运行。这在许多方面都不是最理想的,其中最明显的是它不允许虚拟主机(即,它不会与从该服务器运行的其他“网站”合作),但这是一个很好的宝贝步骤进入。
转到机器的FQDN或实际上解析为机器IP地址的任何主机名(通过主机文件或A记录),您将看到您的应用程序。
您将要执行以下操作以使您的应用程序“快速”:
我将推荐一个非常非常典型的Apache / Passenger部署环境。原因是(至少在我看来)这个特定的堆栈是互联网上最全面的支持,所以如果你需要帮助,你将有最简单的时间。
我不想听起来像一个工具,但设置Apache(如果它尚未在您的部署环境中设置)留给读者练习。它在各种平台上的变化也很大,我无法写出一个繁琐的指南。粗略地,使用您的发行版的包管理器(对于Ubuntu,这是apt-get
)来连接它。
乘客安装更容易。您只需运行one command,他们的指南就会指导您完成所有步骤。此时,在您的Rails应用程序根目录中,您将能够运行passenger start
而不是rails s
,以使Passenger填充WEBrick曾经执行过的角色。
旅客指南fairly thoroughly documents,一步一步,如何设置一切。 Apache的VirtualHost条目中的ServerName
属性应设置为您的主机名。 Passenger将从您为Apache提供的公共目录中“找到”Rails应用程序,当您重新启动Apache时,服务器第一次获取页面请求时,Passenger将连接您的Rails应用程序并开始提供文件。
我正在编写本指南时没有执行这些步骤,所以我不确定这是自动完成的程度,但要确保通过a2ensite
启用该站点(在这种情况下)您将此VirtualHost
节点放在sites-available
目录中)并且通过a2enmod
启用了Passenger。
RAILS_ENV=production
内联到任何rake任务来方便地强制它们。您很可能正在运行的是rake db:migrate RAILS_ENV=production
。 Rails 3中的捆绑器独立于环境工作。重启Apache。有关如何执行此操作的详细信息将因分发而异,因此您必须查找它。对于Ubuntu,apache2ctl restart
为我做了。
按照ServerName
中的定义访问您的主机名,您应该会看到您的应用程序正常运行。
答案 1 :(得分:1)
我听说像卡米斯特拉诺这样的宝石可以帮助解决这个问题。
答案 2 :(得分:0)
Heroku是一个很好的(免费)选项:http://docs.heroku.com/quickstart
此外,部署到Heroku也很简单!