我有一个简单的RubyonRails应用程序,它可以通过localhost测试(都使用sqlite或rubymysql2gem)运行。我有一个Web服务器准备在线上传我的应用程序。我知道我需要创建一个新的mysql数据库,这是没有问题的,显然在database.yml中添加连接信息,但我如何正确地上传整个东西(应用程序根)到我的网站的公共目录?
6qfn3psc1#
Rails本身包含a few links,让您开始部署。我在你的船前一段时间,我开始与乘客和Apache在半小时内(虽然我确实有一些轻Apache的经验去)。
这并不是一个好主意,但最简单的“部署”方法如下(假设您已经将应用程序拉入部署环境,创建了数据库,并运行了rake db:migrate和任何特定于应用程序的步骤,如Rails 3上的bundle install):
rake db:migrate
bundle install
rails server -p 80
./script/server -p 80
您需要执行以下操作以使您的应用程序“跟上速度”:
我将推荐一个非常非常典型的Apache/Passenger部署环境。原因是(至少在我看来)这个特定的堆栈是整个互联网上最彻底的支持,所以如果您需要获得帮助,您将有最轻松的时间使用它。
我不想听起来像是一个工具,但设置Apache(如果尚未在部署环境中设置)留给读者的练习。它在不同平台之间也有很大的差异,以至于我无法编写一个包罗万象的指南。粗略地说,使用发行版的包管理器(对于Ubuntu,这是apt-get)来连接它。
apt-get
乘客安装更容易。你只需要运行one command,他们的指南会带你完成所有的步骤。此时,在Rails应用程序根目录中,您可以运行passenger start而不是rails s,让Passenger扮演WEBrick曾经扮演的角色。
passenger start
rails s
乘客指南相当彻底的文件,一步一步,如何设置这一切。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中的捆绑器独立于环境工作。
ServerName
a2ensite
VirtualHost
sites-available
a2enmod
RAILS_ENV=production
rake db:migrate RAILS_ENV=production
重新启动Apache。具体如何做到这一点将因发行而异,因此您必须查找。对于Ubuntu,apache2ctl restart为我做到了。访问在ServerName中定义的主机名,您应该可以看到应用程序已启动并运行。
apache2ctl restart
1条答案
按热度按时间6qfn3psc1#
Rails本身包含a few links,让您开始部署。我在你的船前一段时间,我开始与乘客和Apache在半小时内(虽然我确实有一些轻Apache的经验去)。
开始只是为了向自己证明你能做到
这并不是一个好主意,但最简单的“部署”方法如下(假设您已经将应用程序拉入部署环境,创建了数据库,并运行了
rake db:migrate
和任何特定于应用程序的步骤,如Rails 3上的bundle install
):rails server -p 80
(Rails 2上的./script/server -p 80
)。1.没有步骤2。
这必须在您拥有管理权限的计算机上运行,并且端口80尚未被其他应用程序监听。这在许多方面都是次优的,最明显的是它不允许虚拟主机(即,它不会与从该服务器运行的其他“网站”合作),但这是一个很好的婴儿步骤,浸入你的脚。
转到计算机的FQDN或实际上任何解析为计算机IP地址的主机名(通过hosts文件或A记录),您将看到您的应用程序。
现在好好做
您需要执行以下操作以使您的应用程序“跟上速度”:
我将推荐一个非常非常典型的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
中定义的主机名,您应该可以看到应用程序已启动并运行。