2012-11-29 46 views
0

我已经将我的Rails应用程序从svn存储库上传到我的服务器。在我的本地主机它工作正常,但是当我试图访问通过浏览器,我得到了以下错误:Rails将Rails应用程序上传到Passenger服务器

There appears to be a database problem. 
Your config/database.yml may not be written correctly. Please check it and fix any errors. 
Your database schema may be out of date or nonexistant. Please run rake db:migrate to ensure that the database schema is up-to-date. 
The database server may not be running. Please check whether it's running, and start it if it isn't. 

我不知道该怎么做,因为这是我第一次尝试上载轨项目,我在远程服务器的本地主机上执行同样的操作。

顺便说一句,我是否应该通过ssh连接运行rails s?

+0

结帐Capistrano and Deprec。 – rwilliams

+0

我不明白你的意思。 我忘了这个错误: '数据库配置没有指定适配器(ActiveRecord :: AdapterNotSpecified)' – user1573607

+0

顺便说一句 - 与[tag:webstart]的连接是什么? –

回答

1

更新:首先要做的是获得部署的教育:start here on the Rails site

所以,事情是,在你的服务器上你需要建立一个数据库,就像你在本地机器上做的那样。从SVN中检出代码只会让你获得应用程序,而不是数据库。

您在标题中提到您已在服务器上设置Passenger。 Passenger是Apache(或Nginx)的一个模块,它取代了您在开发中使用的rails s命令。在这个乘客配置文件中,您需要设置RailsEnv <something>来确定应用程序启动和运行的方式和方式。

如果数据库服务器是相同的(例如两个平台上的MySQL)并且环境相同(例如“开发”),并且app/db/database.yml文件被选中到源代码管理中,则跳过。

如果您的数据库和环境不同(例如开发中的SQLLite和生产中的MySQL),那么您需要为数据库中的环境添加必要的配置 - 数据库名称,主机,端口,用户名和密码。 yml(并根据环境在Gemfile中指定适当的数据库宝石)。如果您要存储密码,我不推荐检查database.yml文件,但这是一个单独的主题。最后,您需要在服务器上的database.yml中拥有正确的数据库配置。

然后,您可以从应用程序的根目录在服务器上运行bundle exec rake db:setup。这将使用当前模式初始化数据库,并运行所需的所有seeds.rb设置。请与rake -T联系以查看您可能考虑的其他选项。

完成后,后续部署需要您从SVN中检出最新的代码,并且通常重新启动应用程序(使用Passenger,这是通过应用程序的根目录下的命令touch tmp/restart.txt完成的)如果您更改了数据库结构,在重新启动之前运行bundle exec rake db:migrate

哦,是的,在生产环境中,如果您使用的是默认环境,那么您还需要在第一次运行bundle exec rake assets:precompile,并且以后每次如果添加了映像,改变了javascript/coffeescript或css/sass文件。

说了这话,@rwilliams评论Capistrano是d无限期地你想要考虑的事情。正如你所看到的那样,部署是棘手的,随着你的应用变得更大,你会希望它变得简单。 Capistrano允许您设置一个脚本,使部署命令如cap deploycap staging deploy:migrations。学习很多,但值得努力。

相关问题