PT2導入日記(4日目)
PT2が動くようになったので、録画環境のセットアップに入ります。
[参考]
PostgreSQLのインストール
次は絶対OS入れるときからセットアップしておく。
今回は自力で入れてみます。
$ sudo aptitude install postgresql postgresql-server-dev-8.4
PostgreSQLの設定とデータベースの作成
ここでここで滅茶苦茶詰まったので、先にやっちゃいます。
$ sudo /etc/init.d/postgresql-8.4 stop ←PostgreSQLのプロセスを一旦落とす $ sudo su - ←postgresユーザーになるために一度rootを経由して # su - postgres ←ユーザーを変更 $ cd 8.4 ←移動。このフォルダはPostgreSQLのバージョンになると思う $ mv main main.org ←オリジナルのバックアップ $ mkdir main ←mainを新たに作る $ chmod 700 main ←権限修正 $ /usr/lib/postgresql/8.4/bin/initdb main ←今回はUTF-8でつくることを目指します。 $ exit ←一旦脱出 # ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /var/lib/postgresql/8.4/main/server.crt ←サーバーの鍵を作っておく # ln -s /etc/ssl/private/ssl-cert-snakeoil.key /var/lib/postgresql/8.4/main/server.key ←上に同じく。ないとエラー出た # /etc/init.d/postgresql-8.4 start # su - postgres $ createuser --no-adduser --no-createdb --password foltia ←「新しいロールにロールを作成する権限を与えますか」と聞かれるので多分yで大丈夫なはず $ createdb --owner foltia foltia ←新しいDB「foltia」を作る $ exit ←脱出 # exit ←foltiaに戻る
で、postgresql.confの設定を変える。
- /etc/postgresql/8.4/main/postgresql.conf
$ diff -u postgresql.conf.org postgresql.conf --- postgresql.conf.org 2010-06-24 01:52:09.359155082 +0900 +++ postgresql.conf 2010-06-24 03:54:08.309155099 +0900 @@ -56,7 +56,7 @@ # - Connection Settings - -#listen_addresses = 'localhost' # what IP address(es) to listen on; +listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all # (change requires restart) @@ -446,7 +446,7 @@ # encoding # These settings are initialized by initdb, but they can be changed. -lc_messages = 'ja_JP.UTF-8' # locale for system error message +lc_messages = 'C' # locale for system error message # strings lc_monetary = 'ja_JP.UTF-8' # locale for monetary formatting lc_numeric = 'ja_JP.UTF-8' # locale for number formatting
下側の変更は、ログの出力を英語に切り替えています。
そのままだと文字化けしてしまうので、何のエラーなのか全く分からなくなってしまう罠に陥ってしまったので^^;
[参考]
- Yukiharu YABUKI の tDiary(2010-06-20)
次にアクセス制限関係の設定。
この後にCPANのインストールを行うのだが、PostgreSQLにアクセスするためのモジュールのインストールするときに盛大にコケました。
その原因に、ここでのアクセス制限があったみたいで。。。
詳しくは後のCPANの項目のところで書きます。
とりあえずは以下のDiffを参照。
postgresユーザーに関してtrustしてあげてください。
- /etc/postgresql/8.4/main/pg_hba.conf
$ sudo diff -u pg_hba.conf.org pg_hba.conf --- pg_hba.conf.org 2010-06-27 01:27:45.660458221 +0900 +++ pg_hba.conf 2010-06-27 17:52:31.770458053 +0900 @@ -74,7 +74,7 @@ # (custom daily cronjobs, replication, and similar tasks). # # Database administrative login by UNIX sockets -local all postgres ident +local all postgres trust # TYPE DATABASE USER CIDR-ADDRESS METHOD
あとは忘れないようにプロセスの再起動
$ sudo /etc/init.d/postgresql-8.4 restart
ついでにMuninもPostgreSQLのプラグイン追加しておく。
$ cd /etc/munin/plugins/ $ sudo ln -s /usr/share/munin/plugins/postgres_connections_db ./ $ sudo ln -s /usr/share/munin/plugins/postgres_xlog ./ $ sudo ln -s /usr/share/munin/plugins/postgres_bgwriter ./ $ sudo ln -s /usr/share/munin/plugins/postgres_checkpoints ./ $ sudo ln -s /usr/share/munin/plugins/postgres_users ./
とりあえずありったけ突っ込んで、実際に使えたプラグインが上の通り。
設定したら他のも使えるのかもしれないけど、よく分からんのでとりあえず放置。
あとはプロセスの再起動
$ sudo /etc/init.d/munin-node restart
PHPのインストール
入ってると思ったのに・・・・・・orz
$ sudo aptitude install php5 phpmyadmin phppgadmin php5-pgsql libpq-dev
phpmyadminやphppgadminはセキュリティ上入れない方がよかったかも。
とりあえずAllowの設定を修正しておきます。
- /etc/phpmyadmin/apache.conf
$ diff -u apache.conf.org apache.conf --- apache.conf.org 2010-06-24 01:18:45.169155065 +0900 +++ apache.conf 2010-06-24 01:29:30.769155092 +0900 @@ -6,6 +6,10 @@ Options FollowSymLinks DirectoryIndex index.php + Order allow,deny + Allow from localhost 192.168.1.0/24 + + <IfModule mod_php5.c> AddType application/x-httpd-php .php
- /etc/phppgadmin/apache.conf
$ diff -u apache.conf.org apache.conf --- apache.conf.org 2010-06-27 19:05:31.940458046 +0900 +++ apache.conf 2010-06-27 19:06:38.790458035 +0900 @@ -10,6 +10,7 @@ order deny,allow deny from all allow from 127.0.0.0/255.0.0.0 ::1/128 +allow from 192.168.1.0/24 # allow from all <IfModule mod_php5.c>
phpinfoでPHPがちゃんと生きてるか確認
- /var/www/phpinfo.php
<?php phpinfo() ?>
CPANからPerlモジュールのインストール
[参考]
foltiaを動かすのにいくつかのPerlモジュールが必要になるので、CPANからPerlのモジュールをインストール。
初CPANなので初期設定がいくつか。
$ sudo su - ←rootで作業 # perl -MCPAN -e shell ←cpan shellの起動
自動的に設定しますかと聞かれるが、盛大にエラー吐かれても分からない状態になるので、ここはマニュアル設定。
といってもほとんどデフォルトのままで大丈夫です。
最後に使用するミラーリングサーバーの指定を聞かれるので、このサイトさんを参考にしながら
(1) ftp://ftp.dti.ad.jp/pub/lang/CPAN/ (2) ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/ (3) ftp://ftp.kddilabs.jp/CPAN/ (4) ftp://ftp.nara.wide.ad.jp/pub/CPAN/ (5) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
あたりのどれかを適当に設定します。
(ググってると他の人は候補が自動的に出てくるらしいけど、なぜかうちは自分で打ち込めって言われた。)
あとはモジュールをインストールするだけ
cpan> install YAML ←Foltiaで指定はされてないが、他のパッケージを入れるときにWarningが出るので入れておくと吉。 cpan> install Jcode cpan> install Time::HiRes ←デフォで入ってるかも。 cpan> install Schedule::At cpan> install DBI ←下のDBD::Pgを入れるのに必要。デフォで入ってるかも。 cpan> install DBD::Pg ←PostgreSQLに繋ぐためのモジュール。SQL側からアクセス制限かかってたらインストールするときに間違いなくコケます。 cpan> install DBD::SQLite ←PostgreSQL環境では必要ないが、最新版のFoltiaがSQLite対応したおかげで必要なライブラリとして追加された。これがないとPerlスクリプト群がコケます。 cpan> quit # exit ←rootから出る
あとはずらずらーっとでてくるログを見ながら待つだけ。
ちなみにインストール済みモジュールの一覧を表示させるのはこうするらしい。
$ find `perl -e 'print "@INC"'` -name '*.pm' -print
ついでにPerlDocのインストールもしておく。
$ sudo aptitude install perl-doc $ sudo aptitude install libpg-perl libdbd-pgsql libdbd-pg-perl $ perldoc Tile::HiRes ←ライブラリがインストールされてればこれでマニュアルが見れる。インストールできたかどうかのチェックにもなる $ perldoc perllocal ←CPANのインストール履歴はこうすれば見れる
また、今回はDBD::Pgのインストールの時に相当手こずった。
大事なことはエラーログはちゃんと読むこと。
また、ライブラリが足らずにインストールできなかった事があったのが以下のパッケージ。
$ sudo aptitude install libpq-dev
もしなかったら入れておきましょう。
最後に、インストール済みのCPANモジュールは結構古いものも多いので、アップデートしておいてもいいかもしれません。
cpan> r ←更新可能モジュールの一覧 cpan> upgrade ←すべて更新
ちなみにすべて更新は滅茶苦茶時間かかりました。
Perlから接続テスト
適当にPerlのコードを書いて、PostgreSQLに繋げるかどうかチェックします。
- /home/foltia/connect_test.pl
#/usr/bin/perl use DBD::Pg; $DBDriv = "Pg"; $DBName = "foltia"; $DBHost = "localhost"; $DBPort = "5432"; $DBUser = "foltia"; $DBPass = "foltia"; # DB Connect my $data_source = sprintf("dbi:%s:dbname=%s;host=%s", $DBDriv,$DBName,$DBHost,$DBPort); my $dbh = DBI->connect($data_source,$DBUser,$DBPass) ||die $DBI::error; print "Connection !!\n"; $dbh->disconnect();
ただ繋ぐだけのテストコードです。
$ perl connect_test.pl
これですんなり接続できれば御の字ですが、今回はかなり四苦八苦しました。
DBI connect('dbname=foltia;host=localhost;port=5432','foltia',...) failed: fe_sendauth: no password supplied at test.pl line 15 Died at test.pl line 15. *パスワードが空の場合はこんな風に怒られる。 DBI connect('dbname=foltia;host=localhost;port=5432','foltia',...) failed: FATAL: password authentication failed for user "foltia" FATAL: password authentication failed for user "foltia" at test.pl line 15 Died at test.pl line 15. *パスワードが間違ってるとこんな風に怒られる。
こんな感じで、怒られまくりです。
createuserでユーザーを作った時にパスワードも設定したはずなのに怒られるので、ニッチもサッチも行きません。
とりあえずパスワードを設定して、その通りにコードを書けば繋がりました。
[超参考]
- Ubuntu日本語フォーラム / PostgreSQLの初期設定をしてみました
また、この時点ではPostgreSQLユーザとしてのpostgresはパスワードが設定されていないので
パスワードが必要なログイン方法(passward,md5等)ではpsqlを起動できない。
psqlでのPostgreSQLユーザパスワードの設定
postgres=# alter user ユーザ名 with password 'パスワード';
とありましたので、実際に設定してみました。
$ psql foltia=> alter user foltia with password 'foltia';
これでもう一度connect_test.plを実行して、接続できればOK。
長くなりそうなので、一旦ここまで。
本当に道のりは険しいですorz