Ubuntu 10.04 で HTTPサーバーをたてたなら CGI・PHPを動かそう
無料レンタルサーバーなどでは CGIの設置を禁止しているところがいかに多いことか
自宅サーバーなら 自分のやりたい放題に出来る 誰も咎めることもない
ということで CGIとPHPの設定をしていこう
Apache2上での CGIの設定
Ubuntuでは インストールした時点で もうすでに殆ど設定してあります
微調整だけでいいと思いそれ程変更はしてませんが
CGIスプリクトを置く場所の指定を変えるくらいで済みました
設置場所は特別ここに設置 とういことはなくどこでもいいです
自分の管理しやすいところでいいです
ぼくの場合 htmlファイルを管理すると同時に殆ど移動しないでCGIも管理出来るようにと
/var/www 内に設置しました
/var/www にcgi-binというディレクトリを設置
以下 記事はCGIスプリクトをここに置くと仮定します ご自分の環境に合せ書き直してください
はじめに CGIを置くディレクトリ作成
$ sudo mkdir /var/www/cgi-bin
設置場所変更の記述 apacheに/var/www/cgi-bin/ と書き換えます
書き換えるファイルは /etc/apache2/sites-available/default でOK
$ sudo gedit /etc/apache2/sites-available/default
ScriptAlias /cgi-bin/ /var/www/cgi-bin/ ←Aliasでcgi-binの場所を関連付ける
<Directory "/var/www/cgi-bin"> ←cgi-binのディレクトリの場所を書き換える
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch ←ExecCGIで CGIを許可
Order allow,deny
Allow from all
</Directory>
次に /etc/apache2/mods-enabled/mime.conf での設定
$ sudo gedit /etc/apache2/mods-enabled/mime.conf
#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl ←#を削除して .pl を追記
たったこれだけで Apacheの設定はOKです
Apache を再起動しましょう
$ sudo /etc/init.d/apache2 restart
CGIが動くか 確認してみよう
その前に cgi-bin ディレクトリの権限を 自分にします
$ sudo chown 自分の名前:グループ /var/www/cgi-bin
エディタ等で 以下のスプリクトを書いて 「 hello.cgi 」 として cgi-bin に保存
perlは /usr/bin/perl にあるので これからのCGIスクリプトはそれに合わせます
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
print "<H2>Hello! WORLD</H2>\n";
print "</BODY></HTML>\n";
exit;
ブラウザを開いて アクセスしてみよう
http://hogehoge.com/cgi-bin/hello.cgi
または http://localhost/cgi-bin/hello.cgi
下のように表示されれば成功です
Hello! WORLD
どうですか、表示されたでしょうか
もしエラーでしたら たぶん cgi-bin ディレクトリが開放されてないか
hello.cgi のパーミッションが 755 になっていないからだと思います
パーミッションを変更
$ sudo chmod 777 /var/www/cgi-bin
$ sudo chmod 755 /var/www/cgi-bin/hello.cgi
これで もう一度 アクセスしてみて下さい
今度は表示されるかと思います
これで CGIの設定は OKです
どうしても CGIが動かないのは
もしかして 転送法が間違えてるせいかもしれません
CGIの場合は 殆どが アスキーモードです
バイナリーモードになってるかと
CGIスクリプトを配布しているサイトに 転送法が書かれていると思います
何も書かれてなければ 画像以外はアスキーモードでよいと思います
CGIで使うのファイルはFTPで 転送するようにして
よく確認して行ってください。
PHPの動作確認
ぼくは今回は 特に設定を換えていません
そのままで 動作したので
すでに設定してあるかと思い
細かく設定もできますが
動作確認だけにしときました
また機会があったときにでも細かな設定法を
エディタ等で 以下の記述をして 「 info.php 」として
Apacheで設定した ドキュメントルートへ保存して下さい
<?php
phpinfo();
?>
保存しましたら ブラウザを開き アクセスしてみましょう
http://localhost/info.php
下の図のように 表示されれば 動いてます
表示されたでしょうか
項目にApache2とあるはず
あればリンクしているのでOKです
というか あるから表示されるのですけれど
これで PHPの動作確認を終わります。
それでは
お疲れ様です。。。