Linux 設定日記

設定したことを忘れないように書いてあります。

2006.06.20
phpgroupwareのインストール

まずは、phpgroupwareの公式ページからソースをもってくる。 インストールの詳細はそこにかいてあるので、主にVine 3.1に特化した部分のみ記載の方向で。

tarballからインストール。apache2のユーザーは、デフォルトのままなので、chown -R apache:apacheとした。 その後、postgres関係の postgresql、postgresql-server、php5-pgsqlをapt-getする。 php5-pgsqlをインストールしたら、sqlite3,php5-pdoがインストールされた。 もともと、php5と、postgresql-libはインストール済みだったが、依存性がありそう。

次に、postgressのインストールと初期化。方法は前回のと同じ。 起動したあと、自分にdbの作成権限の付与とphpgroupwareのユーザーを作成する。 phpgroupwareのパスワードは記念日とした。何をいっているかわからないと思うが俺にはわかるのだ。

$su - postgres
-bash-2.05b$ createuser myaccount
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) y
CREATE USER
-bash-2.05b$ createuser -P
Enter name of user to add: phpgroupware
Enter password for new user: 
Enter it again: 
Shall the new user be allowed to create databases? (y/n) n  
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
b$ 

次に、pg_hba.confとpg_ident.confを修正。場所は、/var/lib/pgsql/data/配下。と思ったけど、all allにたいしてtrustだったのでそのまま。 ちなみに、公式ページのインストール方法は間違ってないか?。phpgroupwareのあとに、phpgroupwareがもう一つ必要では?

続いてファイル管理などのディレクトリ作成。気分の問題だが、/var直下ではなく/var/libにした。

# mkdir -p /var/lib/phpgw/files/home
# mkdir -p /var/lib/phpgw/files/img
# chown -R apache:wheel /var/lib/phpgw/files/
# chmod -R 770  /var/lib/phpgw/file

apacheとpoundの設定にvertual hostを追加する。

準備完了と思いきや、phpはapache2から利用できるようになっていなかったため、php5-apache2をインストールしたところ、

#/etc/init.d/apache2 restart
httpdを停止中:                                             [失敗]
httpdを起動中: [Tue Jun 20 21:53:46 2006] [crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
Pre-configuration failed                                   [失敗]
# 

となってしまう。どうやら、スレッドセーフでは無いようだ。しかたがないので、workerではなく、preforkを使う。

# /sbin/update-alternatives --config apache2

There are 4 alternatives which provide `apache2'.

  Selection    Alternative
-----------------------------------------------
*+    1        /usr/sbin/apache2.worker
      2        /usr/sbin/apache2.prefork
      3        /usr/sbin/apache2.threadpool
      4        /usr/sbin/apache2.perchild

Press enter to keep the default[*], or type selection number: 2
Using `/usr/sbin/apache2.prefork' to provide `apache2'.

今度は無事に起動した。phpgroupwareの設定をwebから行う。 ヘッダの設定をした後、コンフィギュレーションを実行すると

データベースが存在しません。
データベースの作成とアカウントに権限を与えます.

PostgreSQLでデータベースを作成するには:
postmaster の起動
[user@server user]# postmaster -i -D /home/[username]/[dataDir]
空のデータベース作成 -
[user@server user]# createdb phpgroupware
または、下記項目にDB管理者アカウント情報を設定することで、データベースを作成することもできます。

という画面になる。/var/lib/pgsql/data/postgresql.conf中の

#tcpip_socket = false

tcpip_socket = true

としなければならないようだ。再度設定すると、テーブルの作成画面が無事表示された。

2006.03.02
Apache2のmod_auth_mysqlがうまく動作しない

旧サーバではmod_auth_mysqlでデータベース認証しており、今回もその設定で新サーバーに移行した。 だが、mod_auth_mysqlのディレクティブが変わっていたため、apacheが起動しなかった。下記に差異を記載。

コメント
AuthMySQLDB auth_db_name Auth_MySQL_General_DB auth_db_name 旧に相当する物もあるが、vertiual_host毎に設定するこちらが推奨。
AuthMySQLHost host_name Auth_MySQL_Info host_name db_username db_password
AuthMySQLPassword db_password
AuthMySQLUser db_username
AuthMySQLCryptedPasswords On | Off Auth_MySQL_Encryption_Types Crypt_DES On|Off指定のディレクティブ残っているが、こちらが推奨。Crypt_DES以外にPlaintext,Crypt_MD5等が選択できる。On|Off形のディレクティブでは、Crypt_DESとなる。
AuthMySQLUserTable table_name_of_username&password Auth_MySQL_Password_Table table_name_of_username&password user_tableからpassword_tableに名前が変更されている。
AuthMySQLNameField field_name_of_username Auth_MySQL_Username_Field field_name_of_username 機能に変更はないが、アンダースコアでディレクティブが区切られている。
旧形式もあるが、新しくした方が良い?
AuthMySQLPasswordField field_name_of_password Auth_MySQL_Password_Field field_name_of_password
AuthMySQLGroupField field_name_of_group_table Auth_MySQL_Group_Field field_name_of_group_table
AuthMySQLGroupTable group_table_name Auth_MySQL_Group_Table group_table_name

で、それがわかるまでいろいろと調査していたら、mysqlのdebian-sys-maintというユーザーアカウントがなくなってしまった。 仕方がないので、mysqlのrootアカウントで入ってdebian-sys-maintアカウントを再度作成する。

このアカウントがないと、reloadやシャットダウンができない。

mysqlのrootユーザーで入り、

mysql>\u mysql
mysql>GRANT reload,shutdown ON *.* TO 'debian-sys-maint'@localhost IDENTIFIED BY PASSWORD 'PASSWORD' WITH GRANT OPTION;

として、ユーザーを作成する。PASSWORDは、/etc/mysql/debian.cnf 中の password=となっている部分をそのまま転記する。

2006.02.28
ソフトウェアRAID-5でGO

タイトルに行き詰まってしまった。

会社のサーバーを更新するために、入れ替え用のサーバーを構築中。 このサーバーはSCSIディスクが3本入るのだが、ミラーリングでは奇数で美しくないし、ディスク容量ももったいない。

ということで、RAID-5で構成することにした。

インストールの方法は、前回と同じ。 /dev/sdaに通常にインストールして、/dev/sdbと/deb/sdcでRAID-5を作成し、/dev/sdaから/dev/mdへコピーする。 ただ今回は、debianで構築したため、raidtoolsではなく、mdadmでRAIDを構成した。

apt-getでmdadmをインストール。インストールスクリプトに対しては、自動起動:YES、デーモン通知:YES、通知先:rootとして設定。

mdadmでは、RAID-5を次のようにして設定。/dev/sdbと/dev/sdcでRAIDを構成し、1台をmissingと指定しておく。

mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdb2 /dev/sdc2 missing

つぎに、mdadm.confを作成。

echo 'DEVICE /dev/hd*[0-9] /dev/sd*[0-9]' > /etc/mdadm/mdadm.2006XXXX.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.2006XXXX.conf
ln -sf /etc/mdadm/mdadm.2006XXXX.conf /etc/mdadm/mdadm.conf

で、ファイルシステム作成、コピー、liloの書き込み、リブートは、前回と同様 に進んで、完了。

ところが、カーネルを2.6系にリビルドしたら、liloが書き込めない。RAID-5には対応していないとメッセージが出る。 仕方がないので、一度RAIDを戻して、/bootのみRAID-1にして再作成。

まずは、RAID-5から/dev/sda1を外す。コマンドは、mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1。 一度FAILに指定してからでないと、RAIDからは外せない。

fdiskで、当該のパーティションタイプをfdから83に戻し、mkfs -t ext3 /dev/sda1と再フォーマット。 適当な所にマウントしてコピーし、忘れずにliloを再度アップデートしてリブート。

mdadm -S /dev/md0として、/bootのRAIDを解除、

mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 /dev/sdb1 /dev/sdc1 missing

してからmirrorで再作成。あとはさっきと同じようにRAIDを構成し、mdadm /dev/md0 -a /dev/sda1で/dev/sda1を/dev/md0に追加。 /dev/sdaはspareデバイスとして指定。作成状態を mdadm --detail /dev/md0 みるとこんな感じ。

/dev/md0:
        Version : 00.90.01
  Creation Time : Mon Feb 20 18:42:01 2006
     Raid Level : raid1
     Array Size : 497856 (486.19 MiB 509.80 MB)
    Device Size : 497856 (486.19 MiB 509.80 MB)
   Raid Devices : 2
  Total Devices : 3
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Feb 20 18:52:36 2006
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           UUID : fa096455:9a2e92cd:1b3b4217:049e6348
         Events : 0.277

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

       2       8        1        -      spare   /dev/sda1
2006.02.01
namazuをupdate

全文検索システム Namazuが、(セキュリティ対応を除くと)1年9カ月ぶりにUpdateされた。 今回の個人的な目玉は、和布蕪(MeCab)の対応。

namazuを使っているシステムは事情により、Vine 2.6ベースで動いている。 根本的なupdateはできないので、Vine SeedからMeCab-0.81のSRPMをとってきてRPMを作成し、 インストール。先にMeCabをインストールしておかないと、namazuの作成時に検出されず、MeCabか利用できない。 namazuはVine 2.6に入っているnamazu-2.0.12のSRPMからnamazu2.specを借用して作成した。

ここまでは特に問題なくすんだが、namazu-2.0.15をいれようとすると、libnmz.so.3がphp4と依存関係にあると出てインストールできない。 新しいパッケージにはlibnmz.so.7しかないからだ。

仕方がないので、libnmz.so.3を退避してから、nodepsオプション付きでnamazuをupdateした。

これで、MeCab対応のnamazuができたと喜んで試したが、いま一つ速度がでない。 MeCabのperl moduleをインストールしていないのが原因だった。 mecab-perl-0.81を、make / installしてから再度namazuのRPMを作成しインストールしたところ、kakasiの倍程度の速度となった。