スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

CGIが動かなねー。500 Internal Server Errorって何だ!?

ここまで順調すぎるくらいに、進めてきた自宅サーバですが、ここへきて大ハマりです。
一応、前回まででWebページは見れるようになっていたのですが、

情報発信は自宅から!低予算自宅サーバ奮闘メモ 無料ドメインを取得してみる

CGIが動いてくれません。
動かない手順は次の通りです。

Windowsマシンより、秀丸で、以下の簡単なtest.cgiを作成。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
print "<title>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";


FTPで下記パスへアップロード。

/var/www/html



ブラウザで確認↓
500 Internal Server Error

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.



な、なぜ??

/etc/httpd/conf/httpd.confの設定は↓このサイトを参考にさせていただきました。
Webサーバー構築(Apache) - CentOSで自宅サーバー構築

まぁ、ネットで調べてみると同じようなトラブルに巻き込まれている人は多いようですが、すぐに解決しませんでした。以下にあるある解決方法を記載しておきます。


あるあるパターン1
CGIファイルの先頭に記載している、
#!/usr/local/bin/perl と指定した場所に perl がない。

ここに関しては、端末より下記コマンドで確認できます。

whereis perl


何十回も確認しましたが、正しいパスでした。

あるあるパターン2
/etc/httpd/conf/httpd.confの設定に不備がある。
CGIを動かすには、上記ファイルを正しく設定してやる必要があります。上記のサイトの設定を忠実に守れば問題はありません。何回も見直しましたが、漏れや間違いはありませんでした。

あるあるパターン3
パーミッションの変更忘れ。
アップロードしたCGIファイルのパーミッションを以下の変更してやらなければなりません。

chmod 755 /var/www/html/test.cgi


何回かに1回忘れてました。

あるあるパターン4
CGIスクリプトファイルの改行コードがCR+LFになっている。
これは、Windows上の秀丸でCGIファイルを作成したときに、やりがちなミスで私もこのミスをやってました。コレだ!と思って秀丸で保存するときに、改行をLFにしてやればOKなのですが、それでも解決しませんでした・・・。

このパターン4には、もう一つあり、FTPクライアントでLinuxにファイルを転送する際にアスキーモードで送る必要があるそうです。ここも、FTPクライアントがアスキーモードになっていることを確認して転送しましたが、解決しませんでした・・・。

で、結局何が原因だったかというと、FTPサーバがアスキーモードになっておらず、サーバがバイナリモードで受け取っていたために、CGIが正しく実行されてなかったようです。わかるか!!そんな設定!!

ネットには、同じように苦しんだ方がいらっしゃったようで、おかげさまで解決できました。
具体的に申しますと、
CentOSのFTPサーバは、vsftpdです。このアプリの設定は/etc/vsftpd/vsftpd.confという場所に格納されており、このファイルはデフォルトで、アスキーモードが無効になっているようです。

#ascii_upload_enable=YES
#ascii_download_enable=YES



上記「#」をはずして、

ascii_upload_enable=YES
ascii_download_enable=YES



アスキーモードを有効にしてやり、vsftpdを再起動し、Windowsから再度転送してやれば、
うまくいきました↓
成功例


また、CGIのエラーが発生している場合、

/etc/httpd/logs


にある「error_log」ファイルにエラー内容を記載されているので、解決のヒントになるかもしれません。
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

承認待ちコメント

このコメントは管理者の承認待ちです
プロフィール

白鯖

Author:白鯖
安い寄せ集めの部品で構築し、CentOS5をインストールしました。主に、Webサーバ、アプリケーションサーバとして運用中。ハードの知識はあまり無いプログラマですが、全部自前で作るのは、手間はかかるけど、レン鯖より面白いです。

ハードウェア構成

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
Max TDP控え目なCPU
安くて静音なクーラー
検索フォーム
ユーザータグ
RSSフィード
はてな
スポンサード リンク
おすすめ書籍
twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。