Apache2でperlを使えるようにしたい為、以下のサイトを参考に設定しました。
■Ubuntu 12.04 LTS – WEBサーバー – Apache2 インストール/設定 : Server World
■Debian(Ubuntu) で PerlモジュールをインストールしたいときはCPANを使わなくても良い | レンタルサーバー・自宅サーバー設定・構築のヒント
CGIインタプリタ「perl」用のファイルを置くディレクトリは、/var/www/satoh/public_html/cgi-bin/ に設定しました。
2013/04/16追記
上記リンクで説明されている設定の他に、以下の設定ファイルをエディタで開き、
ハイライト部分のディレクトリ名を変更したら、保存して、
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/satoh/public_html/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/satoh/public_html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /var/www/satoh/public_html/cgi-bin/ <Directory "/var/www/satoh/public_html/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Webサーバを再起動する必要があります。
まずは、Windows機の秀丸エディタ(※)で、以下の内容で index.cgi ファイルを作成
print “Content-type: text/html\n\n”;
print “<HTML><BODY>\n”;
print “<H2>Hello! WORLD</H2>\n”;
print “</BODY></HTML>\n”;
exit;
作成したファイルをFTPでサーバーにアップロードします。
(もちろん、パーミッションを755あたりに変更し、実行権を付加。)
ブラウザで、http://192.168.1.14/cgi-bin/index.cgi を表示してみます。perl が動いていれば、正常に表示されるはずです。
・・・が、なぜかエラーメッセージが・・・。
Tera Term でサーバーにログインし、エラーログを参照すると、
・・・No such file or directory: exec of ‘/var/www/satoh/public_html/cgi-bin/index.cgi’ failed
コマンドラインで実行しても
-bash: /var/www/satoh/public_html/cgi-bin/index.cgi: /usr/bin/perl^M: bad interpreter: No such file or directory
同様のエラーでした。
このエラーメッセージを元に、ネットで検索して、なんとか原因がわかりました。
テキストエディタで、index.cgi を保存する際に、改行コードがCR+LFで保存されていると、このようなエラーとなるようです。
秀丸エディタ(※)の下部の「日本語(Shift-JIS)」となっているボタン(現在選択している文字コードのボタン)を押すと、リストの下の方に「改行=CR+LF」が選択状態になっています。
リストから「改行=LF」を選択して、ファイルを上書き保存します。
保存したファイルを、再度FTPを使いサーバーへアップロードします。
Tera Termで、再度、実行すると
Content-type: text/html<HTML><BODY>
<H2>Hello! WORLD</H2>
</BODY></HTML>
こんどはエラーではなく、テキストの内容が表示されました!
・・・CGIファイルの保存時には気をつけないといけませんね。
・・・これで、ローカル・サーバー環境で、CGIの確認ができそうです。
・・・プロバイダに迷惑をかけないCGIであることをローカル環境で充分確認してから、本番サーバーにアップロードすることができる訳ですね~。・・・いまさらかよ・・・(^^;
※秀丸エディタは、試用期間30日間(機能制限なし)のシェアウェアで、現在、税込み4200円です。
■秀まるおのホームページ(サイトー企画)-秀丸エディタ