Apache・PHP・PostgreSQLメモ

これらは、私がApache、PHP、PostgreSQLについてやったことをメモ書きしているものです。
(インストールとか、設定とか)
一応、公開するに当たってに文章等考えて書いてますが、結構すっ飛ばして書いてあるところもありますので
よろしくお願いします。
まず始めにすごく簡単に、それぞれについて書いてみたいと思います。
 
 
  • Apacheとは[ 本家 ]
    • 世界でよく使われている、フリーのHTTP[http://でWebページを表示できるようにする]サーバソフト
    • UNIX系のみならずWindows版も存在し、Windowsでも簡単にWebサーバとすることができる
  • PHPとは[ 本家 ] [ 日本 PHP ユーザー会 ] [ software labolatory 'nx' ]
    • Hypertext Preprocessorの略で、データベースのアクセスを容易に行える
    • Perlのような動作をさせることが可能
    • CGI言語の一つ
    • 書籍が多数出ている(PHP4徹底攻略改訂版 etc.)
  • PostgreSQL[ 本家 ] [ 日本PostgreSQLユーザー会 ]
    • フリーの本格的なRDBMS
    • 中規模クラスのDBとして利用できトランザクション等と装備し商用DBにひけを取らない
    • PHPとの組み合わせでWeb-DBの連携を持ったサイトを構築可能
    • UNIX系にインストール可能、ただしWindows版については完全な物はまだないです
    • シーラカンス本と通称で呼ばれる本を読めば大抵理解可能
 
 
こんな感じです。
まぁ、これに関してはそんな事ができるソフトがあるんだ程度で良いと思います。
うちのサーバにもこれらソフトは入れています。
(入れてるから説明できるんですけどね(^^;;))
では次から、インストールについて、やっていきたいと思います。
 
 
 
  • PostgreSQLインストール
    • インストールする前にデータベース管理者ユーザを作成します
    • そのあと、その作成したユーザで全て行っていきます
    • その為インストールする前はroot権限で設定を行います
    • その設定が終わってから、作成したユーザ権限でインストールを行います
    • ダウンロード(以下DL)は本家ホームページ(以下本家HP)でDLできます
    • 本家へ飛ぶと、国旗が沢山出てくるので、日本の国旗を選びます
    • その先に、HPがでてきます(英語)
    • そのページの左側にSoftwareという項目があるので、そこをクリックします
    • その先には、「The latest source is available from the primary site via FTP or HTTP. 」と書かれている場所があります
    • HTTPと書かれている場所にマウスを持っていってクリックすると、DLできます
UNIX(Linux)の場合
 
まず、PostgreSQLの本家サイトからファイルを落としてきます。
2002/11/21現在
 ・postgresql Ver7.2.3
が、あります。
コンパイル作業時に使う、通常必要ソフトウェアは入ってると思うので
その設定は省きます。
では、次から作業の方法を始めます。

/usr/local/にインストールする方法です。
(最初はroot権限、実際のインストールは、postgres(新規に作成するユーザアカウント)で行います)
 
 
まずは、データベース管理をするアカウントを 作成します。
 
 
$root@k-dist /root>/usr/sbin/adduser postgres
$root@k-dist /root>passwd postgres
 
 
次にインストールする先のディレクトリと解凍する先のディレクトリを作成します。
 
 
$postgres@k-dist /root>mkdir /usr/local/pgsql(インストール先ディレクトリ)
$postgres@k-dist /root>mkdir /usr/local/src/postgresql-7.2.3(解凍先ディレクトリ)
 
 
ディレクトリのオーナー権限を、先ほど作成したアカウントのpostgresとします。
 
 
$postgres@k-dist /root>chown postgres:postgres /usr/local/pgsql
$postgres@k-dist /root>chown postgres:postgres /usr/local/src/postgresql-7.2.3
 
 
次に、ユーザを管理ユーザに変更して、本家サイトから落としてきた
postgresql-7.2.3.tar.gzを/usr/local/srcに解凍します
 

$root@k-dist /root>su - postgres(ユーザをpostgresに変更) $postgres@k-dist /root>cd /usr/local/src $postgres@k-dist /src>tar zxvf /home/postgres/postgresql-7.2.3.tar.gz               (↑/home/postgresにDLしたファイルがあるとした場合です )
 
 
そして、インストールに移ります。
扱う文字コードはEUCの方が確実なのでEUC_JPとします。
(PHPもじつはEUCでないとマルチバイト文字を扱う上で文字化けしたりするので・・・)
 
 
$postgres@k-dist /src>cd postgresql-7.2.3
$postgres@k-dist /postgresql-7.2.3>./configure --enable-multibyte=EUC_JP --enable-syslog
$postgres@k-dist /postgresql-7.2.3>.make
$postgres@k-dist /postgresql-7.2.3>.make install
 
 
これでインストールは完了です。
 
次に、データベース管理者権限を持つユーザの環境設定をします。
データベース管理アカウントのホームディレクトリにある.bashrcテキストエディタで開きます
(今回の場合は/home/postgres/.bashrc[シェルがbashの場合] )
( cshの場合は/home/postgres/.cshrc )

そして、以下の設定を付け加えます。
 
(bashの場合)
PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data(←データベースを作成するディレクトリを指定)
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
(cshの場合)
set path = ( $path /usr/local/pgsql/bin)
setenv POSTGRES_HOME /usr/local/pgsql
setenv PGLIB $POSTGRES_HOME/lib
setenv PGDATA $POSTGRES_HOME/data(←データベースを作成するディレクトリを指定)
if ( $?MANPATH ) then
  setenv MANPATH "$MANPATH":$POSTGRES_HOME/man
else
  setenv MANPATH $POSTGRES_HOME/man
endif
if ( $?LD_LIBRARY_PATH ) then
  setenv LD_LIBRARY_PATH "LD_LIBRARY_PATH":"$PGLIB"
else
  setenv LD_LIBRARY_PATH $PG_LIB
endif
 
上記のものを打ち終えたら下記の作業を行います。
 
 
$postgres@k-dist /postgres>source .bashrc(cshの場合は source ./cshrc)
 
 
 
上記の作業を終えたら、終わったら、データベースを初期化します。
PGDATAで指定したディレクトリにデータベースの雛形が作成されます)
 
 
$postgres@k-dist /postgres>initdb
 
 
初期化の作業を終えたら、postgresqlを立ち上げます。
 
 
$postgres@k-dist /postgres>pg_stl start &(&はバックグラウンドで動かす為つける)
 
 
再起動や、終了の処理は、restartstopを使います
 
 
$postgres@k-dist /postgres>pg_ctl restart(再起動) $postgres@k-dist /postgres>pg_ctl stop(終了)
 
 
 
これで、完了です。
細かい設定は、次のところで行います。
 
 
PostgreSQL設定へ(作成中)
上へ戻る  戻る
 
Windowsの場合
 

Windowsの場合は、これと言っていい方法がありません。
Cygwin(WindowsでUnixのようなことできるツール)
を用いても安定した動作はしません。

唯一、Windowsバイナリーとして配布しているものでも、まだ完全なものではありません。
(実際のDBに反映させる前のテスト用としては十分使えます)

ここにあります

詳しくは、上のページを見て行ってください。
あつかった感想としては、createdbができないのが辛いですが、
テーブルは作成できるのでテスト環境に使うとしては十分だと思います。

※上のページにも載っていますがPostgreSQLのWindows版が販売されるようです。
  次期バージョンの7.3ベースになるようですね。
  個人用途には高いですが、GUI搭載などかなり使いやすそうです。

 
 
 
  • Apacheインストール
    • インストールは簡単です。コマンドを3行ぐらい打てば終わりです。むしろその後の設定が大変です
    • (なれればそこそこ楽しくなりますが・・・)
    • DLは本家HPの左側にあるメニューのHTTP Serverをクリック
    • とんだ先の一番下にApache (Version No).Releasedという項目がありその下にDownloadを押す
    • ooo.tar.gz(Windowsの場合はooo.msi)と書いてある所を押せば落とせます。
UNIX(Linux)の場合
 
まず、Apacheの本家サイトからApacheを落としてきます。
2002/11/21現在
 ・Apache1.3.27
 ・Apache2.0.43
が、あります。
コンパイル作業時に使う、通常必要ソフトウェアは入ってると思うので
その設定は省きます。
では、次から作業の方法を始めます。

/usr/local/にインストールする方法です。
  Apache2は文字コードの設定が
厳密になったりして設定が
めんどくさいですし、
Apache2が新しくなると
PHPが、モジュールとして
使えなくなったり

するので、Apache1.3.27の方を
おすすめします。
Apache2に追加された
「AddDefaultCharset」
の設定が非常にめんどくさいです。
"AddDefaultCharset none"
 
にすれば今までどおりmetaで
文字コードを指定すれば文字コードで
表示されます・・・)
ここでは、Apache1.3.27の
インストール方法についてやります
作業は全てroot権限で行います
 
 
まず、本家サイトから落としてきたapache_1.3.27.tar.gzを/usr/local/srcに解凍します
(apache2.0.43の場合はhttpd-2.0.43.tar.gz)
 
 
$root@k-dist /root>cd /usr/local/src
$root@k-dist /src>tar zxvf /root/apache_1.3.27.tar.gz          (↑/rootにDLしたファイルがあるとした場合です)
 
 
PHP等をモジュールとして使うためにOPTIMを先頭に書きその後ろに、./configuerを書きます
オプションは他にありますが、今回は、--enable-module=soだけとします。
 
 
$root@k-dist /src>cd ache_1.3.27 $root@k-dist /apache_1.3.27>OPTIM ="-O2" ./configure --enable-module=so              (「="-O2"」は大文字のOです数字の0ではありません)
 
 
後はおきまりの、これを行えば、インストール完了です。
 
 
$root@k-dist /apache_1.3.27>make $root@k-dist /apache_1.3.27>make install
 
 
 
インストールは以上で終わりです。
Errorがでて、うまく行かないときは、
ディレクトリ権限が無いときやgccなどが入ってなかったりVersionが古かったりします。
確認してください。

起動は
/usr/local/apache/bin/apachectl start
Apache2の場合は
/usr/local/apache2/bin/apachectl start
をすれば起動します。

startはApacheが起動していないときに行い、再起動はrestart、停止はstopとやります。
停止は、必ず、stopで行ってください。kill -9 [httpdpid] でやると、正常に終了されません)

httpd.confをいじると、細かい設定ができます。
 
 
Apache設定へ(作成中)
上へ戻る  戻る
 
Windows(WindowsXP)の場合
 
  まず、Apacheの本家サイトからWindows版Apacheを落としてきます。
2002/11/21現在
 ・Apache1.3.27
 ・Apache2.0.43
が、あります。
Windowsはコンパイル作業がいらないので
インストールプログラムを実行するだけでOKです。
(ソースも公開されているので
 環境さえあればソースを落としてきて
 コンパイルすることも可能です)
インストールする環境はWindows2000やXPの方が良いです。
(Windows98でも動きますが、NT系の方がサービス
 として動いてくれるためです)
落としてきた、ファイルを実行します。
(今回は、apache_1.3.27-win32-x86-no_src.msi)
(以下はwindowsXPでインストールした場合のものです)

以下は、サーバ運用と言うよりは、
サーバにUPする際にローカル上でサイトのデータを
事前確認するために使う こと目的とした場合の方法です。
(私がそう使っているので(^^;))
  Apache2は文字コードの設定が
厳密になったりして設定が
めんどくさいですし、
Apache2が新しくなると
Linux同様
PHPが、モジュールとして
使えなかったり

するので、Apache1.3.27の方を
おすすめします。
(Windowsのモジュール動作は
 微妙ではありますが・・・)
Apache2に追加された
「 AddDefaultCharset」
の設定が非常にめんどくさいです。
"AddDefaultCharset none"
 
にすれば今までどおり
 metaで文字コードを指定すれば
 文字コードで表示されます・・・)
ここでは、Apache1.3.27の
インストール方法についてやります
 
         
         
 
  apache_1.3.27-win32-x86-no_src.msi
を実行すると、左のように出ます。
Nextを押します。
 
         
 
  ここでは、ライセンス等みたいなものを書いてあります。
「I accept〜」(同意する)のラジオボタンを押して
Nextを押します。
 
         
 
  apacheについて書いてあります。
Nextを押します。
 
         
 
  ここでは、Serverの設定を書きます。
Network Domainname
Server Name
にlocalhostと書いてください。
(公開サーバとして動かすならば
 ドメインネームを入力しても
 OKです)

3つ目の入力ボックスは、
e-mailアドレスを書きましょう。

一番下のものは実行権の指定です。
全てのユーザでapacheの実行をできるようにするか
インストールしたユーザのみ実行するかの指定です。

ここはどっちでもかまわないと思います。
(実際サーバとして動かす場合を除く)

終わったらnextを押してください。
 
         
 
  ここでは、インストールタイプ
を指定しています。
Completeのままで良いと思います。

Nextを押します。
 
         
 
  ここでは、インストール先を指定します。
changeを押せば変更できます。
(通常はそのままで大丈夫と思います)

Nextを押します。
 
         
 
  そして、インストールを開始する
趣旨が表示されます。

Installを押します。
そうするとインストールが開始されます。
 
         
 
  Install Wizard Completed
と、出ればインストールは完了です。
WindowsNT系では自動的にApache
がバックグラウンドで動きます。
(Windows2000/XPの場合)
 
         
 
  インストールされると、
スタートメニューに登録されるため
Apacheの
再起動(Restart)や停止(Stop)
はここでおこなえます。
 
         
 
 
インストールは以上で終わりです。
httpd.confをいじると、細かい設定ができます。
 
 
Apache設定へ(作成中)
上へ戻る  戻る
 
 
  • PHPインストール
    • インストールはオプションを大量に付けますが、間違えなければさほど難しくありません。
UNIX(Linux)の場合
 
まず、PHPの本家HPからPHPを落としてきます。
と、いいたいところですが、日本語のバグ等があるようで
software labolatory 'nx' さんの所から、そのバグFIXと国際化パッチあて済みのPHPを落としてきます。
(第2章のダウンロードから落とせます。)
2002/11/21現在
 ・php-4.2.3-multibyte
が、あります。

コンパイル作業時に使う、通常必要ソフトウェアは入ってると思うので
その設定は省きます。
では、次から作業の方法を始めます。

/usr/local/以下にインストールする方法です。
 
 
まず、上記のサイトから落としてきたphp-4.2.3-multibyte.tar.gzを/usr/local/srcに解凍します
 
$root@k-dist /root>cd /usr/local/src
$root@k-dist /src>tar zxvf /root/php-4.2.3-multibyte.tar.gz       (↑/rootにDLしたファイルがあるとした場合です)
 
 
最初の4つのオプションはPHPでマルチバイトの文字やマルチバイト関数を使用する場合必ず必要です。
ここではオプションを改行していますが、実際は改行せずそのまま、続けてスペース区切りで入力してください。
その後、いつもの作業を行えば、インストール完了です。

後、最後にPHPの設定ファイル、php.ini-distを/usr/local/lib/にphp.iniとしてコピーします
 
$root@k-dist /src>cd php-4.2.3
$root@k-dist /php-4.2.3>./configure --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex --enable-zend-multibyte --with-pgsql --with-apxs=/usr/local/apache/bin/apxs $root@k-dist /php-4.2.3>make $root@k-dist /php-4.2.3>make install $root@k-dist /php-4.2.3>cp /usr/local/src/php-4.2.3/php.ini-dist /usr/local/lib/php.ini            (↑PHPの設定ファイルの雛形を/usr/local/lib/にphp.iniとしてコピーする)
 
 
 

[オプション説明]

--with-pgsql
は、postgreSQLがインストールしてあり
PHPからアクセスしたい場合必ず必須です。
(mySQLの場合は --with-mysql)

--with-apxs=/usr/local/apache/bin/apxs
は、Apacheの位置を指定します。(Apacheが入っていることが前提です)

Apache2の場合は、
--with-apxs2=/usr/local/apache2/bin/apxs
となります。
PHPが最新のApache2に対応していないと、これでエラーが出ます
このオプションを付けると、Apacheのモジュールとして動作します。
(モジュール化すると、CGIとは違い、呼び出されるたびにプロセスを生成せず、
 apacheのプロセス内で処理されるためマシンの負荷が軽減されます)

このほかにも多彩なオプションがあります(GDを使用するためにするオプションや
PDFファイルを吐き出せるようにするなど)
./configure --help で英語ですがオプション一覧を見ることが可能です。

私の環境では、GDとnamazuが入っていて、それらをPHPから使いたいため

./configure --enable-mbstring --enable-mbstr-enc-trans --enable-mbregex
--enable-zend-multibyte
--with-pgsql
--with-apxs=/usr/local/apache/bin/apxs
--with-gd --with-ttf --enable-gd-native-ttf
(GD関連関数を使えるようにする)
--with-namazu
(namazu関数を使えるようにする)

としています。 (GDはrpmパッケージをそのまま利用)

 
 
インストールが終わったら、起動設定をします。
Apacheの設定ファイル/usr/local/apache/conf/httpd.conf
(Apache2の場合は/usr/local/apache2/conf/httpd.conf)
テキストエディタで開ます。
そして以下の、設定を書き込みます。
 
203行目あたりにあるにある(Apache1.3.27の場合)、

# Example:
# LoadModule foo_module libexec/mod_foo.so

っと書いてあるところの下に、

LoadModule php4_module libexec/libphp4.so

っと、書き、さらに何行か下の方にいって

DirectoryIndex index.html

っと、書いてあるところの下に、

DirectoryIndex index.html index.htm index.php

っとindex.phpを後ろに追加し、さらに何行か下の方にいって

AddType application/x-tar .tgz
AddType image/x-icon .ico

っと書いてある所の下に

AddType application/x-httpd-php .php

と書く。
 
 
この設定が終わったら、Apacheを再起動(restart)しましょう。
しっかり再起動してくれれば、PHPが動作します。
エラーが出た場合は、いろんな原因が考えられます。
(モジュールの場所がうまく指定されてない、共有関係が壊れているなど・・・・)

そうすることで、PHPが使用可能になります。
 
再起動したら、phpinfo.phpというテキストファイルを作り、

<? phpinfo(); ?>

っと書いて保存し、htdocsなどWebブラウザから見れるディレクトリにコピーして
アドレスをうってみましょう。

http://localhost/phpinfo.php
(phpinfo.txtをApacheのデフォルトWeb公開ディレクトリ/usr/local/apache/htdocs/にコピーした場合)
PHP関係の表示が出たら、PHPは正常に動いています。
−例−

php.iniをいじると、細かい設定ができます。
 
 
PHP設定へ(作成中)
上へ戻る  戻る
 
Windowsの場合
 
まず、PHPの本家HPからPHPのWindowsバイナリーを落としてきます
上のリンクのWindows Binariesという項目の下にある、ファイルを落としてきます。
2002/11/21現在
 ・PHP 4.2.3 zip package(モジュール動作させる場合はこちら/CGIも可能)
 ・PHP 4.2.3 installer(CGIで動かすときのみ)
のどれかを落とします。

そしてこれだけでは、マルチバイト関数の一部が使えないので、
software labolatory 'nx' さんの所から、と国際化パッチあて済みのPHPのWindowsバイナリーを落として来ます。
(第2章のダウンロードから落とせます。)
2002/11/21現在
 ・php-4.2.3-multibyte
が、あります。

コンパイルはこれらがあれば、行う必要はありません。
(Linuxで使ったソースを解凍してVisualC++用のMAKEファイルがあるので、
 それを使ってコンパイルすることも可能なようです)
では、次から作業の方法を始めます。

C:\phpにPHP 4.2.3 zip packageをインストールする方法です。
 
 
 
1.本家から落としてきた、php-4.2.3-Win32.zipをC:\phpに解凍します。
  (phpのフォルダはあらかじめ、作っておきましょう)
2.次に、国際化パッチ済みのものを、解凍します。(別フォルダへ)
  (c:\tempとかで良いと思います)
3.解凍したものを、C:\phpにコピーします(全て上書きをしてください)
4.PHPの設定ファイル、C:\phpの中にあるphp.ini-distをC:\windowsにphp.iniとしてコピーします
5.PHPの実行ファイル、C:\phpの中にあるphp.exeとモジュールファイルphp4ts.dllC:\windows\system32にコピーします
  (Windows9x系の場合はC:\windows\system)

これで、インストールは完了です。

後はPHPを有効にするために、Apacheの設定を変更します。
 
 
インストールが終わったら、起動設定をします。
Apacheの設定ファイル C:\Program Files\Apache Group\Apache\conf\httpd.conf
(Apache2の場合はC:\Program Files\Apache Group\Apache2\conf\httpd.conf)
テキストエディタで開きます
 
[モジュール動作の場合]
192行目あたりにあるにある(Apache1.3.27の場合)、

#LoadModule unique_id_module modules/mod_unique_id.so

っと言うところの下に、

LoadModule php4_module c:/php/sapi/php4apache.dll

と、書き、さらに何行か下の方にいって

AddModule mod_setenvif.c

っと言うところの下に、

AddModule mod_php4.c

っと、書き、さらに何行か下の方にいって

DirectoryIndex index.html index.htm index.php

っと、書いてあるところの下に、

DirectoryIndex index.html index.htm index.php

っとindex.phpを後ろに追加し、さらに何行か下の方にいって

AddType application/x-tar .tgz

っと書いてある所の下に

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

を書く。

[CGI動作の場合]


ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/"

っと、書いてある所の下に

ScriptAlias /php/ "c:/php/"

っと、書き、さらに何行か下の方にいって

DirectoryIndex index.html index.htm index.php

っと、書いてあるところの下に、

DirectoryIndex index.html index.htm index.php

っとindex.phpを後ろに追加し、さらに何行か下の方にいって

AddType application/x-tar .tgz

っと書いてある所の下に

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

っと、書き、さらに何行か下の方にいって

# Format: Action handler-name /cgi-script/location
#

っと、書いてある所の下に

Action application/x-httpd-php "/php/php.exe"

っと、書く。
 
 
この設定が終わったら、Apacheを再起動(restart)しましょう。
しっかり再起動してくれれば、PHPが動作します。

そうすることで、PHPが使用可能になります。
 
再起動したら、phpinfo.phpというテキストファイルを作り、

<? phpinfo(); ?>

っと書いて保存し、htdocsなどWebブラウザから見れるディレクトリにコピーして
アドレスをうってみましょう。

http://localhost/phpinfo.php
(phpinfo.txtをApacheのデフォルトWeb公開ディレクトリC:\Program Files\Apache Group\Apache\htdocshtdocs\にコピーした場合)
(apache2はC:\Program Files\Apache Group\Apache2\htdocshtdocs\)

PHP関係の表示が出たら、PHPは正常に動いています。
−例−

php.iniをいじると、細かい設定ができます。
 
 
PHP設定へ(作成中)
上へ戻る  戻る