[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
nginx でも動かしてみた。この記事は Apache2。
ゆとシート for SW2.5 のソースコードが公開されたのでとりあえずローカルで動かそうとしてみる。
今回は Windows Subsystem for Linux (Ubuntu) を使うが、他でも大して変わらないと思う。
とりあえず apache2 と perl を入れる。perl は最初から入っているかも。
$ sudo apt-get install apache2 perl
/etc/apache2/apache2.conf を編集し末尾に以下を書き足す。
AddHandler cgi-script .cgi .pl <Directory "/var/www/html/cgi-bin"> AllowOverride None Options ExecCGI Require all granted </Directory> LoadModule cgid_module modules/mod_cgid.so
これで apache2 を再起動する。
$ sudo service apache2 restart
が、私の環境では mod_cgid.so が見つからない旨が返ってきた。
/etc/apache2/modules/modd_cgi.so: cannot open shared object file: No such file or director
どうも /etc/apache2/modules ディレクトリが無いようだ。探してみると /usr/lib/apache2/modules に modd_cgi.so があったのでこちらにシンボリックリンクを張る。
$ cd /etc/apache2
$ ln -s /usr/lib/apache2/modules
これで再度再起動を試したら無事起動した。
以下のファイルを /var/www/html/cgi-bin に設置して動作を確認する。ファイルタイトルは test.cgi とする。
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><body>\n"; print "<h1>OK</h1>\n"; print "</body></html>\n"; exit;
Apache を起動し、ブラウザから http://localhost/cgi-bin/test.cgi にアクセスして OK と出力されれば成功。
エラー画面が返ってきたら /var/log/apache2/error.log とかを読みながら原因を探る。パーミッションがないとかはよくある原因。
ゆとシートをダウンロードしてくる。
$ cd /var/www/html
$ git clone https://github.com/yutorize/ytsheet_sw2.5.git
$ mv ytsheet_sw2.5 ytsheet
さらに /etc/apache2/apache2.conf に以下を書き足す。
<Directory "/var/www/html/ytsheet"> AllowOverride None Options ExecCGI Require all granted </Directory>
これで Apache2 を起動し http://localhost/ytsheet にアクセスしても動かない。500 エラーが返ってくる。
まず、素の perl で動くように頑張る。$ cd /var/www/html/ytsheet
$ perl index.cgi
これで動くようにする。
私の環境では以下のモジュールが見つからないといわれたので入れる。
画面左部に "Download" と書いてあるのを探し、リンク先の URL を確認する。その後は以下のように頑張る。
$ cd /tmp
$ wget (先に確認したダウンロードのための URL)
$ wget https://cpan.metacpan.org/authors/id/L/LE/LEEJO/CGI-4.38.tar.gz # これは例
$ zcat (wget でダウンロードしたファイル) | tar xvf -
$ zcat CGI-4.38.tar.gz | tar xvf - # これは例
$ cd (解凍時にできたディレクトリ)
$ cd CGI-4.38 # これは例
$ perl Makefile.PL
$ make && make install
上述の事をしたうえでアクセスしても500が返ってくる。 /var/log/apache2/error.log を見ると以下の記述だ。No such file or directory とは不可解である。
[Sun Aug 12 14:26:07.827622 2018] [cgid:error] [pid 422:tid 140025635080064] (2)No such file or directory: AH01241: exec of '/var/www/html/ytsheet/index.cgi' failed [Sun Aug 12 14:26:07.828287 2018] [cgid:error] [pid 279:tid 140025336432384] [client ::1:52533] End of script output before headers: index.cgi
どうも見つからないのはファイルではなく perl らしい。 index.cgi の先頭を見ると次のようにある。
/var/www/html/ytsheet$ head index.cgi #!/usr/local/bin/perl #################################### ## ゆとシート for SW2.5 ## ## version0.01 ## ## by ゆとらいず工房 ## ## http://yutorize.2-d.jp ## #################################### use strict; use warnings; use utf8;
しかし、私の環境で perl はどこにあるかというと
$ which perl
/usr/bin/perl
スクリプトが指定している場所に perl がないのである。なので /usr/local/bin から /usr/bin/perl へのシンボリックリンクをつけてやる。そのうえで再度動作を試すと…… config.cgi が見つからない、というエラーメッセージが得られて動かない。
先にダウンロードしたゆとシートのディレクトリ内に config.cgi.default
というファイルがあるのでこれを config.cgi
にリネームする。中身はサラッと確認していじりたければいじること。
これで多分動くはず。
ただいまコメントを受けつけておりません。