ウェブアプリ実行環境 <  自宅 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 という特殊ファイルを書く方法もある(筆者勉強中につき省略)。

inserted by FC2 system