(2011年03月23日 更新)

Apache 2 と PHP 5 の導入



0.    WEBサーバーを、かなり長い間放置していた。時々ヘンなアクセスが無いかどうか
    くらいはチェックしていたが、そろそろOSもサーバーソフトも新しいものに更新する
    のがよかろう。しかし、いきなりサーバーにインストールして動きませんでした、
    では悲し過ぎる。まずは、手元のPCでテストしてみるべきだろう。
      折角なので Apache 2 も最新のものにアップデートし、PHP も 5 に更新することに
    したい。
      しかし、PC本体がかなり古い。かれこれ10数年前の定番スペックのものだ。果た
    して最新の OS のインストールに耐えられるのだろうか?
      実験に使ったPCのスペックは以下の通り。

          CPU    : AMD Athlon 650MHz
          MB     : 
          Chipset: VIA Apollo KX133
          Memory : 128 MB (= 128MB * 1枚)
          HDD    :  80 GB (Ultra ATA)

      このメモは、試行錯誤をそのまま記録しているので、かなり分かり難いことを予め強調
    しておく。試行に対する成功や失敗は、なるべくタイトルやサブタイトル中で明記する
    ようにした。


----- I. OS の更新 -----

      この PC、今までは Redhat 8 を走らせていた。Vine Linux 2.6 あたりをインス
    トールしようとしたこともあるのだが、インストール完了後、再起動すると kernel 
    panic を起こして停止してしまったのだ。知識と技術がある人なら対処もできるのだ
    ろうが、不幸にも私には、そのような知識や技術は備わっていない。結局、無事イン
    ストールが完了して、起動した Redhat 8 で使っていた。ちなみに Apache のバー
    ジョンは 2.0.40、PHP は 4.x.x. である。
      当初は、この Redhat 8 のまま、apache 2 と PHP 5 の更新を行うつもりだったが、
    PHP のバージョンアップがどうも上手くいかない。OS が古すぎるのだろうか? 結局、
    面倒なので OS そのものから再インストールすることにした。
      一旦、PC を停止し、現在の起動用 HDD を念のため外して保管、新品の IDE 80 GB 
    のハードディスクを primary/master に接続した。

1.1 Ubuntu 10.10 / Ubuntu 10.04 導入ならず---失敗:

      たまには慣れていないディストリビューションもいいかと思い、日経 Linux 2010 
    年 12 月号の付録 DVD から「Ubuntu 10.10 Desktop 日本語 Remix CD」のインスト
    ールを試みた。DVD をドライブに入れてブート...しかし、どうも PC がパワー不足
    らしく、しばらく画面がいろいろ動くものの、結局インストーラーは起動せず。

      少しバージョンを下げてみるか、と、今度は日経 Linux 2010年 10 月号の付録 DVD 
    から「Ubuntu 10.04 LTS Desktop 日本語 Remix」をドライブに入れてブート...しかし、
    やはり、同様にインストーラーは起動せず。うぬぬ。Ubuntu 9.x を試そうかとも考え
    たが、今は、これで止めておくことにする。

1.2 Vine Linux 5.2 導入---成功---されど:

      次に、日経 Linux 2011 年 2 月号の付録 DVD から「Vine Linux 5.2(32ビット版)」
    を試すことにした。DVD をドライブに入れてブート。今度は問題なくインストーラーが
    起動。ほとんど全ての設定はデフォルトでインストール開始。1時間近くかかったものの、
    無事インストール終了。PC を再起動したところ、ちゃんと Vine 5.2 が立ち上がった。
      取り敢えず最新の apache 2 をインストールしてみた(2.2 参照)が、これが大失敗。
    改めてネットを彷徨ってみると、Vine Linux 5.2 はまだリリース直後ということも
    あって、現状では情報が少ないようだ...これはトラブルになった時に怖いかなぁ(既に
    トラブってるけど)。と、言うことで、Vine Linux 5.2 は放棄することにした。

1.3 Vine Linux 4.2 導入---成功---無難な路線で...:

      無難なところで Vine Linux 4.2 をインストールすることにした。
      今度は自前でダウンロードした iso ファイルを CD に焼き込んだものを使用。これを
    ドライブに入れてブート、すると、インストーラーは起動したものの、テキストモード
    ではないですか!!メモリかグラフィックカードのせいかしら...まぁインストールは
    できるようだから良しとしよう。
      1時間ほどでインストール完了、システムの古さは如何ともし難い。X Window の解像
    度が十分に出るか不安ながらも、24ビット、1024x768の解像度を選択して、リブート。
    無事、X Window が動きました。


----- II. Apache 2 の導入 -----

2.1 Apache 2.2.17 のダウンロード:

      Apache 2 のソースを、こちらの公式ページからダウンロードした。最新のバージョンは 
    2.2.17 でファイル名は httpd-2.2.17.tar.gz とのこと。
      まぁソースファイルのダウンロードは問題なく終了。

2.2 Vine Linux 5.2 への導入失敗:

      Vine Linux 5.2 をインストールしたシステムに、Apache 2.2.17 を以下のように導入した。
    ソースファイル httpd-2.2.17.tar.gz を適当なディレクトリに置いて、

          tar -zxvf httpd-2.2.17.tar.gz
          cd httpd-2.2.17
          ./configure --enable-so --enable-module=so --enable-module=rewrite 
          make
          make install

      古くて遅い CPU だけあって、./configure に3分弱、make に9分弱、make install 
    に1分弱もの時間を要した。しかしこれで、/usr/local/apache2 以下に Apache 2 が
    インストールされたはず。
      ところが、いざ、

          /usr/local/apache2/bin/apachectl -v

    として、apache のバージョン確認を行うとすると、"既にポートは埋まってるよ"という
    エラーメッセージが表示される。
      元々 Vine Linux 5.2 をインストールした時点で httpd サーバーもインストール、起動
    していたようなのだ。結局、後からインストールした apache 2 とはシステムが競合して
    しまう、という事のようだ。面倒なことになった。
      まぁ、適当に調整はできるのだろうが、前述したように Vine Linux 5.2 は情報も少ない
    ということで、今回はこのシステムは放棄することになった。

2.3 Vine Linux 4.2 の既導入 Apache のアンインストール:

      ここからは Vine Linux 4.2 をインストール完了した直後からの話である。
      まずは、Vine Linux 4.2 インストール時に既に導入されている apache(だろう、多分)
    のアンインストールを行う。

     rpm -qa | grep apache

    などとして、導入されている Apache を確認、apache2-2.2.3-0vl3.2 が導入されている
    ようだ。そこで、

          rpm -e apache2-2.2.3-0vl3.2

    として、アンインストールを狙ったが、

          エラー: 依存性の欠如:
          httpd は (インストール済み)mod_ssl-apache2-2.2.3-0vl3.2.i386 に必要と
          されています
          httpd-mmn = 20020903 は (インストール済み)mod_ssl-apache2-2.2.3-0vl3.2.i386 
          に必要とされています

    とエラーメッセージが出た。まぁ、予想通り。そこで、さらに、

          rpm -e apache2-2.2.3-0vl3.2 mod_ssl-apache2-2.2.3-0vl3.2 apache2-manual-2.2.3-0vl3.2

    で互いに依存するファイルを全て同時に削除。すると今度は、

          警告: /etc/apache2/conf/httpd.conf は /etc/apache2/conf/httpd.conf.rpmsave と
          して保存されました。

    という警告文(?)が出てきたが、問題なく削除は出来たようだ。

2.4 Apache 2.2.17 のダウンロードとコンパイル:

      
      root になって、適当な場所にソースを置き、以下のように実行した。

          tar -zxvf httpd-2.2.17.tar.gz
          cd httpd-2.2.17
          ./configure --enable-so --enable-module=so --enable-module=rewrite 
          make
          make install

      古くて遅い CPU だけあって、./configure に3分弱、make に9分弱、make install 
    に1分弱もの時間を要した。しかしこれで、/usr/local/apache2 以下に Apache 2 が
    インストールされたはず。
      試しに、

          /usr/local/apache2/bin/apachectl -v

    と入力して、Apache のバージョンをチェック。レスポンスは、

          Server version: Apache/2.2.17 (Unix)
          Server built:   Feb 23 2011 23:15:13

    と言うことで、無事インストールが確認できました、と。

2.5 httpd.conf などの設定:

      続いて、/usr/local/apache2/conf/httpd.conf を編集して、apache 2 の主な動作設定を
    行った。以前のバージョン 2.0.40 では、全ての設定を httpd.conf に書き込んだのだが、
    バージョンアップの過程で、httpd.conf には基本的な設定のみを記し、それ以外は、/usr/local
    /apache2/conf/extra の中にある httpd-*.conf というファイルに記すようになったようだ。
     今回 httpd.conf に対して行った設定は以下の通り。

           29行目 --- ServerRoot "/usr/local/apache2"、デフォルトのまま
           40行目 --- Listen 80、デフォルトのまま
           65行目 --- User apache
           66行目 --- Group apache
           88行目 --- ServerAdmin ehehehe_at_u-gakugei.ac.jp (ダミーです)
           97行目 --- ServerName gushishi._u-gakugei.ac.jp (ダミーです)
          104行目 --- DocumentRoot "/usr/local/apache2/htdocs"、デフォルトのまま
          144行目 --- Options FollowSymLinks、「Indexes」を削除
          373行目 --- Include conf/extra/httpd-multilang-errordoc.conf、
                      (コメントアウトを外す)
          376行目 --- Include conf/extra/httpd-autoindex.conf
                      (コメントアウトを外す)
          379行目 --- Include conf/extra/httpd-languages.conf
                      (コメントアウトを外す)
          382行目 --- Include conf/extra/httpd-userdir.conf
                      (コメントアウトを外す)
          391行目 --- Include conf/extra/httpd-manual.conf
                      (コメントアウトを外す)

       次に、/usr/local/apache2/conf/extra/httpd-languages.conf で言語設定を行う。

           78行目 --- LanguagePriority ja en ca cs da de el eo es et fr he hr it ko 
                      ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW、( ja を先頭に)

       続いて、/usr/local/apache2/conf/extra/httpd-multilang-errordoc.conf の設定を行う。

           31行目 --- LanguagePriority ja en cs de es fr it ko nl pl pt-br ro sv tr、
                      ( ja を先頭に)

       /etc/hosts の「127.0.0.1」にサーバー名(例:gushishi._u-gakugei.ac.jp)を対応させる。

       サーバー立ち上げ時に、apache が自動起動するように、/etc/rc.d/rc.local に、

           /usr/local/apache2/bin/apachectl start

     を書き加える。

       こうしておいて、

           /usr/local/apache2/bin/apachectl stop
           /usr/local/apache2/bin/apachectl start

     と入力して完了。
       適当なインターネットブラウザで、このPCにアクセス(http://gushishi._u-gakugei.ac.jp)
     すると、「It works !」と表示されるので、問題無く動作しているようだ。ちなみに、この
     「It works!」を表示させる html ファイルは /usr/local/apache2/htdocs/ の下にある index.html 
     である。そこで、この index.html の中に META タグの HTTP-EQUIV を用いて、WEBページの
     トップに飛ぶようにしておけば、今後は http://gushishi._u-gakugei.ac.jp へのアクセスを、
     トップページに誘導することができる。

----- III. PHP 5 の導入 -----

       どうやら、PHP のインストールと動作には、Flex と libxml2、re2c が必要らしい。Flex 
     とは字句解析を自動生成する機能を提供するソフトウェア、libxml2 は XML の基本ライブ
     ラリ、re2c は Flex と似たようなものらしいが、筆者には良く分かりまへんでした。まぁ、
     必要というからにはダウンロードして、インストールすることにしよう。

3.1 Flex のダウンロードとインストール

       Flex 最新版であるバージョン 2.5.35 のソース flex-2.5.35.tar.gz を、こちらからダウン
     ロードした。これを適当なディレクトリに置いて、

           tar -zxvf flex-2.5.35.tar.gz
           cd flex-2.5.35
           ./configure --prefix=/usr/local
           make
           make install

     でOK。
       ただし、後述のように、現時点での最新のPHP 5.3.5 は、本システムでコンパイルが
     行えず、PHP 5.2.16 を導入することになった。Flex の最新バージョン 2.5.35 は、PHP 
     5.3.5 に対応しているが、PHP 5.2.16 に対応した Flex は、古いバージョンの 2.5.4a で
     ある。従って、flex-2.5.4a.tar.gz のダウンロードとインストールが必要になる。ダウン
     ロードは最新版と同じ場所から辿れる。またインストールも最新版と同じ方法でOK。
       で、結局、Vine Linux 4.2 には flex のバージョン 2.5.4a をインストールした。
       ただし、最近入手できるようなハードウェアからなるシステムであれば、問題なく、Flex 
     2.5.35 と PHP 5.3.5 が導入できるだろう。そう、全ては今回用いたシステムが恐ろしく
     古いために、筆者はちらほらとトラブルに出会っているのだ。

3.2 libxml2 のダウンロードとインストール

        libxml2 の公式ページによると、最新版はバージョン 2.7.8とのこと。このソース
      libxml2-2.7.8.tar.gz を、こちらからダウンロード。これを適当な
      ディレクトリに置いて、

           tar -zxvf libxml2-2.7.8.tar.gz
           cd libxml2-2.7.8
           ./configure --prefix=/usr/local
           make
           make install

      で完了。
        これをインストールしておかないと、php 5 の ./configure で「libxml2を確認しなさい」
      というエラーが出ることになる。

3.3 re2c のダウンロードとインストール

        どうやら、re2c もインストールしておいた方が良いらしい。Flex と同じようなものらしいが、
      筆者にはよく分かりまへん。最新のバージョン 0.13.5 とのこと。該当する re2c-0.13.5.tar.gz 
      を、こちらのページからダウンロードした。これを例によって
      適当なディレクトリに置いて、

           tar -zxvf re2c-0.13.5.tar.gz
           cd re2c-0.13.5
           ./configure
           make
           rm -f scanner.cc
           make install

      で完了。

3.4 PHP 5.3.5 のダウンロードとインストール --- 挫折

        PHPの公式ページはこちら。ここから最新版 5.3.5 のソースファイル php-5.3.5.tar.gz をダウ
      ンロード。これを適当なディレクトリに置いて、

           tar -zxvf php-5.3.5.tar.gz
           cd php-5.3.5
           ./configure --prefix=/usr/local/php-5.3.5 --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring
           make

      で、しばらく経つと、エラーが出ました!
        WEBなどを彷徨って調べてみると、どうやらコンパイルに必要なメモリが足りないらしい。
      今時 128 MB しか積んでないからなぁ。
        ということで、PHP 5.3.5 のインストールは諦めることにする。

3.5 PHP 5.2.16 のダウンロードとインストール・設定 --- 成功

        改めて、少し古めの 5.2.16 の php-5.2.16.tar.gz をダウンロード。ただし、3.1 で述べた
      ように、Flex のバージョンを下げておかないと、./configure だか make で「flex の 2.5.4a」
      が無いと怒られるので、改めて、Flex 2.5.4a を導入( 3.1 参照)。そして、

            tar -zxvf php-5.2.16.tar.gz
            cd php-5.2.16
            ./configure --prefix=/usr/local/php-5.2.16 --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring
            make
            make test
            make install

        システムが古いせいもあるが、make もさることながら、make test には 1 時間ほどかか
      った。どうやらコンパイルしてできた 6000 個強のファイル全ての状態をチェックをしている
      ようだ。
        さらに、

            ln -sfn /usr/local/php-5.2.16 /usr/local/php

        make を実行したディレクトリから、

            cp php.ini-dist /usr/local/lib/php.ini

      として、基本的な設定を行うべく、vi で /usr/local/lib/php.ini を開き、以下のように編集。
      これでマルチバイト文字列に対応できるらしい。

            ;output_handler =
              --> output_handler = mb_output_handler

            ;default_charset = "iso-8859-1"
              --> default_charset = "UTF8"

            ;mbstring.language = Japanese
              --> mbstring.language = Japanese

            ;mbstring.internal_encoding = EUC-JP
          --> mbstring.internal_encoding = UTF8

            ;mbstring.http_input = auto
              --> mbstring.http_input = auto

            ;mbstring.http_output = SJIS
              --> mbstring.http_output = UTF8

            ;mbstring.encoding_translation = Off
              --> mbstring.encoding_translation = On

            ;mbstring.detect_order = auto
              --> mbstring.detect_order = auto

            ;mbstring.substitute_character = none;
              --> mbstring.substitute_character = none;

        PHP から SQLite を使うために、以下の3行のコメントアウトを外す。

            ;extension=php_pdo.dll
              --> extension=php_pdo.dll

            ;extension=php_pdo_sqlite.dll
              --> extension=php_pdo_sqlite.dll

            ;extension=php_sqlite.dll
              --> extension=php_sqlite.dll

      何でも、extension=php_pdo.dll と extension=php_pdo_sqlite.dll は、extension=
      php_sqlite.dll よりも先に置いておかなければならないらしい。
        しかし、どうやらこれら三つの DLL ファイルは Linux には必要無いのか、どこのディレク
      トリにも存在せず、さらに、上記三箇所のコメントアウトしなくても、phpinfo() で PHP の
      設定内容を確認すると、SQLite が使えるように表示されている。うぬぬ。
        このコメントアウトが必要なのは、MS-Windows に PHP をインストールする場合なのかしら?

        筆者はさりげなく Pukiwiki を使っている。Pukiwiki は PHP の下で動いており、Pukiwiki
      で大きなサイズ(80MBくらい)のファイルをアップロードできるようにするためには、PHP で
      も、以下のように設定しておかなくてはならない。

            memory_limit = 128M
              --> memory_limit = 100M(元々 128M しか積んでないので)

            upload_max_filesize = 2M
              --> upload_max_filesize = 80M

            post_max_size = 8M
              --> post_max_size = 100M

      これで多分、大丈夫。

3.6 Apache 2 の再設定と再起動

        vi で Apache 2 の /usr/local/apache2/conf/httpd.conf を以下のように編集。

            LoadModule php5_module modules/libphp5.so(PHP の共有モジュールのロード)

            AddType application/x-httpd-php .php .phtml(Apache が PHP ファイルを識別する拡張子)

            AddType application/x-httpd-php-source .phps(PHP ソースをハイライト表示:必要?)

      これで、設定は終了。
        あらためて、Apache 2 を再起動。

            /usr/local/apache2/bin/apachectl restart

      もしくは、

            /usr/local/apache2/bin/apachectl stop
            /usr/local/apache2/bin/apachectl start

      でOK。

西浦クンのメモトップページへ

西浦クンのお部屋トップページへ

東京学芸大学天文学研究室ホームページへ

東京学芸大学宇宙地球科学分野ホームページへ

東京学芸大学ホームページへ

Created: Tue Feb 22 17:48 JST 2011
Last modified: Sat Jan 23 13:20 JST 2021