gpt4 book ai didi

java - Rails 将 Rails 应用程序上传到 Passenger 服务器

转载 作者:行者123 更新时间:2023-12-01 15:01:09 24 4
gpt4 key购买 nike

我已将 Rails 应用程序从 svn 存储库上传到我的服务器。在我的本地主机中,它工作正常,但是当我尝试通过 Chrome 访问时,出现以下错误:

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.

我不知道该怎么做,因为这是我第一次尝试上传 Rails 项目,并且我正在远程服务器的本地主机中执行相同的操作。

顺便问一下,我也应该通过 ssh 连接运行 Rails 吗?

最佳答案

更新:要做的第一件事是接受部署方面的教育:start here on the Rails site .

所以问题是,在您的服务器上您需要设置一个数据库,就像在本地计算机上一样。从 SVN 检查代码只能得到应用程序,而不能得到数据库。

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

如果数据库服务器相同(例如两个平台上的 MySQL)并且环境相同(例如“开发”),并且如果 app/db/database.yml文件已 checkin 源代码管理,然后向前跳。

如果您的数据库和环境不同(例如开发中的 SQLLite 和生产中的 MySQL),那么您需要在 database.yml 中添加必要的配置 - 数据库名称、主机、端口、用户名、环境密码(并根据环境在 Gemfile 中指定正确的数据库 gem)。如果您要存储密码,我不建议检查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 的评论绝对是您想要考虑的事情。正如您所看到的,部署是很棘手的,并且随着您的应用程序变得越来越大,您会希望它变得简单。 Capistrano 允许您设置一个脚本,使部署成为像 cap deploy 这样的命令。或cap staging deploy:migrations 。有很多东西需要学习,但值得付出努力。

关于java - Rails 将 Rails 应用程序上传到 Passenger 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13630181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com