PostgreSQL 6.4 + Apache 1.3.3 + PHP 3.0.5
インストールメモ


  1. 確認した環境

    root@server1:~# uname -a
    Linux server1 2.0.33 #4 Thu Jul 2 12:18:37 JST 1998 i586 unknown
    root@server1:~# gcc -v
    Reading specs from /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/specs
    gcc version 2.7.2.3
    root@server1:~# make -v
    GNU Make version 3.76.1, by Richard Stallman and Roland McGrath.
    root@server1:~# patch -v
    patch 2.5
    Copyright 1988 Larry Wall
    Copyright 1997 Free Software Foundation, Inc.
    root@server1:~# bison --version
    GNU Bison version 1.25
    root@server1:~# flex --version
    flex version 2.5.4

  2. ソフトウェアの入手

    ねたは以下の URL から持ってきます。つながらない場合などは、 FTP searchなどで 探してみてください。

    Postgres 6.4
    石井さんのパッチ済みソース
    readline-2.2.1( psql で使います)
    readline-2.2.1など
    readline-2.2.1.jpatch.980724.gz( psql で使います)
    readline-2.2.1.jpatch.980724.gzなど
    Apache 1.3.3
    Apache 本家など
    PHP 3.0.5
    PHP 本家など

  3. readline-2.2.1 のインストール

    root@server1:~# cd /tmp
    root@server1:/tmp# tar xvzf /どこかの/readline-jp/readline-2.2.1.tar.gz
    root@server1:/tmp# cd readline-2.2.1
    root@server1:/tmp/readline-2.2.1# gzip -dc /どこかの/readline-2.2.1.jpatch.980724 | patch -p0
    (これで README.jis ができるので読みましょう)
    root@server1:/tmp/readline-2.2.1# ./configure
    root@server1:/tmp/readline-2.2.1# make
    root@server1:/tmp/readline-2.2.1# make install
    

    (運がよければ)これで /usr/local/lib 配下に libreadline.a と libhistory.a が作成されます。もはやソースは不要なので削除しても 構いません。

    root@server1:/tmp/readline-2.2.1# cd ..
    root@server1:/tmp# rm -rf readline-2.2.1*
    
  4. PostgreSQL 6.4 のインストール

    簡単に説明します。ハマッてしまったら、迷わず 石井さんのページに直行します :-)。

    1. ソースの展開準備

      root@server1:~# rm -rf /usr/local/pgsql
      root@server1:~# mkdir /usr/local/pgsql
      root@server1:~# chown postgres.users /usr/local/pgsql
      
    2. PostgreSQL 管理者の設定(はじめてのインストールの場合のみ)

      まず、/usr/local/pgsql/lib/libpq.so が各アプリケーションから アクセスできるようにします。

      root@server1:~# echo '/usr/local/pgsql/lib' >> /etc/ld.so.conf
      root@server1:~# ldconfig -p
      

      adduser コマンド で postgres というユーザを作成します。

    3. これ以降はユーザ postgres で作業します。

      root@server1:~# su - postgres
      postgres@server1:~$
      

      初めてのインストールの場合は、.bash* とか .cshrc とかを編集して /usr/local/pgsql/bin にパスを通しておきます。

      postgres@server1:~$ echo 'export PATH=/usr/local/pgsql/bin:$PATH' > ~/.bashrc
      postgres@server1:~$ source ~/.bashrc
      
    4. 展開+インストール

      postgres@server1:~$ cd /usr/local/pgsql
      postgres@server1:/usr/local/pgsql$ tar xvzf /どこかの/postgresql-v6.4-patched.tar.gz
      postgres@server1:/usr/local/pgsql$ cd postgresql-v6.4/src/
      ( ここには README.mb.jp という福音書があるので、ありがたく参照します)
      postgres@server1:/usr/local/pgsql/postgresql-v6.4/src$ ./configure --with-mb=EUC_JP
      postgres@server1:/usr/local/pgsql/postgresql-v6.4/src$ make
      postgres@server1:/usr/local/pgsql/postgresql-v6.4/src$ make install
      

    5. データベースの初期化

      postgres@server1:~$ initdb --pgdata=/usr/local/pgsql/data --pglib=/usr/local/pgsql/lib
      

      これは、インストール後に一度だけ行う作業です。 何をやっているのかということに興味があれば、 initdb.1に何か書いてあるかもしれません。

    6. PostgreSQL の起動

      postmaster というデーモンを起動するのですが、 セキュリティ保護の関係で root 権限では起動できないとかありますので、 ここは桑村さんが作られた pgsqld というスクリプトをパクって しまいましょう(^^;。

      pgsqld は、技術評論社 が発行している Software Design 98/12 月号についてくる Plamo Linux 1.3 の CD-ROMの中の、contrib/Database/pgsql632.tgz というやつに入ってますが、無い方あるいは買いそびれた方は、 ここにも置いてあります。

      ゲットした pgsqld を /usr/local/pgsql/bin にコピーして、 コマンドラインから起動します。

      postgres@server1:~$ pgsqld start
      /usr/local/pgsql/bin/pgsqld: postmaster(PostgreSQL server) started.
      /usr/local/pgsql/bin/pgsqld: Proccess ID = 16830
      

      幸運な事にうまく起動するようであれば、このコマンドを /etc/rc.d/rc.local などに追加しておけば、ブート時に自動的に 立ち上がるようになります。

      注意:pgsqld は、デフォルトで -i オプションが指定して ありますので、別のホストからのアクセスもできるようになっています。 セキュリティ上問題がある場合は、pgsqld をエディタで開いて適当に 修正してください。詳細は postmaster.1を参照してください。

    7. Regression Test(回帰テスト?)

      では、動作確認を行います。

      postgres@server1:~$ cd /usr/local/pgsql/postgresql-v6.4/src/test/regress/
      postgres@server1:/usr/local/pgsql/postgresql-v6.4/src/test/regress$ make all runtest
      (中略)
      =============== running regression queries...         =================
      boolean .. ok
      char .. ok
      name .. ok
      (中略)
      install_plpgsql .. ok
      plpgsql .. ok
      euc_jp .. ok
      ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out
      rm regress.o
      

      みたいな感じで、各データ型や機能について ok/fail が表示されます。 ここで fail が出るようであれば、私の手には負えないので、 PostgreSQL のメーリングリストで聞いてみてください。

      Regression Test が終了すると、regress.out というファイルに 結果が書き込まれます。これで PostgreSQL については完璧です(どこが?)。 どうもお疲れさまでした。

  5. PHP 3.0.5 + Apache 1.3.3 のインストール

    ここからは、また root に戻って作業です。

    1. 過去の清算

      すでに apache 1.3.x を動かしている方は、古い httpd をブチ殺しておくと 共に、古い環境もばっさり消しておいた方がよいかもしれません。 あ、バックアップはちゃんと取っておきましょうね。

      root@server1:~# cd /usr/local/etc/
      root@server1:/usr/local/etc# rm -r apache* php*
      
    2. 展開

      root@server1:/usr/local/etc# tar xvzf /どこかの/php-3_0_5_tar.gz
      root@server1:/usr/local/etc# tar xvzf /どこかの/apache_1_3_3_tar.gz
      root@server1:/usr/local/etc# export LD_LIBRARY_PATH=/usr/local/pgsql/lib
      ( make の途中で PostgreSQL のライブラリ libpq を
      見に行けるようにするおまじない)
          
    3. インストール

      php-3.0.5/INSTALL ファイルにある QUICK INSTALL の指示に従います。

      root@server1:/usr/local/etc# cd apache_1.3.3/
      root@server1:/usr/local/etc/apache_1.3.3# ./configure --prefix=/www
      root@server1:/usr/local/etc/apache_1.3.3# cd ../php-3.0.5/
      root@server1:/usr/local/etc/php-3.0.5# ./configure --with-pgsql --with-apache=../apache_1.3.x --enable-track-vars
      root@server1:/usr/local/etc/php-3.0.5# make
      root@server1:/usr/local/etc/php-3.0.5# make install
      root@server1:/usr/local/etc/php-3.0.5# cd ../apache_1.3.3/
      root@server1:/usr/local/etc/apache_1.3.3# ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
      root@server1:/usr/local/etc/apache_1.3.3# make
      root@server1:/usr/local/etc/apache_1.3.3# make install
      
    4. Apache の確認

      ここまでで、Apache としてはインストールが完了しました。 では、動かして確認してみましょう。

      root@server1:/usr/local/etc/apache_1.3.3# /www/sbin/apachectl start
      /www/sbin/apachectl start: httpd started
      

      この後、適当なブラウザでそのサーバにアクセスしてみて、 例の「It Worked!」(元々 /www があった場合は元々のページ)が 表示されれば成功です。うまくいったら、上記のコマンドを /etc/rc.d/rc.local にでも書いておきましょう。

    5. PHP3 の確認

      次は PHP3 の設定を行います。

      root@server1:/usr/local/etc/apache_1.3.3# cd ../php-3.0.5
      root@server1:/usr/local/etc/php-3.0.5# cp php3.ini-dist /usr/local/lib/php3.ini
      

      上書きインストールでない場合は、さらに以下の設定が必要です。

      root@server1:/usr/local/etc/php-3.0.5# cd /www/etc/apache/
      

      この配下に srm.conf ファイルがあるのでそれを開いて、 php3 を含む行

      #AddType application/x-httpd-php3 .phtml
      
      の行頭の '#' を削除して有効にし、右端の .phtml を .php3 に変更します。 これが PHP3 スクリプトファイルの拡張子とみなされます。その後 変更を反映させるために Apache を再起動します。
      root@server1:/www/etc/apache/# /www/sbin/apachectl restart
      /www/sbin/apachectl restart: httpd restarted
      

      確認方法としては、以下の事を試してみてください。

      root@server1:/www/etc/apache# cd /www/share/apache/htdocs/
      root@server1:/www/share/apache/htdocs# cp /usr/local/etc/php-3.0.5/examples/date.php3 .
      

      この後、適当なブラウザで http://そのサーバの/date.php3 にアクセスしてみて、こんな感じの出力がなされれば成功です。


      Date/Time Functions Demo

      Functions demonstrated 
             
             
             
      

      The date() function is used to display times and dates in various ways. The function takes a format string and a time as arguments. If the time argument is left off, the current time and date will be used. The time argument is specified as an integer in number of seconds since the Unix Epoch on January 1, 1970. The format string is used to indicate which date/time components should be displayed and how they should be formatted.

      For example, if we wanted to print the current date and time, we might use a tag like: <? echo date("D M d, Y H:i:s")?>. This looks like: Fri Nov 27, 1998 17:16:45 (ここが今現在の時刻になっていればOK)


    Apache のディレクトリ構成や、PHP/FI からの移行などについては、 前回作った Apache 1.3.1 + PHP 3.0.2 インストールメモ の方に書いてあります。