Red Hat Enterprise Linux WS で XOOPS 環境を用意してみる
SERVER
Red Hat Enterprise Linux WS
今回は Red Hat Linux にて XOOPS 環境を用意して欲しいとのお話があったので、やってみようと思ったときのお話です。
要求としては Red Hat Linux で Apache 1.3 系に PHP 4.1.1 を組み込み、MySQL 3.23 系を用いて XOOPS を利用できる環境を用意するということでした。他にも細かな指定がありましたけど、どれも Apache の機能だったりして、それはあまり問題視する必要はなさそうです。
そんなこんなでとりあえず Red Hat Linux を入手しようと思ったのですけど、このところ PC 事情には疎かったので気づかなかったのですけど、Red Hat って無償提供ではなくなっていたんですね。
最初はフリーのものを使えとのことだったのですけど、なんだかんだありまして、最終的には手元に Red Hat Enterprise Linux WS Version 3 が届きました。このパッケージはクライアント用のものなので Apache こそ 2.0.46-25.ent がインストールされ、そして PHP 4.3.2-8.ent が組み込まれていますけど、MySQL のような主だったサーバソフトウェアは導入されてはいないのでした。
そもそも Apache は 1.3 系がお望みのようですし、そのあたりのソフトウェアをそろえてみることにしました。
MySQL 3.23.58 のインストール
まずは MySQL をインストールしておこうかと思います。
MySQL のサイトを拝見してみると、3.23 系の最新バージョンは 3.23.58 となっていましたので、それをインストールします。今回は Red Hat Linux へのインストールですし、RPM パッケージにしておこうかと思います。
今回は次の RPM パッケージを入手してインストールしてみることにしました。
- MySQL-3.23.58-1.i386.rpm (x86)
- MySQL-Max-3.23.58-1.i386.rpm (Max, x86)
- MySQL-client-3.23.58-1.i386.rpm (x86, Client programs)
- MySQL-devel-3.23.58-1.i386.rpm (x86, Libraries and header files)
- MySQL-shared-3.23.58-1.i386.rpm (x86, Dynamic client libraries)
これらを入手したら、続いて次のようにこれらを次々とインストールして行きます。
rpm -Uvh MySQL-shared-3.23.58-1.i386.rpm
rpm -Uvh MySQL-3.23.58-1.i386.rpm
rpm -Uvh MySQL-client-3.23.58-1.i386.rpm
rpm -Uvh MySQL-devel-3.23.58-1.i386.rpm
rpm -Uvh MySQL-Max-3.23.58-1.i386.rpm
MySQL-3.23.58-1.i386.rpm のインストールが終わった時点で、MySQL の root アカウントにパスワードを設定せよとのメッセージが表示されました。運用の際にはそのあたりの設定をしっかりとしておくのが良さそうです。
ともあれ、コマンドラインにて "mysqlshow" と入力して、しっかりと Database 一覧が表示されれば、MySQL のインストールは完了したということになるようです。
なおインストールが終わってみると、MySQL の起動用アカウントとして mysql が登録されているようでした。また、再起動時に自動的に MySQL が起動するようになっているとの話を聞いたのですけど、少なくとも自分の今回の環境ではそうはなってはいませんでした。
調べてみると /etc/rc.d/ 関連にはしっかりと登録はされているのですけど、それがすべて起動しないようになっていましたので、ランレベル 2 と 3 と 5 にて起動するようにしておきました。
具体的には、rc2.d/ (ネットワークのないマルチユーザモード), rc3.d/ (テキストログインのマルチユーザーモード), rc5.d/ (グラフィカルログインのマルチユーザーモード) のそれぞれにて、"K90mysql" を "S90mysql" に名前を変更すれば良いようです。そうしてみたところ、とりあえず rc2.d/ では既にスタートするように設定されているようでしたけど、ともあれ再起動直後から正常に MySQL が起動するようになりました。
他に一応、設定ファイルなどを用意しておきましょう。
/usr/share/mysql/ ディレクトリに "my-medium.cnf" という雛形がありますので、それを /etc/ ディレクトリへコピーします。
cp -i /usr/share/mysql/my-medium.cnf /etc/my.cnf
コピーが終わったら、必要に応じて "my.cnf" ファイルの内容を編集します。あとは編集が終わったらその都度、次のようにして MySQL を再起動すれば変更が適用されます。
/etc/init.d/mysql stop
/etc/init.d/mysql start
Apache 1.3.33 のインストール
続いて Apache 1.3 系のインストールを行ってみることにします。
Apache のサイトを拝見してみると、2005/03/08 現在では 1.3.33 が最新版とのことでしたので、サイトより "apache_1.3.33.tar.gz" をダウンロードして、それをインストールしてみることにします。
ダウンロードしたファイルを展開し、コンパイル作業を行います。
tar xvzf apache_1.3.33.tar.gz
cd apache-1.3.33/
./configure --enable-module=most --enable-shared=max
make
make install
オプションに --enable-module=most と --enable-shared=max を付けているのは、こうしておくことで DSO (Dynamic Shared Object) をサポートし、動的にオブジェクトの組み込みが可能になるはずだからです。
あとは /etc/rc.d/rc.local にでも次の行を追加すれば、Linux 起動時に Apache 1.3.33 が自動的に立ち上がるようになります。
/usr/local/apache/bin/apachectl start
PHP 4.3.10 のインストール
そして PHP 4.3.10 を Apache 1.3.33 に組み込みます。
http://www.php.net/downloads.php から "php-4.3.10.tar.gz" をダウンロードしたら展開し、次のようにしてコンパイル作業を行います。
tar xvzf php-4.3.10.tar.gz
cd php-4.3.10/
./configure --with-mysql --with-apxs=/usr/local/apache/bin/apxs
それが終わったらインストールを行い、そして php.ini ファイルを /usr/local/lib/ ディレクトリへ用意します。
make
make install
cp php.ini-dist /usr/local/lib/php.ini
これが終わったらいよいよ Apache 1.3.33 へ組み込みます。
/usr/local/apache/conf/httpd.conf に次の行を追加して、PHP モジュールを読み込ませます。
LoadModule php4_module libexec/libphp4.so
また、同じく /usr/local/apache/conf/httpd.conf の ClearModuleList の行の下に次の行を追加します。なお、この行は Apache 1 系のみ記述が必要とのことでした。
AddModule mod_php4.c
そして同じく /usr/local/apache/conf/httpd.conf へ次の行を登録して、PHP ファイルが処理されるようにします。
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
これで PHP が動作するようになったはずです。
Apache を再起動したら次のような、たとえば test.php ファイルを作成してブラウザ経由で参照してみましょう。
<? phpinfo(); ?>
これでしっかりと処理されて PHP のバージョンと設定内容が表示されれば、Apache の設定は完了ということになります。
ProFTPD 1.2.9 のインストール
XOOPS 環境とは直接的には関係ないのですけど、Red Hat Linux Enterprise WS には FTP サーバソフトウェアも付属していないようですので、今回は ProFTPD 1.2.9 をあわせてインストールしておくことにしました。
ftp://ftp.proftpd.org/distrib/source/ から、2005/03/09 時点での最新バージョンであった "proftpd-1.2.9.tar.gz" をダウンロードします。
そして次のようにして、コンパイルとインストールを行います。
tar xvzf proftpd-1.2.9.tar.gz
cd proftpd-1.2.9/
./configure
make
make install
後は /etc/rc.d/rc.local にでも次の行を記述して、ProFTPD が Linux 起動時に有効になるようにしておきます。
if [ -x /usr/local/sbin/proftpd ]; then
echo "Starting ProFTPD"
/usr/local/sbin/proftpd
fi
あとは少し設定を確認しておきましょう。
/usr/local/etc/proftpd.conf が ProFTPD の設定ファイルですので、必要と思われる箇所があったら修正します。個人的には匿名アクセスは不要と思ったので、<Anonymous> ディレクティブを無効にしました。
他にも DefaultServer の下あたりにでも次の行を入れると、ユーザが自分のホームディレクトリ以下を参照することが出来なくなるのだそうです。
DefaultRoot ~
これはなかなか手軽で、とても安心かもしれないですね。他にも Passive モードのポート制限が PassivePorts にて出来たりするらしくて、これはなかなか気が利いていて良さそうです。
他に自分の環境では "nogroup" グループが登録されていなかったため、proftpd.conf の Group の指定にてエラーとなっていたので、あらためて "nogroup" グループを登録しておきました。
XOOPS を動かしてみる
設定はこれで一通り行えたかと思うのですけど、では実際に XOOPS がインストールできるか実験してみようと思います。
Linux アカウント + Web 周りの設定
まずは Linux 一般ユーザアカウント "xoops_test" を用意して、一連の Web 環境を整えます。"useradd" コマンドによってホームディレクトリが自動的に作られるようでしたので、後はパスワードを設定しておけば Linux アカウントまわりについては完成です。
useradd -g users -d /home/xoops_test -s /bin/bash xoops_test
passwd xoops_test
ただ Apache 1.3.33 のディフォルトでは、各ユーザディレクトリの </home/*/public_html> ディレクティブがコメントアウトされていたので、そのコメントを取って /~xoops_test/ にて正常に Web を参照できるようにしておきました。
そうしても上手く行かなかったのですけど、調べてみると useradd が作成したディレクトリは、その所有者以外は読み取りさえも出来ないようになっていました。ですので Apache (nobody) が読み取れるようにパーミッションを調整します。
chmod +rx xoops_test/
これで "drwxr-xr-x" という権限になり、Apache から public_html/ ディレクトリ内のドキュメントが表示できるようになります。
MySQL の設定
つづいて MySQL にデータベースを作成します。
"mysql -u root" として MySQL へ接続して、xoops_test データベースを作成します。その際にこのデータベースへアクセスするためのアカウントとして "xoops_user" を登録してみることにします。
create database xoops_test;
grant all on xoops_test.* to xoops_user@localhost identified by 'password';
XOOPS のインストール
では、XOOPS をインストールしてみます。
ダウンロードした XOOPS 2.0.9.2 の html/ ディレクトリ内のファイルをアップロードして、uploads/, cache/, templates_c/ ディレクトリと mainfile.php ファイルを Apache が書き込み可能なように設定します。
そうしたら、ブラウザからそのアップロードしたディレクトリ (の index.php) へアクセスすると、XOOPS のインストール手続きが始まりました。後は手順どおりに進めてみると、ファイルも書き込めましたし、MySQL へもアクセスできましたし、そして XOOPS サイトも正常に表示できたので、環境は無事用意されたということになるのでしょう。