我在我的linode VPS上设置了我的rails应用程序,phusion乘客已安装并正常工作,mysql也是如此(我知道这是因为我的朋友目前正在使用相同的设置运行2个生产应用程序)。 VPS正在运行Ubuntu 10.10,而我正在使用apache2和乘客。
我将应用程序SFTP到服务器,更新了捆绑包,设置了我的虚拟主机并指定了RailsEnv进行生产,路径都是准确的。
然后我重启服务器(以root用户身份) apachectl -k restart 试图挖掘db:migrate并且它没有做任何事情,所以我认为这是因为环境没有改变,这正是发生的事情。如果我进入rails控制台并输入Rails.env,它就会让我开发。
我不知道为什么,我做了所有应该将它设置为生产的东西?谁知道我可能错过了什么?在应用程序的某个地方,我应该改变一些说生产环境的东西吗?我认为只需要在rails 2.x
中完成提前感谢您提供任何帮助。
答案 0 :(得分:16)
RailsEnv
设置仅供乘客使用。它不会影响您在shell中键入的命令。
使用
RAILS_ENV=production rake db:migrate
和
RAILS_ENV=production rails console
或者将登录shell中的RAILS_ENV
环境变量设置为production
,这样您就不必将RAILS_ENV=production
附加到您发出的命令中:
export RAILS_ENV=production
(确切的命令可能会有所不同,具体取决于您使用的shell;上面的内容适用于bash)
答案 1 :(得分:1)
你走在正确的轨道上;在生产模式下实际运行应用程序所需要做的就是设置RailsEnv,假设您使用Passenger运行应用程序。但是,要运行数据库迁移,您需要告诉Rails要在其中运行的环境。
默认情况下,rails console命令默认为“开发”环境。运行数据库迁移也是如此。
要在生产环境中运行迁移,您需要按以下方式运行命令:
RAILS_ENV=production rake db:migrate
要在生产模式下运行控制台,您需要使用以下命令运行控制台:
rails console production
答案 2 :(得分:0)
如果您希望自动设置此变量,请将RAILS_ENV=production
放在~/.bashrc
文件的末尾。 (这仅适用于bash终端)
然后打开一个新终端,或重新启动ssh连接。