Carpe Diem

備忘録。https://github.com/jun06t

BBSの設置

今回は改行コード、.cgiや.cssや.gifファイルの扱いで時間がかかりました。 使用したのはこちらの掲示板 WEB PATIO ダウンロード後の僕の経過及び対処を述べていきます。 ①ダウンロードしてチュートリアル通りに設定を編集し、cgi-binで動くか確かめる。 Perlの位置を#!/usr/local/bin/perl#!/usr/bin/perlに変更し、パーティションを変えます。 check.cgiを開こうとすると、ここで500エラーを食らいます。 原因は改行コードのせい。どうやらWindowsUnixでは改行コードが違うようで、それを修正しないと使えないようです。このプログラムはWindowsようであり、また転送ソフトを用いれば自動で改行コードを修正してくれるのですが、僕の場合Ubuntuサーバで直接使っているので手作業で編集します。 それぞれcgiファイルを開いて、C-x,RET,fをすると文字コード編集がミニバッファにて出来ます。 そこでsjis-unixと打ち込んで改行コードをunix対応にします。 これで一応500エラーはなくなりました。なぜかadmin.cgiは500エラーですが。。まぁ後で修正しよう。 ソース: 文字コード(改行コード)の切り替え gif画像が表示されない。image magick偏 チュートリアル通りcheck.cgiを動かすとimage magickでエラーを食らいました。 perl用のimage magickがインストールされてないようなのでインストール。 $ sudo apt-get install perlmagick ソース: PerlMagickのインストール gif画像が表示されない。Exec format error 500エラーはなくなったものの、サンプルページの用に表示されない。エラーログを見るとPermission denied: exec ofExec format error: exec ofgifファイルに対して起きている。 どうやらこれcgi設定との競合?みたいなものらしい。cgi-binフォルダは/etc/apache2/site-available/のdefault-sslを見るとScriptAliasで設定してあるけど、これはファイルが全てスクリプトとして認識されてgifが使えなくなるらしい。 対処法は AddHandler image/gif .gif を加えればOK。 後から分かったんですが、このpatio、CSSも使用しているので AddHandler text/css .css とかまぁ色々必要でした。ScriptAliasの例は次に乗せます。 ソース: 「Exec format error:exec of xxxxxx/xxx.gif failed」エラーで画像表示されない cgi-bin配下にあるYukiWikiのスタイルシートの適応や画像の表示ができない シンボリックリンクで表示ができない cgi-binフォルダを公開しっぱなしは嫌なので今まで通りシンボリックリンクで行こうと考えましたが、どうやらScriptAliasではシンボリックリンクでの.cgiは機能しないみたい。他の拡張子は大丈夫みたいだけど。 なのでまぁ/var/www/に直接patio/フォルダをmvして、/etc/apache2/site-available/のdefault-ssl         ScriptAlias /BBS/ /var/www/patio/          <Directory "/var/www/patio">                 SSLRequireSSL                 Options FollowSymLinks MultiViews +ExecCGI                 AddHandler cgi-script .cgi .pl                 AddHandler application/x-shockwave-flash .swf                 AddHandler image/gif .gif                 AddHandler image/jpeg .jpeg .jpg .jpe                 AddHandler image/png .png                 AddHandler text/html .html .htm .shtml                 AddHandler text/css .css                 Order deny,allow                 allow from all          </Directory> と記述。apacheを再起動してちゃんとサンプルページ通りに動くのを確認。 追記:シンボリックリンクでもいけました。単に設定がおかしかっただけでした。 後はadmin.cgiがちゃんと動けばいいんだけど・・・なぜだ。 $ perl -wc admin.cgi ではちゃんとSyntaxOKとなる。うーん。 追記:できました。admin.cgiだけperlの場所が#!/usr/local/bin/perlのままでした。 参考: CGIが動かない時は CGI による動的コンテンツ