どうもこんにちは、昨日に引き続き、構築したwebサーバーでperlのCGIを動かしていこうと思います。
CGIは古いという声も聞こえますが気にしないで書いていこうと思います。
今回は最後に謎な部分を見つけたのでそれについて謎のまま終わらせようと思います。誰か知っている人がいたら助けてください。
ちなみにサーバーの構築は以前の記事で作ったものを使用しています。
tkymx83.hatenablog.com
はじめに
CGIを起動する場合は、httpdの設定でCGIを起動できるようにするようです。今回はその設定方法と実際にできたページと注意事項を簡単に説明していきます。
ちなみにサーバーは仮想環境上のCentOS6.9です。順番は以下のようになります。
[CentOS] httpd.confの設定
以下のサイト参考にしました
http://mizushima.ne.jp/Windows/HTTP/Apache/Apache-perl.php
まず、centosにrootではいり、vimで設定ファイルを開きます
vim /etc/httpd/conf/httpd.conf
そして、581行目付近のDirectoryの設定のOptionを以下のように変更します。
<Directory "/var/www/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory>
Options ExecCGIとすることで指定したディレクトリでCGIが使えるようになるそうです。既存の設定を引き継ぎたい場合は+をつけてください。
次に796行目付近の#でコメントアウトされている文の#を外してください。そうすると以下のようになると思います。
AddHandler cgi-script .cgi
[CentOS] perlファイル(CGI)の設置
デフォルトではcgiを入れるフォルダは以下のフォルダになっていると思います。
/var/www/cgi-bin/
ここにcgiファイルをいれましょう。サンプルを用意しておきます。
hello.cgi
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><body>"; print "<h2>hello wprld</h2>"; print "</body></html>"; exit;
[Mac] CGIの表示
次は実行です。service httpd start でサーバーを起動してmacのブラウザで以下のurlを打ってみましょう。
localhost:8888/cgi-bin/hello.cgi
以上成功すると hello wprldとだけ表示されると思います。
これは、perlのコードが実行された出力結果をhtmlファイルとして取得しているということになります。
ちなみに
print "Content-type: text/html\n\n";
をつけないとブラウザがhtmlファイルと認識しないので文字だけ出力されてしまいますよ〜。
おわりにと謎
今までの説明で"になるようです。"みたいな、曖昧な喋りからに築いた人入るでしょうか?
なぜこんな喋り方をしているかというと、僕の環境では "[CentOS] httpd.confの設定"を行わなくてもなぜか、cgiが実行できてしまったからです。
なぜ。。。。
予想としては、もっと大元の設定でExecCGIやAddHandlerがセットされているからなのかと思います。。。
確信がついたらまら更新するのでこれからもよろしくお願いします。