ウェブアプリ実行環境 < 自宅 ubuntu にウェブアプリ(php、perl)の実行環境をつくる
081107
◆
1.必要なソフト(or パッケージ)
ア)apache2 (synapticから)
イ)php5 (synapticから)
ウ)php5-sqlite (synapticから)
ウ)php5-mysql (synapticから)
エ)mysql-client (synapticから ※1)
オ)mysql-server (synapticから ※1)
カ)perl5 (synapticから。ubuntu8.04ではインストール済みのはず)
キ)DBI (CPANから ※2)
ケ)DBD::SQLite2 (CPANから ※2)
コ)DBD::MySQL (CPANから ※2)
※1 ・インストールの途中で、root のパスワードを求められるので入力する。これを別紙にメモしておく。
※2 CPAN からのダウンロードの方法
(= Webmin を日本語サイトからダウンロードし、Webmin 経由でインストールする)
手順
・日本語サイトから webmin_1.400_all.deb をダウンロード
・ファイル・マネジャー起動、上記 debファイルをクリック→インストール
・ブラウザから https://localhost:10000/
認証画面がでたら例外選択
・左目次 Others → Perlモジュール → Install Modules タブ → CPAN 参照ボタン
・一覧表から選択→インストール
◆
2.設定
必要ソフトのインストールがすんだら、次は設定ファイルの修正。
ここは root権限で作業する必要があるので、端末から $ sudo nautilus でファイルマネジャを立ち上げ、必要ファイルをエディタで修正・保存する。
(A)apache2 関係の設定
ア) /etc/apache2/mods-enabled 中に cgi.load、 php5.conf、php5.load なるリンクファイルがあるのを確認(右クリック→プロパティでリンク先を確認のこと)。
イ) もし無い場合は、/etc/apache2/mods-available/に入り、 cgi.load、php5.conf、php5.load のリンクファイルを作成して、それらを/etc/apache2/mods-enabled/ に貼り付ける(この際リンクファイル名中の余計なカナ文字等は削除しておく)。
ウ) /etc/apache2/sites-enabled 中に 000-default なるリンクファイルがあるのを確認(リンク先をみると、 /etc/apache2/sites-available/default となっている)。
エ) /etc/apache2/sites-available/default をエディタでひらき、次(矢印以下に注)のように修正・保存。
*******引用開始******
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/">
Options Indexes FollowSymLinks MultiViews +ExecCGI (←末尾1項目追加)
AllowOverride None
Order allow,deny
allow from all
</Directory>
AddHandler cgi-script .cgi .pl (← 1行追加 )
# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ (←#でコメントアウト)
# <Directory "/usr/lib/cgi-bin"> (←#でコメントアウト)
# AllowOverride None (←#でコメントアウト)
# Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch (←#でコメントアウト)
# Order allow,deny (←#でコメントアウト)
# Allow from all (←#でコメントアウト)
# </Directory> (←#でコメントアウト)
(以下省略)
*******引用終了******
オ) 修正・保存がすんだら、エディタを閉じる。
(B)php5 関係の設定
ア)/etc/php5/conf.d/ の中に、pdo.ini、sqlite.ini、pdo_sqlite.ini、mysql.ini、mysqli.ini、pdo_mysql.ini が存在するのを確認。
イ)/etc/php5/apache2/ の中に、conf.dへのリンクファイルがあるのを確認。
(C)perl5 関係の設定
ア)/usr/bin/ 中に perl なるアイコンがあるのを確認、存在場所を記憶する。
(D)ここで一端ファイルマネジャーをとじ、apache2 を再起動させるため、端末で
$ sudo /etc/init.d/apache2 restart エンター(こちらの方が強力?)
または、
$ sudo apache2ctl restart エンター
◆
3.php 環境の簡単な実験
下記 phpinfo.php プログラムを作成し、php が機能するかどうかを試す。
ア)エディタを起動、下記プログラム部分をコピーして、phpinfo.php の名前で /var/www/ 直下に保存(この /var/www は、上記2.ア)の default ファイルで指定したドキュメント・ルートであり、いろいろなプログラム類はドキュメント・ルート以下に置くことにより phpプログラム として機能する)。
******(次行より phpinfo.php 開始)*****
<?php
phpinfo();
?>
******(前行まで phpinfo.php おわり)*****
保存がすんだらエディタを閉じる。
イ)端末で $ sudo chmod a+rwx /var/www/* (パーミッション付与)
ウ)ブラウザ起動、アドレス欄に http://localhost/phpinfo.php エンター とすると、php の起動環境をあらわす何枚もの表が現れる筈。 現れたら成功。
◆
4.perl 環境の簡単な実験
下記 printenv.cgi プログラムを作成し、それが機能するかどうかを試す。
ア)エディタを起動、下記プログラム部分をコピーして、printenv.cgi の名前で /var/www/ 直下に保存(この /var/www は、上記default ファイルで指定したドキュメント・ルートであり、いろいろなプログラム類はドキュメント・ルート以下に置くことにより cgi として機能する)。
******(次行より printenv.cgi 開始)*****
#!/usr/bin/perl --
## printenv -- demo CGI program which just prints its environment
print "Content-type: text/html; charset=iso-8859-1\n\n";
print "\n";
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print "${var}=\"${val}\"<BR>\n";
}
*****(前行まで printenv.cgi おわり)*****
保存がすんだらエディタを閉じる。なお、printenv.cgiプログラムの先頭行の #!/usr/bin/perl は2.設定(C)で確認した実行ファイルの場所と一致すること。 また、ブランクあとの -- はapache2 のクセのようなもの。省略不可。
イ)端末で $ sudo chmod a+rwx /var/www/* (パーミッション付与)
ウ)ブラウザ起動、アドレス欄に http://localhost/printenv.cgi エンター とすると、
DOCUMENT_ROOT="/var/www/"
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_ACCEPT_CHARSET="Shift_JIS,utf-8;q=0.7,*;q=0.7"
HTTP_ACCEPT_ENCODING="gzip,deflate"
(以下省略)
という情報群がズラッと現れたら cgi の実験は成功。
◆
5.外部からのアクセスを拒否する(用心深い方はどうぞ)
・ /var/www/ 以下はウェブサーバの管理下にあるから、一応外部に公開されている領域である。外部の人がこちらのipアドレスを知っているなら、ブラウザから中のファイルを見ることができる。 こちらはローカルな実験室のつもりだから、外部からの閲覧は防がねばならない。そのために、root権限で、/etc/apache2/sites-available/default の一部を下記のように修正する。
*************(引用開始)****************
<Directory "/var/www/">
Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride None
# Order allow,deny (←コメントアウトする)
# allow from all (←コメントアウト)
Order deny,allow (←1行追加)
deny from all (←1行追加)
allow from localhost (←1行追加)
allow from 127.0.0.1 (←1行追加)
</Directory>
*************(引用終了)****************
・ 上記以外の方法として、.htaccess という特殊ファイルを書く方法もある(筆者勉強中につき省略)。