DELL Latitude CPM233XTにLinux(RedHat7.1)をインストールする

DELL Latitude CPM233XTへのLinux(RedHat7.1)インストール

 Windows2000で自宅サーバを運用して,Internetに公開していたのですが,ハード的に壊れてしまいました.

それで急遽,Linuxマシンをサーバに仕立て上げることにしました.


今回使ったハード/ソフト

  • 本体: DELL Latitude CPM233XT (MMX Pentium 233MHz, メモリ 96MB, HD 4GB)
  • LANカード: Corega PCC-TXF, Planex FNW-3600-T
  • Linux: RedHat 7.1J
  • Apache 1.3.20
  • JDK 1.3.1
  • Tomcat 3.2.3

サーバということで,サウンドはとりあえず使わないので,無視しました.

サーバとして必要な要件

  • ADSL(NTTフレッツ)常時接続して,宅内LANとのゲートウェイになる
  • IPマスカレードで,宅内LAN上のマシンから自由にInternetへアクセス
  • Webサーバ(Apache)が稼働して,Internetからアクセスできる
  • サーブレットエンジン(Tomcat)が稼働して,Internetからアクセスできる
  • メンテナンスのために,宅内LANのマシンからtelnet,ftp接続可能.Internetからは不可


Linuxのインストール

 DELL Latitude CPM233XTへのRedHat6.2インストールでやったような手順で, インストールしました.

で,インストール後再起動すると,PCカードデバイスが認識されませんでした.

# rpm -aq | grep pcmcia

で調べると,pcmciaのパッケージが入っていませんでした.そこで,CD-ROMから

# rpm -Uvh kernel-pcmcia*.rpm

でインストールしときました.

# service pcmcia start

でPCカードのサービスを起動し,/var/log/messages の内容を見ると,以下のようにLANカードは2枚とも認識されていました.

/var/log/messages

  ・・・
Sep 15 12:00:35 localhost cardmgr[566]: starting, version is 3.1.22
Sep 15 12:00:35 localhost cardmgr[566]: watching 2 sockets
Sep 15 12:00:35 localhost kernel: cs: IO port probe 0x0c00-0x0cff: clean.
Sep 15 12:00:35 localhost kernel: cs: IO port probe 0x0100-0x04ff: excluding 0x210-0x217 0x220-0x22f 0x290-0x297 0x378-0x37f 0x388-0x38f 0x4d0-0x4d7
Sep 15 12:00:35 localhost kernel: cs: IO port probe 0x0a00-0x0aff: clean.
Sep 15 12:00:35 localhost cardmgr[566]: initializing socket 0
Sep 15 12:00:35 localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
Sep 15 12:00:35 localhost cardmgr[566]: socket 0: Level One 10/100 Fast Ethernet
Sep 15 12:00:35 localhost cardmgr[566]: executing: 'modprobe 8390'
Sep 15 12:00:35 localhost cardmgr[566]: executing: 'modprobe pcnet_cs'
Sep 15 12:00:36 localhost cardmgr[566]: executing: './network start eth0'
Sep 15 12:00:36 localhost kernel: eth0: NE2000 (DL10022 rev 05): io 0x300, irq 3, hw_addr 00:90:CC:13:62:26
Sep 15 12:00:36 localhost netfs: Mounting other filesystems:  succeeded
Sep 15 12:00:36 localhost cardmgr[566]: initializing socket 1
Sep 15 12:00:36 localhost cardmgr[566]: socket 1: Corega FEther PCC-TXF
Sep 15 12:00:36 localhost kernel: eth1: NE2000 (DL10022 rev 30): io 0x320, irq 9, hw_addr 00:90:99:20:1E:28

Planexの方がeth0で,Coregaの方がeth1になっています.


ADSL接続の設定

 RedHatのCD-ROMから,ppprp-pppoeのRPMをインストールします. で,

# adsl-setup

を実行します.ここで質問に答える形で,接続するプロバイダのアカウント情報や, ADSLモデムに繋がっているLANカードのデバイス名(eth0など)を入力すれば,設定OKです.

adsl-startで接続,adsl-stopで切断できるようになりますし,質問への答え方によっては, スタートアップとシャットダウン時に自動的に接続,切断するような設定にもできます.

これはかなり便利です.ウホホ


telnet,ftpサーバ

 これは前回と同じようにtelnet-serverとwu-ftpdのRPMをCD-ROMからインストールして, TCP Wrapperの設定をするのですが,1つだけ違いがあります.xinetdの設定です.

RedHat7.1では(7.0もか?),これまでのinetdに替わってxinetdが登場します. 設定方法が変わるので少し戸惑いますが,結構わかりやすいんじゃないかな.

/etc/xinetd.d/ 配下に各サービスに対応した設定ファイルがあります.

$ ls /etc/xinetd.d
chargen  chargen-udp  daytime  daytime-udp  echo
echo-udp  telnet  time  time-udp  wu-ftpd

telnetの中身はこんな感じです.

/etc/xinetd.d/telnet

service telnet
{
         flags           = REUSE
         socket_type     = stream
         wait            = no
         user            = root
         server          = /usr/sbin/in.telnetd
         log_on_failure  += USERID
         bind            = 192.168.0.254
         only_from       = 192.168.0.0/24
#        disable         = yes
}

この最後の行(disable=)の頭に#を入れて,コメント化しておきます.disableでは動かない訳です.

/etc/xinetd.d/wu-ftpdも同様です.

余談ですが,「user=root」という記述で想像がつきますが,ここでユーザーベースのアクセス制御を行うことが出来ます.

user=root

の記述で,rootのtelnet接続を禁止するという意味です.

2001.12.05 追加

bind : ネットワークインタフェイス指定 
 あと「bind=192.168.0.254」で,宅内LANからしか接続できないようになります.今回,宅内LANにつなげているネットワークカードには,192.168.0.254というprivateなIPアドレスを与えているのですが,ここ経由でしか接続できなくなるというわけです. 

only_from : 接続元アドレス指定 
 さらに「only_from=192.168.0.0/24」で,宅内LANのIPアドレスからしか接続できなくなります. 
こんな感じで,ホストベースのアクセス制御もできてしまいます.特にbindは,セキュリティ上かなり使えますぜ旦那. 
この変更後,

# service xinetd restart

でxinetdを再起動すれば,telnet, ftpで別のマシンからつなげるようになります.


IPマスカレード

 いよいよ核心です.

RedHat7.1というか,カーネル2.4では,iptablesというモジュールを使ってNAT, IPマスカレード,パケットフィルタリングを行います.2.2ではipchainsだったらしいですが.

とりあえず,ややこしいことを避けるために,そのipchainsをはずしました.

# rmmod ipchains

# chkconfig --level 2345 ipchains off

そしてIPマスカレードの設定に移りますが,以下の4行で済みました.

# modprobe iptable_nat

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# echo 1 > /proc/sys/net/ipv4/ip_forward

# service iptables save

何と,Windows2000 Serverより簡単ではないか!

(とは言いつつ,ipchainsを外すのに気づくまで半日ぐらいハマっていたのですが...device busyとか言われて...)


Apacheのコンパイル,インストール

 www.apache.org から,Apacheの最新版(apache_1.3.20.tar.gz)をダウンロードしてきました. で,早速makeしようと思ったのですが,開発系のRPMが入っていなかった...

  • gcc
  • cpp
  • binutils
  • glibc-devel

は必要です.CD-ROMからRPMをインストールします.

そして,

$ ./configure --enable-module=so

のあと,

$ make

でコンパイル.さらに

# make install

でインストールです.

enable-module=so ですが,これは後でTomcatと連携するために必要です. Tomcatとの通信でDSOという仕組みを使うため,mod_soがApacheに組み込まれている必要があるのです.
(ここもはまりました.)

あと,自動起動させるために,例えばこんなシンボリックリンクを作ったりして.

# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/rc2.d/S80httpd
# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/rc3.d/S80httpd
# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/rc5.d/S80httpd
# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/rc0.d/K30httpd
# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/rc1.d/K30httpd
# ln -s /usr/local/apache/bin/apachectl /etc/rc.d/rc6.d/K30httpd

さらに,ログファイルのローテイト用のスクリプトを書く. これは,適当なタイミングで実行します.手動でも,cronなんか使って自動でも宜し.

/usr/local/apache/bin/mylogrotate

#!/bin/sh
 
APACHE=/usr/local/apache
APACHELOG=$APACHE/logs
 
PREFIX=`date +%Y%m%d`
 
$APACHE/bin/apachectl stop
 
mv $APACHELOG/access_log $APACHELOG/$PREFIX\_access.log
mv $APACHELOG/error_log $APACHELOG/$PREFIX\_error.log
 
$APACHE/bin/apachectl start


Tomcatのインストール,Apacheとの連携

 ふぅ,あと一息.最後の大物,Tomcatですニャー.

JDKのインストール (JDK 1.3.1)

 まず,Java環境を構築する必要があります.そこでJDKの最新版をSunからダウンロードしてきます. ダウンロードしてきた j2sdk-1_3_1-linux-i386-rpm.bin を,chmod a+x して実行します.

すると jdk-1.3.1.i386.rpm というRPMができあがりますので,

# rpm -Uvh jdk-1.3.1.i386.rpm

でインストールします./usr/java/ 配下にインストールされます.JavaはこれでOK.

Tomcatのインストール (Tomcat 3.2.3)

 次は,Tomcatの最新版をダウンロードしてきます.

ダウンロードしてきた jakarta-tomcat-3.2.3.tar.gz を,gzip -dv で解凍し, /usr/local/ 配下で展開します.そしてtomcatなんちゃらという長いディレクトリ名を,tomcat に変更しておきます.

で,Tomcat環境をキープするためのユーザを作ります.(注)ここらへんは人それぞれだと思います...

# adduser tomcat

そして,/usr/local/ に入って

# chown -R tomcat.tomcat tomcat
# chmod a+x tomcat/bin/*.sh

として,Tomcat関係ファイルをユーザtomcatの所有,また用意されているシェルスクリプトに実行属性を付けときます.

次に,環境変数,ユーザtomcatのホームディレクトリ /home/tomcat/ にある .bash_profille を編集して, 以下の行を追加しておきます.

TOMCAT_HOME=/usr/local/tomcat ; export TOMCAT_HOME
JAVA_HOME=/usr/java/jdk1.3.1 ; export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin

疲れて来ました.そして次のようなtomcat制御用のスクリプトを用意します.

/usr/local/tomcat/bin/tomcatctl

#!/bin/sh
 
. /etc/rc.d/init.d/functions
. /home/tomcat/.bash_profile
 
# See how we were called.
case "$1" in
   start)
         echo -n "Starting tomcat: "
         daemon $TOMCAT_HOME/bin/startup.sh
         echo
         ;;
   stop)
         echo -n "Shutting down tomcat: "
         daemon $TOMCAT_HOME/bin/shutdown.sh
         echo
         ;;
   restart)
         $0 stop
         $0 start
         ;;
   *)
         echo "Usage: $0 {start|stop|restart}"
         exit 1
esac
 
exit 0

 最後に,tomcatを自動起動するためのシンボリックリンクを作ります.

# ln -s /usr/local/tomcat/bin/tomcatctl /etc/rc.d/rc2.d/S80tomcat
# ln -s /usr/local/tomcat/bin/tomcatctl /etc/rc.d/rc3.d/S80tomcat
# ln -s /usr/local/tomcat/bin/tomcatctl /etc/rc.d/rc5.d/S80tomcat
# ln -s /usr/local/tomcat/bin/tomcatctl /etc/rc.d/rc0.d/K30tomcat
# ln -s /usr/local/tomcat/bin/tomcatctl /etc/rc.d/rc1.d/K30tomcat
# ln -s /usr/local/tomcat/bin/tomcatctl /etc/rc.d/rc6.d/K30tomcat

TomcatとApacheの連携のための作業 (mod_jk, AJP 1.3)

 まず,

# /usr/local/tomcat/bin/tomcatctl start

でtomcatを開始します.そして,/usr/local/tomcat/conf/ 配下で,

# cp mod_jk.conf-auto mod_jk.conf-linux

とします.この複製後のファイル(mod_jk.conf-linux)をApacheに読み込ませて,tomcatへの要求転送をやってもらうことになります.

この mod_jk.conf-linux をviなどのエディタで開いて,以下の行を変更します

JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /examples/servlet/* ajp13
JkMount /examples/*.jsp ajp13

ajp12となっていた箇所を,ajp13に変更しています.AJPはApache-Tomcat間の通信プロトコルで, 新しいものを使おうというわけですが,私はあまりよく調べていません.

Tomcatをダウンロードするときに,

  • mod_jk-noeapi.so
  • mod_jk-eapi.so

というファイルもあったと思います.これらを,/usr/local/apache/libexec/ にコピーして, chmod a+x で実行属性を付けておきます. そして,

# ln -s /usr/local/apache/libexec/mod_jk-noeapi.so /usr/local/apache/libexec/mod_jk.so

とでもリンクを作って,mod_jk.so という名前でnoeapiの方を参照できるようにしておきます.

次に,Apacheの設定ファイル(httpd.conf)をいじります. 最後の行にでも,

include /usr/local/tomcat/conf/mod_jk.conf-linux

という記述を追加しておきます.これで,ApacheがTomcatとの通信用のモジュール(mod_jk.so)を, 動的にロードするようになります.

念のため,設定テストをやっときます.

# /usr/local/apache/bin/apachectl configtest

エラーが出なければ,OKです.

次に,Tomcat側の設定ファイルもいじります.

/usr/local/tomcat/conf/workers.properties を,以下のように変更します.

workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/java/jdk1.3.1
ps=/

また,同じくconf/ の server.xmlに,以下の内容を挿入しときます.Connector記述のあたりにでも.

<Connector className="org.apache.tomcat.service.PoolTcpConnector">
 <Parameter name="handler"
  value="org.apache.tomcat.service.connector.Ajp13ConnectionHandler"/>
 <Parameter name="port" value="8009"/>
</Connector>

以上!

# /usr/local/tomcat/bin/tomcatctl stop

でtomcatを止めて,

# /usr/local/apache/bin/apachectl restart
# /usr/local/tomcat/bin/tomcatctl start

で,Apache,Tomcatの順に起動.

http://<host_name>/examples/servlets/
http://<host_name>/examples/jsp/

にアクセスして,動作確認すべし.

kamolandをフォローしましょう


© 2021 KMIソフトウェア