Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. Mojolicious

さくらのレンタルサーバーで「505 Internal Server」エラーが発生する場合の対処方法

Mojoliciousのアプリケーションがローカル環境では実行できるけれど、レンタルサーバーにアップロードしてCGIとして動かそうとしたときに動かないということはよくあります。以下の原因が考えられるので順番に対処しましょう。

404 Not Foundが表示される

URLが間違っています。正しいURLをブラウザに入力しましょう。

スクリプトの内容が表示される

拡張子が「.cgi」以外になっていませんか。「.cgi」という拡張子がないとCGIスクリプトとして実行されません。

モジュールのロードができていない

ローカルの環境には、CPANモジュールが存在するのに、サーバー上には存在していないということがあります。以下の記述をスクリプトの先頭に追加すると、読み込みに失敗した場合のエラー内容が表示されます。

use CGI::Carp 'fatalsToBrowser';

改行コードの変換ミス

Windowsからレンタルサーバにアプリケーションをアップロードする場合は、改行コードを変換する必要があります。ASCIIモードで転送を行っているかを確認しましょう。app.cgiのみASCIIモードで転送されていればよいです。他のスクリプトについては、どちらのモードであってもかまいません。

CGIスクリプトに実行権限がない

CGIスクリプトに実行権限がない場合はエラーになります。CGIスクリプトの実行権限が755になっているかを確認しましょう(suEXEC環境の場合。さくらレンタルサーバーはsuEXEC環境)。app.cgiの権限だけ変える必要があり、その他のファイルについては大丈夫です。

一行目のPerlのパスの間違い

一行目のPerlのパスが間違っているとエラーになります。

#!/usr/bin/perl
  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。