このページも編集禁止にだぁ〜! もうwikiじゃねーな :)
話が長くなるんでDebian GNUから独立して専用のページ作りました。「話が長くなる」つまり旨くいってないってことです。
既にDebian GNU>2004.2.16でうpしてあるが、PHPのインスコは以下の通り。(多少はしょってます)でも下にあるようにいったん削除してPostgreSQLをインスコしたあとにまたインスコし直しています。
# LoadModule php4_module /usr/lib/apache/1.3/libphp4.so行頭#をコメントアウト
And for PHP 4.x, use: # #AddType application/x-httpd-php .php #AddType application/x-httpd-php-source .phps
#AddType? application...の2行の行頭#をコメントアウト
apacheをリスタートさせると...
おぉ! 成功だ!
既にDebian GNU PHP+PostgreSQLにうpしてあるが、postgresqlのインスコは以下の通り(例によってはしょってたり追記してあったり)
ってことでとりあえず実験鯖=ThinkPad?にお手軽にapt-get install postgresqlで同時にpostgresql-clientもインスコされた。
どうやらここをみると順番的にはpostgresql>apache>phpってことで、しかもソースからコンパイルして云々しないと
PHP のコンパイル時には PostgreSQL のライブラリが必要だからってことらしい。漏れの鯖にはすでにphpがインスコされているが平気なのだろうか?
よくわからないからphp4を削除してから上記を実行した。
postgresqlのインスコ途中でencodingがどうのこうの聞かれるので
Enter default encoding (SQL_ASCII): EUC_JP You have the following locales enabled in your system: ja_JP.eucjp
とした。するってーとdebianは下記の通りスーパーユーザー=posgtresのDirectoryやら何やら自動的に作ってくれて、インスコ後postgresqlサーバーを起動してくれますです。
The files belonging to this database system will be owned by user "postgres". This user must also own the server process. Fixing permissions on existing directory /var/lib/postgres/data... ok creating directory /var/lib/postgres/data/base... ok creating directory /var/lib/postgres/data/global... ok creating directory /var/lib/postgres/data/pg_xlog... ok creating directory /var/lib/postgres/data/pg_clog... ok creating template1 database in /var/lib/postgres/data/base/1... ok creating configuration files... ok initializing pg_shadow... ok enabling unlimited row size for system tables... ok creating system views... ok loading pg_description... ok vacuuming database template1... ok copying template1 to template0... ok Success. You can now start the database server using:
念のためps auxで確認
postgres 586 0.0 2.9 9460 1812 pts/0 S 06:16 0:00 /usr/lib/postgresql/ postgres 588 0.0 2.9 10452 1792 pts/0 S 06:16 0:00 postgres: stats buff postgres 590 0.0 2.9 9504 1828 pts/0 S 06:16 0:00 postgres: stats coll
まずはsuでrootになってから
debian:/home/yasu# su - postgres postgres@debian:~$ コレでpostgresqlのスーパーユーザになります。
次に一般ユーザーを作成。名前は何でも良いが一応UNIXユーザーと同一にします。
postgres@debian:~$ createuser Enter name of user to add: yasu Shall the new user be allowed to create databases? (y/n) y # DBの作成権限をユーザーyasuにも与えます。 Shall the new user be allowed to create more new users? (y/n) n # ユーザー作成権限は通常与えません。 CREATE USER
これでユーザー作成完了。一般ユーザーに戻ります.
postgres@debian:~$ exit postgres>root logout debian:/home/yasu# exit root>yasu exit yasu@debian:~$
続いてデータベースの作成。
yasu@debian:~$ createdb CREATE DATABASE
引数を与えなければログインユーザー名のデータベースを作成します。ちゃんと作成されたか確認します。
yasu@debian:~$ psql -l List of databases Name | Owner | Encoding -----------+----------+---------- template0 | postgres | EUC_JP template1 | postgres | EUC_JP yasu | yasu | EUC_JP (3 rows)
データベースが作成されましたが中身は空のままなので、Apache + PHP + PostgreSQL laboratoryを参考にテーブルを作成してデータを入力します。
yasu@debian:~$ psql yasu Welcome to psql, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit yasu=> create table meibo ( yasu(> name varchar(30) not null, yasu(> age integer, yasu(> address varchar(80)); CREATE
テーブルが作成できたのでデータを入力。
yasu=> insert into meibo values ( yasu(> 'yasu jota', yasu(> 40, yasu(> 'Tokyo dokoka 1-2-3'); INSERT 16561 1
入力したデータの確認
yasu=> select * from meibo; name | age | address -----------+-----+-------------------- yasu jota | 40 | Tokyo dokoka 1-2-3 (1 row)
ちゃんと入力されています。
/etc/postgresql/pg_hba.confを編集してリモートからも受け付けるようにしておきます。
local all ident sameuser host all 127.0.0.1 255.0.0.0 ident sameuser host all 0.0.0.0 0.0.0.0 reject
を
local all trust sameuser host all 127.0.0.1 255.0.0.0 ident sameuser host all 192.168.1.0 255.255.255.0 trust sameuser host all 0.0.0.0 0.0.0.0 reject
とします。ここには
Windowsマシンからアクセスするには,別途libpq.dllが必要です
とありますがlibpq.dllって何でしょう?
PHP+PostgreSQLサーバ出来るようにするためにphp4-pgsqlをapt-get installします。
I see you have apache webserver installed and so far you haven't used the apache module version of php4 in your apache. If you want to use it, you should reconfigure the apache webserver and select to load the php module. I can call the apacheconfig script now for you to do it, or you can insert the following line into /etc/apache/httpd.conf manually: LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
Do you want me to run the apacheconfig script now [y/N] ? y Finding DSO mods........................................found.
DebianがLoadModule? php4_module /usr/lib/apache/1.3/libphp4.soを/etc/apache/httpd.confに書き足してくれます。
Save these changes to the configuration files? [Y/n] Y Rotated `/etc/apache/httpd.conf' at 2004年 3月 17日 水曜日 00:16:03 JST. Restart Apache now? [Y/n] Y Stopping apache with apachectl ... done. Waiting for apache to terminate ... done. /usr/sbin/apachectl start: httpd started php4-pgsql (4.1.2-4) を設定しています ... You are installing PostgreSQL support for php4, but it's not enabled in your /etc/php4/apache/php.ini. To enable it you need to add this line: extension=pgsql.so Do you want me to add it now [Y/n] ? PHPがPostgreSQLをenableにするためY
以上でphp4-pgsqlのインストールは終了。
まずはを/etc/apache/httpd.confを確認しましたが、LoadModule? php4_module /usr/lib/apache/1.3/libphp4.soは追記されていましたが、コメントアウトされてなかったので。
# LoadModule eaccess_module /usr/lib/apache/1.3/mod_eaccess.so LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
としました。それからphp4に関係しそうな箇所AddType? application...の2行も以下のようにコメントアウトしました。
# And for PHP 4.x, use: # AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
続いてextension=pgsql.soの確認。php4はまだインストールしていませんが、/etc/php4/apache/php.iniが作られています。中身を早速確認。PostgreSQLに関係しそうな箇所は
[PostgresSQL] ; Allow or prevent persistent links. pgsql.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. pgsql.max_persistent = -1
となっていました。そして一番最後に
extension=pgsql.so
が書き込まれています。/etc/php4/apache/php.iniでは「;」がコメントアウトを意味しているモノと思われ。
続いてphp4のインスコ。
debian:/home/yasu# apt-get install php4 Reading Package Lists... Done Building Dependency Tree... Done Sorry, php4 is already the newest version. 0 packages upgraded, 0 newly installed, 0 to remove and 62 not upgraded.
あれ? どうやらphp4-pgsqlをインスコしたときに一緒にインストールされて様です。考えてみれば当たり前のことでphp4が無ければphp4-pgsqlが意味をなさないわけで、上記の通り/etc/php4/apache/php.iniが作られたわけです。まだまだ初心者の漏れ>笑ってやって下さい。
debian:/home/yasu# dpkg -l 'php4' 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)維持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール |/ エラー=(空欄)無/(H)維持/(R)要再インストール/X=両方(状態,エラーの大文字=異常) ||/ 名前 バージョン 説明 +++-==============-==============-============================================ ii php4 4.1.2-6woody3 A server-side, HTML-embedded scripting langu
ちゃんとインスコされてますね。
php4の動作テストはphpinfo。ソースは
<? phpinfo() ?>
と記述したファイルをphpinfo.phpとして/var/www/に保存して、念のためapacheを再起動させてからブラウザで確認します。
おぉ!成功のようです。どうやらPHPは機能しているようです。phpinfoにpgsqlがあればpgsqlも機能しているとのことで最後の方にはちゃんとpgsqlが表示されています。
以下Debian GNU/PHP+PostgreSQL/動作確認に続く。