ruby-on-rails 如何在线发布Ruby on Rails应用程序?

qfe3c7zg  于 2023-08-08  发布在  Ruby
关注(0)|答案(1)|浏览(143)

我有一个简单的RubyonRails应用程序,它可以通过localhost测试(都使用sqlite或rubymysql2gem)运行。我有一个Web服务器准备在线上传我的应用程序。我知道我需要创建一个新的mysql数据库,这是没有问题的,显然在database.yml中添加连接信息,但我如何正确地上传整个东西(应用程序根)到我的网站的公共目录?

6qfn3psc

6qfn3psc1#

Rails本身包含a few links,让您开始部署。我在你的船前一段时间,我开始与乘客和Apache在半小时内(虽然我确实有一些轻Apache的经验去)。

开始只是为了向自己证明你能做到

这并不是一个好主意,但最简单的“部署”方法如下(假设您已经将应用程序拉入部署环境,创建了数据库,并运行了rake db:migrate和任何特定于应用程序的步骤,如Rails 3上的bundle install):

  1. Rails 3上的rails server -p 80(Rails 2上的./script/server -p 80)。
    1.没有步骤2。
    这必须在您拥有管理权限的计算机上运行,并且端口80尚未被其他应用程序监听。这在许多方面都是次优的,最明显的是它不允许虚拟主机(即,它不会与从该服务器运行的其他“网站”合作),但这是一个很好的婴儿步骤,浸入你的脚。
    转到计算机的FQDN或实际上任何解析为计算机IP地址的主机名(通过hosts文件或A记录),您将看到您的应用程序。

现在好好做

您需要执行以下操作以使您的应用程序“跟上速度”:

  • 将其部署在Apache等Web服务器应用程序后面的虚拟主机之后
  • 使用面向生产的部署设置(WEBrick的单线程性以及其他因素使其不适合生产)
  • 实际使用“生产”Rails环境

我将推荐一个非常非常典型的Apache/Passenger部署环境。原因是(至少在我看来)这个特定的堆栈是整个互联网上最彻底的支持,所以如果您需要获得帮助,您将有最轻松的时间使用它。

1.设置Apache

我不想听起来像是一个工具,但设置Apache(如果尚未在部署环境中设置)留给读者的练习。它在不同平台之间也有很大的差异,以至于我无法编写一个包罗万象的指南。粗略地说,使用发行版的包管理器(对于Ubuntu,这是apt-get)来连接它。

2.设置Passenger

乘客安装更容易。你只需要运行one command,他们的指南会带你完成所有的步骤。此时,在Rails应用程序根目录中,您可以运行passenger start而不是rails s,让Passenger扮演WEBrick曾经扮演的角色。

3.将Passenger与Apache挂钩

乘客指南相当彻底的文件,一步一步,如何设置这一切。Apache的VirtualHost条目中的ServerName属性应该设置为您的主机名。Passenger将从您给予Apache的公共目录中“找到”Rails应用程序,当您重新启动Apache时,服务器第一次收到页面请求,Passenger将连接您的Rails应用程序并开始提供文件。
在编写本指南的过程中,我没有执行这些步骤,所以我不确定这在多大程度上是自动完成的,但请确保站点是通过a2ensite启用的(如果您将这个VirtualHost节点放在sites-available目录中),Passenger是通过a2enmod启用的。
1.确保您的生产环境已就绪这可能是您第一次使用生产环境。大多数rake任务不会自动作用于生产环境,但是您可以通过将RAILS_ENV=production内嵌到任何rake任务中来方便地强制它们这样做。你很可能运行的是rake db:migrate RAILS_ENV=production。Rails 3中的捆绑器独立于环境工作。

5.开始

重新启动Apache。具体如何做到这一点将因发行而异,因此您必须查找。对于Ubuntu,apache2ctl restart为我做到了。
访问在ServerName中定义的主机名,您应该可以看到应用程序已启动并运行。

相关问题