NO IMAGE

perl が動くことを確認

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追記

上記リンクで説明されている設定の他に、以下の設定ファイルをエディタで開き、

$ sudo vi /etc/apache2/sites-available/default

ハイライト部分のディレクトリ名を変更したら、保存して、

<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サーバを再起動する必要があります。

$ sudo service apache2 restart

まずは、Windows機の秀丸エディタ(※)で、以下の内容で index.cgi ファイルを作成

#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print “<HTML><BODY>\n”;
print “<H2>Hello! WORLD</H2>\n”;
print “</BODY></HTML>\n”;
exit;

作成したファイルをFTPでサーバーにアップロードします。
(もちろん、パーミッションを755あたりに変更し、実行権を付加。)

20130316aブラウザで、http://192.168.1.14/cgi-bin/index.cgi を表示してみます。perl が動いていれば、正常に表示されるはずです。

・・・が、なぜかエラーメッセージが・・・。


Tera Term でサーバーにログインし、エラーログを参照すると、

$ cat /var/log/apache2/error.log
・・・No such file or directory: exec of ‘/var/www/satoh/public_html/cgi-bin/index.cgi’ failed

コマンドラインで実行しても

$ /var/www/satoh/public_html/cgi-bin/index.cgi
-bash: /var/www/satoh/public_html/cgi-bin/index.cgi: /usr/bin/perl^M: bad interpreter: No such file or directory

同様のエラーでした。

このエラーメッセージを元に、ネットで検索して、なんとか原因がわかりました。

20130316bテキストエディタで、index.cgi を保存する際に、改行コードがCR+LFで保存されていると、このようなエラーとなるようです。

秀丸エディタ(※)の下部の「日本語(Shift-JIS)」となっているボタン(現在選択している文字コードのボタン)を押すと、リストの下の方に「改行=CR+LF」が選択状態になっています。

リストから「改行=LF」を選択して、ファイルを上書き保存します。

保存したファイルを、再度FTPを使いサーバーへアップロードします。


Tera Termで、再度、実行すると

$ /var/www/satoh/public_html/cgi-bin/index.cgi
Content-type: text/html<HTML><BODY>
<H2>Hello! WORLD</H2>
</BODY></HTML>

こんどはエラーではなく、テキストの内容が表示されました!



20130316cブラウザでも正常に表示されました!!

・・・CGIファイルの保存時には気をつけないといけませんね。

・・・これで、ローカル・サーバー環境で、CGIの確認ができそうです。

・・・プロバイダに迷惑をかけないCGIであることをローカル環境で充分確認してから、本番サーバーにアップロードすることができる訳ですね~。・・・いまさらかよ・・・(^^;

※秀丸エディタは、試用期間30日間(機能制限なし)のシェアウェアで、現在、税込み4200円です。
■秀まるおのホームページ(サイトー企画)-秀丸エディタ

次の記事へ続きます。