InstantRailsは以前簡単に使ったことがあったけれど、ネットワークに接続されていないスタンドアロンPCで、きちんとドメインを割り当ててあたかもネットワーク上にあるかのようにアプリケーションを動かす設定にまではやっていなかった。
今日デモをやろうと思ってLinuxからInstantRailsへ簡単に移行してみたので、その時のメモを残しておく。
これで、Apache+Rails+MySQLなWebアプリをやる上でフルスタックの環境がインストールされます。
そして開かれたファイルの末尾に以下の2行を追記します。
IP 127.0.0.1はlocalhostを指し示しています。
これはWebサーバで、ブラウザが接続しにくるものです。
ただし、単一の127.0.0.1というIPでapacheが立ち上がっているだけなので、ブラウザから接続されただけですとそれ自体が、example-1.comとして機能すべきなのか、example-2.netとして機能すべきなのかは判定できません。
そこで、HTTP/1.1以降をサポートするブラウザは大抵HostというHTTPヘッダに、ドメイン名を付与するようになっています。
apacheはその値を見るようになっており、内部で設定を使い分けます。
これがVirtualHostと呼ばれるものです。
一つのapacheで複数のドメインを使い分け、あたかも複数種類のドメインをカバーしているかのように振舞わせることができます。
InstantRailsのアイコンを右クリックし、Configure -> apacheというメニュー項目を選択してください。
そして開かれたファイルの末尾に以下を追記します。
またしてもInstantRailsのアイコンを右クリックし、Rails Applications -> Manage Rails Applicationsというメニュー項目を選択してください。
すると新たにウインドウが開きます。
ディフォルトではcookbookとtypo-2.6.0が入っています。
起動したいアプリケーションにチェックボックスを付けて、Start with Mongrelボタンを押せば、Railsアプリケーションは起動します。
Rails Applicationは、それぞれ1つのサーバを起動しますので、複数チェックすればその数だけサーバが起動してしまいます。
サーバは同じポート番号で2つ起動することができません。
そこで、チェックを入れたRailsアプリケーションごとに、異なるポート番号を指定する必要があります。
ちなみに、apacheにはexample-1.comは、3010番ポートへ、example-2.netは、3011番ポートへ割り振るよう設定しましたので、Railsアプリケーションをそのポート番号にあわせてやります。
cookbookにのみチェックを入れて、Configure Startup Modeボタンを押します。
Portという欄があるので、3010と入力し、OKボタンを押します。
次に、typo-2.6.0にのみチェックを入れて、Configure Startup Modeボタンを押します。
Portには3011と入力し、OKボタンを押します。
そして、いよいよ起動です。
cookbookとtypo-2.6.0の両方にチェックを入れて、Start with Mongrelボタンを押してみてください。
うまく行くと、2つのコマンドプロンプトウインドウが出て、それぞれに以下のような出力が現れます。
http://example-2.net にアクセスすると、Signupと書かれたフォーム画面が出るはずです。
今日デモをやろうと思ってLinuxからInstantRailsへ簡単に移行してみたので、その時のメモを残しておく。
作りたい環境:
スタンドアロンPC1台の中に、以下の2つのURLでそれぞれアクセスできるRailsで作られたサイトを立ち上げるところまでです。- http://example-1.com/
- http://example-2.net/
1. InstantRailsをインストールする
「InstantRails で 簡単 Ruby on Rails 体験」の辺りを参考に、ひとまずお使いのWindowsマシンへインストールをしてみてください。これで、Apache+Rails+MySQLなWebアプリをやる上でフルスタックの環境がインストールされます。
2. hostsを書き換える
ご存知の方はエクスプローラで直接開いても良いと思いますが、ご存知ない方はタスクトレイにあるInstantRailsのアイコンを右クリックし、Configure -> Window's Hosts fileというメニュー項目を選択してください。そして開かれたファイルの末尾に以下の2行を追記します。
127.0.0.1 example-1.comこれでブラウザを含め、DNSに依存するアプリケーションはどちらのドメインも自分自身のPCにあるものとして認識するようになります。
127.0.0.1 example-2.net
IP 127.0.0.1はlocalhostを指し示しています。
3. apache(httpd.conf)を書き換える
InstantRailsをインストールした後のスタンドアロンPCには、apacheが起動しています。これはWebサーバで、ブラウザが接続しにくるものです。
ただし、単一の127.0.0.1というIPでapacheが立ち上がっているだけなので、ブラウザから接続されただけですとそれ自体が、example-1.comとして機能すべきなのか、example-2.netとして機能すべきなのかは判定できません。
そこで、HTTP/1.1以降をサポートするブラウザは大抵HostというHTTPヘッダに、ドメイン名を付与するようになっています。
apacheはその値を見るようになっており、内部で設定を使い分けます。
これがVirtualHostと呼ばれるものです。
一つのapacheで複数のドメインを使い分け、あたかも複数種類のドメインをカバーしているかのように振舞わせることができます。
InstantRailsのアイコンを右クリックし、Configure -> apacheというメニュー項目を選択してください。
そして開かれたファイルの末尾に以下を追記します。
<VirtualHost *>これで、apacheは指定されたドメインごとに、localhostの異なるポート番号へリクエストをプロキシするようになります。
ServerName example-1.com
RewriteEngine On
RewriteRule ^/(.*) http://localhost:3010/$1 [QSA,P,L]
ProxyPassReverse / http://localhost:3010
</VirtualHost>
<VirtualHost *>
ServerName example-2.net
RewriteEngine On
RewriteRule ^/(.*) http://localhost:3011/$1 [QSA,P,L]
ProxyPassReverse / http://localhost:3011
</VirtualHost>
4. Railsアプリケーションを起動する
またしてもInstantRailsのアイコンを右クリックし、Rails Applications -> Manage Rails Applicationsというメニュー項目を選択してください。
すると新たにウインドウが開きます。
ディフォルトではcookbookとtypo-2.6.0が入っています。
起動したいアプリケーションにチェックボックスを付けて、Start with Mongrelボタンを押せば、Railsアプリケーションは起動します。
Rails Applicationは、それぞれ1つのサーバを起動しますので、複数チェックすればその数だけサーバが起動してしまいます。
サーバは同じポート番号で2つ起動することができません。
そこで、チェックを入れたRailsアプリケーションごとに、異なるポート番号を指定する必要があります。
ちなみに、apacheにはexample-1.comは、3010番ポートへ、example-2.netは、3011番ポートへ割り振るよう設定しましたので、Railsアプリケーションをそのポート番号にあわせてやります。
cookbookにのみチェックを入れて、Configure Startup Modeボタンを押します。
Portという欄があるので、3010と入力し、OKボタンを押します。
次に、typo-2.6.0にのみチェックを入れて、Configure Startup Modeボタンを押します。
Portには3011と入力し、OKボタンを押します。
そして、いよいよ起動です。
cookbookとtypo-2.6.0の両方にチェックを入れて、Start with Mongrelボタンを押してみてください。
うまく行くと、2つのコマンドプロンプトウインドウが出て、それぞれに以下のような出力が現れます。
** Starting Mongrel listening at 0.0.0.0:3010
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. INT => stop (no restart).
** Mongrel available at 0.0.0.0:3010
** Use CTRL-C to stop.
5. アクセスして確認してみる。
http://example-1.com にアクセスすると、Cookbookらしき画面が出ます。http://example-2.net にアクセスすると、Signupと書かれたフォーム画面が出るはずです。
今、Rubyの勉強をはじめたところで、いろいろとサイトをみてましたら、ここに行き着きました。
大変参考になりました。
ありがとうございます。
ところで、私も独立して東京でWebプログラムしてます。
また、ブログを読ませていただきます。