0

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プロジェクトをアップロードしようとするのは初めてで、リモートサーバーのlocalhostで行うのと同じことをしているため、どうすればよいかわかりません。

ところで、ssh 接続を介して rails s も実行する必要がありますか?

4

1 に答える 1

1

更新: 最初に行うことは、デプロイに関する教育を受けることです: Rails サイトでここから始めてください

つまり、ローカル マシンの場合と同様に、サーバー上にデータベースをセットアップする必要があります。SVN からコードをチェックアウトすると、データベースではなく、アプリケーションのみが取得されます。

タイトルで、サーバーに Passenger をセットアップしていると述べています。rails sPassenger は、開発で使用しているコマンドを置き換える Apache (または Nginx) のモジュールです。RailsEnv <something>アプリが何をどのように開始および実行するかを決定するために設定する必要があるのは、このパッセンジャー構成ファイルです。

データベース サーバーが同じであり (両方のプラットフォームの MySQL など)、環境も同じ (「開発」など) で、app/db/database.ymlファイルがソース管理にチェックインされている場合は、スキップしてください。

データベースと環境が異なる場合 (開発中の SQLLite と本番環境の MySQL など) は、必要な構成を追加する必要があります -- データベース名、ホスト、ポート、ユーザー名、環境のパスワードを database.yml に追加します (そして指定します)。環境に基づいて、Gemfile 内の適切なデータベース gem)。パスワードを保存している場合、database.yml ファイルをチェックインすることはお勧めしませんが、それは別のトピックです。最後に、サーバーの database.yml に適切なデータベース構成が必要です。

bundle exec rake db:setupその後、アプリのルート ディレクトリからサーバー上で実行できます。これにより、現在のスキーマでデータベースが初期化され、必要なシード.rb セットアップが実行されます。をチェックしrake -Tて、検討できる他のオプションを確認してください。

Once that's done, subsequent deployments require that you check out your latest code from SVN, and usually restart the app (with Passenger, this is done with the command touch tmp/restart.txt from the app's root directory. If you have made changes to the database structure, before restarting, run bundle exec rake db:migrate

Oh, yeah, in production, if you're using the default environment, you'll also need to run bundle exec rake assets:precompile the first time, and every time afterwards if you have added images, changed javascript/coffeescript or css/sass files.

そうは言っても、カピストラーノに関する@rwilliamsのコメントは、間違いなくあなたが考えたいものです。ご覧のとおり、デプロイはトリッキーです。アプリが大きくなるにつれて、シンプルにしたくなるでしょう。cap deployCapistrano を使用すると、や などのコマンドをデプロイするスクリプトをセットアップできますcap staging deploy:migrations。学ぶことはたくさんありますが、努力する価値はあります。

于 2012-11-29T18:04:19.097 に答える