Apacheで動かすphp,python,ruby の Hello World まとめ

Apache上でphp,python,rubyをそれぞれちゃんとWEBアプリとして動かす時の手順をまとめてみた。
対象プラットフォームはCentOS5.*

Apacheの準備

以下ディレティブに以下の記述があることを確認
nなければ追加

DirectoryIndex index.php index.py index.rb
AddHandler cgi-script .cgi .pl .py .rb

ruby,pythonの場合は、動かしたいディレクトリへの設定として、以下のoptionsを記入

Options ExecCGI

Pythonの準備

CentOS系ならば既に入っているはず。なければ

yum install python python-devel

Rubyの準備

これも、CentOS系ならば既に入っているはず。

なければ

yum install ruby

最新版をインストールするには、ソースをコンパイルする。

とりあえず、一番簡単なのは、php

<?php
echo "hello world";

これをindex.phpで保存して、おしまい。

Python

pythonではCGIとして動いているので、以下のように表記

#!/usr/bin/python
# coding:utf-8
print "Content-Type: text/html\n";
print "Hello World!";

まず一行目でpythonのパスを指定。
次に、コーディングを指定。
次に、ヘッダーを出力し、ここでコンテントタイプを指定。
これがないと即エラーなので注意。

かつ、ヘッダーと本コードの間には一行の空行が必要。
printメソッドは強制的にひとつ改行を出力するので、文末に\nでもう一回改行すれば空行ができる。
そのあと、Hello Worldを出力

これをindex.pyで保存。
さらに、実行権限を与えるためパーミッション設定を755にする必要があります。
★これは、サーバーによって異なります。所有者をApacheにする必要があったり、色々です。
特にレンタルサーバーではそのレンタルサーバーの規定に従う必要があります。

chmode 755 index.py

これでWEBで閲覧できます。

Ruby

RubyCGIとして動いているので、以下のように表記

#!/usr/bin/ruby -Ku
# -*- coding: utf-8 -*-

print "Content-Type: text/html\n\n";
print "Hello World";

一行目はやはりrubyの場所をフルパスで示します。
その際、引数を渡しています。 -Ku とは、文字コードUTF-8で処理するようにとの意味です。
これがないと、日本語は文字化けします。

次にヘッダーです。コンテントタイプを指定します。
Rubyのprintメソッドは、強制改行を一つ入れないので、ここで二回\nを末尾に入れておきます。
そして、Hello Worldを出力します。

これを、index.rb で保存し、パーミッション設定を755に変更すれば、閲覧することができます。