「ruby/サンプル/環境構築(Windows+ruby+apache2)」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
[[環境構築(Windows+rubyインストール)>ruby/サンプル/環境構築(Windows+rubyインストール)]]の続きです。
* 環境構築(Windows7+ruby+apache2)
* .....(apache2のインストールからサンプルCGIの表示まで)
@pagesでrubyのCGIを入れて遊ぶために、ローカルに開発環境を作ってみたいと思います。
ruby製サーバを使ったほうが楽ちんと聞きますが、ここは折角だからApache2を入れてみようと思います。
*前提条件
* Apache2のインストール
Apachのサイトから「httpd-2.2.22-win32-x86-openssl-0.9.8t.msi」をダウンロードし実行します。
Index of /mirror/apache/dist//httpd/binaries/win32
http://ftp.meisei-u.ac.jp/mirror/apache/dist//httpd/binaries/win32/
途中の設定はこんな感じ。
&ref(環境構築1.png)
ローカルで開発するだけなら、localhost/localhost/ほにゃらら@localhostで十分です。
&ref(環境構築2.png)
難しいことはよくわからないので標準(typical)でインストールします。
&ref(環境構築3.png)
「program files」の配下だとセキュリティダイアログがよく出るので「C:\apache2」にインストールします。
インストールが完了するとApache2が起動してるので、「http://localhost/」にアクセスするとなんか出て来ました。
&ref(環境構築4.png)
* スクリプト設置
今回インストールしたApache2.2.22は標準でインストールディレクトリの中の
「cgi-bin」ディレクトリにcgiファイルを配置するだけで実行できます。
今回は「C:\apache2\cgi-bin」です。
* サンプルスクリプト(hello.cgi)
#highlight(ruby){{
#!/ruby/bin/ruby
print "Content-type: text/html\n\n"
puts(<<"html")
<html>
Hello ruby!!
</html>
html
}}
- ポイント! Windowsの場合、改行コードはCR+LFにしましょう!LFだとApache2が一行目のスクリプト名を認識できません。
* 改行コードをLFにした場合のエラーログ(C:\apache2\logs\error.log)
#highlight(){{
[Thu Nov 08 02:58:14 2012] [error] [client 127.0.0.1] (OS 2)指定されたファイルが見つかりません。 : couldn't create child process: 720002: hello.cgi
[Thu Nov 08 02:58:14 2012] [error] [client 127.0.0.1] (OS 2)指定されたファイルが見つかりません。 : couldn't spawn child process: C:/apache2/cgi-bin/hello.cgi
}}
* CGIの動作確認
「http://localhost/cgi-bin/hello.cgi」にアクセスして「Hello ruby!!」が表示されれば成功です。
&ref(環境構築5.png)
スクリプトがおかしい場合は、以下のような画面になります。
&ref(環境構築6.png)
* サンプルスクリプト解説
#highlight(){{#!/ruby/bin/ruby}}
これはLinuxではお約束の記述で、一行目のコメントにこのスクリプトを処理して欲しいプログラムを指定します。
今回のは、「C:\ruby\bin\ruby.exe」にこのスクリプトを処理して貰おうとしています。
#highlight(){{print "Content-type: text/html\n\n"}}
これはHttpレスポンスヘッダの一つ「Content-type」の指定で、「これから出力するコンテンツはhtmlです」と宣言しています。
最初にヘッダとして出力したい内容を出力することで、Apacheなどのサーバプログラムが
「これをヘッダに埋め込めばいいんだね」と理解してくれるCGIスクリプトの便利なオマジナイなのです。
#highlight(){{
puts(<<"html")
<html>
Hello ruby!!
</html>
html
}}
この記述は、rubyの複数行文字列の書き方で、<<"hogehoge"から始まり、hogehogeで終わる所までを複数行の文字列としてくれるのです。
この記述を活用すると、htmlの出力も簡単に記述出来るのです。
※複数行文字列を使わない場合はこんな事に
#highlight(){{
puts "<html>"
puts " Hello ruby!!"
puts "</html>"
html
}}
今回は3行しかないので全てputsで出力しても問題ありませんが、もっと行数が増えると大変です。
サンプルスクリプトの解説は後で別のページに移動しよう…
[[環境構築(Windows+ruby+apache2)その2>ruby/サンプル/環境構築(Windows+ruby+apache2)その2]]に続きます。
[[環境構築(Windows+rubyインストール)>ruby/サンプル/環境構築(Windows+rubyインストール)]]の続きです。
* 環境構築(Windows7+ruby+apache2)
* .....(apache2のインストールからサンプルCGIの表示まで)
@pagesでrubyのCGIを入れて遊ぶために、ローカルに開発環境を作ってみたいと思います。
ruby製サーバを使ったほうが楽ちんと聞きますが、ここは折角だからApache2を入れてみようと思います。
* Apache2のインストール
Apachのサイトから「httpd-2.2.22-win32-x86-openssl-0.9.8t.msi」をダウンロードし実行します。
Index of /mirror/apache/dist//httpd/binaries/win32
http://ftp.meisei-u.ac.jp/mirror/apache/dist//httpd/binaries/win32/
途中の設定はこんな感じ。
&ref(環境構築1.png)
ローカルで開発するだけなら、localhost/localhost/ほにゃらら@localhostで十分です。
&ref(環境構築2.png)
難しいことはよくわからないので標準(typical)でインストールします。
&ref(環境構築3.png)
「program files」の配下だとセキュリティダイアログがよく出るので「C:\apache2」にインストールします。
インストールが完了するとApache2が起動してるので、「http://localhost/」にアクセスするとなんか出て来ました。
&ref(環境構築4.png)
* スクリプト設置
今回インストールしたApache2.2.22は標準でインストールディレクトリの中の
「cgi-bin」ディレクトリにcgiファイルを配置するだけで実行できます。
今回は「C:\apache2\cgi-bin」です。
* サンプルスクリプト(hello.cgi)
#highlight(ruby){{
#!/ruby/bin/ruby
print "Content-type: text/html\n\n"
puts(<<"html")
<html>
Hello ruby!!
</html>
html
}}
- ポイント! Windowsの場合、改行コードはCR+LFにしましょう!LFだとApache2が一行目のスクリプト名を認識できません。
* 改行コードをLFにした場合のエラーログ(C:\apache2\logs\error.log)
#highlight(){{
[Thu Nov 08 02:58:14 2012] [error] [client 127.0.0.1] (OS 2)指定されたファイルが見つかりません。 : couldn't create child process: 720002: hello.cgi
[Thu Nov 08 02:58:14 2012] [error] [client 127.0.0.1] (OS 2)指定されたファイルが見つかりません。 : couldn't spawn child process: C:/apache2/cgi-bin/hello.cgi
}}
* CGIの動作確認
「http://localhost/cgi-bin/hello.cgi」にアクセスして「Hello ruby!!」が表示されれば成功です。
&ref(環境構築5.png)
スクリプトがおかしい場合は、以下のような画面になります。
&ref(環境構築6.png)
* サンプルスクリプト解説
#highlight(){{#!/ruby/bin/ruby}}
これはLinuxではお約束の記述で、一行目のコメントにこのスクリプトを処理して欲しいプログラムを指定します。
今回のは、「C:\ruby\bin\ruby.exe」にこのスクリプトを処理して貰おうとしています。
#highlight(){{print "Content-type: text/html\n\n"}}
これはHttpレスポンスヘッダの一つ「Content-type」の指定で、「これから出力するコンテンツはhtmlです」と宣言しています。
最初にヘッダとして出力したい内容を出力することで、Apacheなどのサーバプログラムが
「これをヘッダに埋め込めばいいんだね」と理解してくれるCGIスクリプトの便利なオマジナイなのです。
#highlight(){{
puts(<<"html")
<html>
Hello ruby!!
</html>
html
}}
この記述は、rubyの複数行文字列の書き方で、<<"hogehoge"から始まり、hogehogeで終わる所までを複数行の文字列としてくれるのです。
この記述を活用すると、htmlの出力も簡単に記述出来るのです。
※複数行文字列を使わない場合はこんな事に
#highlight(){{
puts "<html>"
puts " Hello ruby!!"
puts "</html>"
html
}}
今回は3行しかないので全てputsで出力しても問題ありませんが、もっと行数が増えると大変です。
サンプルスクリプトの解説は後で別のページに移動しよう…
[[環境構築(Windows+ruby+apache2)その2>ruby/サンプル/環境構築(Windows+ruby+apache2)その2]]に続きます。