私は、localhost テスト (sqlite または ruby mysql2 gem の両方を使用) で動作する単純な Ruby on Rails アプリケーションを持っています。アプリをオンラインにアップロードする準備ができている Web サーバーがあります。新しい mysql データベースを作成する必要があることは理解していますが、これは問題ではなく、database.yml に接続情報を追加することは明らかですが、サイトのパブリック ディレクトリに全体 (アプリ ルート) を適切にアップロードするにはどうすればよいですか?
3 に答える
Rails 自体には、デプロイを開始するためのリンクがいくつか含まれています。私は少し前にあなたのボートに乗っていて、30分以内にPassengerとApacheを使い始めました(ただし、Apacheの軽い経験はありました)。
自分にできることを証明するためだけに始めましょう
良いアイデアというわけではありませんが、「展開」する最も簡単な方法は次のとおりです (既にアプリケーションを展開環境にプルし、データベースを作成し、実行rake db:migrate
し、次のようなアプリケーション固有の手順を実行していると仮定しますbundle install
) 。レール 3):
rails server -p 80
Rails 3./script/server -p 80
上 (Rails 2 上)。- ステップ2はありません。
これは、管理者権限があり、ポート 80 が別のアプリケーションによってリッスンされていないマシンで実行する必要があります。これは多くの点で最適ではありません。最も明らかなのは、仮想ホスティングが許可されないことです (つまり、そのサーバーから実行されている他の「Web サイト」とは連携しません)。足を入れます。
マシンの FQDN、または実際には (hosts ファイルまたは A レコードを介して) マシンの IP アドレスに解決される任意のホスト名に移動すると、アプリケーションが表示されます。
今は適当にやって
アプリケーションを「高速化」するには、次のことを行う必要があります。
- Apache などの Web サーバー アプリケーションの背後にある仮想ホストの背後にデプロイする
- 実稼働指向の展開設定を使用します (WEBrick のシングル スレッド化などの要因により、実稼働には不向きです)。
- 「本番」のレール環境を実際に使ってみる
非常に典型的な Apache/Passenger 展開環境をお勧めします。その理由は (少なくとも私にはそう思われます)、この特定のスタックがインターネット全体で最も完全にサポートされているためです。
1.Apache をセットアップする
ツールのように聞こえたくはありませんが、Apache のセットアップ (デプロイメント環境にまだセットアップされていない場合) は、読者の演習として残されています。また、プラットフォーム間で大きく異なるため、包括的なガイドを書くことはできませんでした. 大まかに言うと、ディストリビューションのパッケージ マネージャー (Ubuntu の場合、これはapt-get
) を使用して接続します。
2.パッセンジャーの設定
パッセンジャーの取り付けはさらに簡単です。コマンドを 1 つ実行するだけで、ガイドがすべての手順を実行します。この時点で、Rails アプリケーション ルートで、Passenger に WEBrick がかつて行っていた役割を果たさせるpassenger start
代わりに、実行できるようになります。rails s
3. Passenger を Apache に接続する
Passenger ガイドでは、すべての設定方法を段階的に詳しく説明しています。ServerName
Apache の VirtualHost エントリの属性は、ホスト名に設定する必要があります。Passenger は、Apache に指定したパブリック ディレクトリから Rails アプリケーションを「検索」し、Apache を再起動すると、サーバーがページの要求を初めて取得したときに、Passenger は Rails アプリケーションを接続してファイルの提供を開始します。
このガイドを書いているときはこれらの手順を実行していないため、これがどの程度自動的に行われるかはわかりませんが、サイトが有効になっていることを確認してa2ensite
ください (このVirtualHost
ノードを配置する場合)ディレクトリ) を介してsites-available
Passenger が有効になっていることを確認しa2enmod
ます。
- 運用環境の準備ができていることを確認する 運用環境を使用するのはおそらくこれが初めてです。ほとんどの rake タスクは本番環境で自動的に動作しませんが
RAILS_ENV=production
、任意の rake タスクにインラインで含めることで便利に強制できます。実行する可能性が非常に高いのはrake db:migrate RAILS_ENV=production
. Rails 3 のバンドラーは環境に依存せずに動作します。
5.行く
アパッチを再起動します。これを行う方法の詳細はディストリビューションによって異なるため、調べる必要があります。Ubuntuのapache2ctl restart
場合、私のためにそれを行います。
で定義したホスト名にアクセスするServerName
と、アプリケーションが起動して実行されていることがわかります。
capistrano のような宝石がこれを支援できると聞いたことがあります。
Heroku は優れた (無料の) オプションです: http://docs.heroku.com/quickstart
また、Heroku へのデプロイは非常に簡単です。