このエントリーをはてなブックマークに追加
スポンサーリンク

CentOS6.3のインストール(3)

1 2 3

Perlモジュールのインストール

基本的にはPerlモジュールのインストールは、
tar xvzf モジュール名.tar.gz
cd モジュール名
perl Makefile.PL
make
make test
make install
cd ..
この作業の繰り返しになります。Perlモジュールは大抵はconfigureスクリプトはシェルスクリプトではなくperlで記述されているため、Makefileを生成するためにはperl Makefile.PLとします。

Perlモジュールは普通はCPANのシェルを使って取得するのが一般的で、その方が依存性を自動的に解決してくれて便利なのですが、DBIやGDみたいにmake testでは失敗するけど実は使えるみたいな場合にエラーで途中で止まってしまうので、ここでは手動でインストールしています。

複数台のサーバーをインストールするようなサーバー管理者の仕事をしている方は、都度wgetで取得するのではなく、ローカルのWindows端末に保存しておいてFTPでサーバーにアップした方が作業が早く終わります。

Googleからファイル置場を探す時は、ファイル名の後にindex of をつけて絞り込むと早く見つかります。

TimeDateのインストール
cd /usr/local/src
mkdir Perl-modules
cd Perl-modules/
wget http://pkgs.fedoraproject.org/repo/pkgs/perl-TimeDate/TimeDate-1.16.tar.gz/b3cc35a7cabd106ac8829d2f2ff4bd9d/TimeDate-1.16.tar.gz
tar xvzf TimeDate-1.16.tar.gz
cd TimeDate-1.16
perl Makefile.PL
make
make test
make install
cd ..

Time Hiresのインストール
wget http://pkgs.fedoraproject.org/repo/pkgs/perl-Time-HiRes/Time-HiRes-1.65.tar.gz/2d1a744ab6b31b86db1610d091c760ae/Time-HiRes-1.65.tar.gz
tar xvzf Time-HiRes-1.65.tar.gz
cd Time-HiRes-1.65
perl Makefile.PL
make
make test
make install
cd ..

File-Tailのインストール
wget http://backpan.perl.org/authors/id/M/MG/MGRABNAR/File-Tail-0.98.tar.gz
tar xvzf File-Tail-0.98.tar.gz
cd File-Tail-0.98
perl Makefile.PL
make
make test
make install
cd ..
これはmake testに妙に時間がかかりますが異常ではありません。

MIME-BASE-64のインストール
wget http://backpan.perl.org/authors/id/G/GA/GAAS/MIME-Base64-3.05.tar.gz
tar xvzf MIME-Base64-3.05.tar.gz
cd MIME-Base64-3.05
perl Makefile.PL
make
make test
make install
cd ..

Test-Sinmpleのインストール
wget http://backpan.perl.org/authors/id/M/MS/MSCHWERN/Test-Simple-0.47.tar.gz
tar xvzf Test-Simple-0.47.tar.gz
cd Test-Simple-0.47
perl Makefile.PL
make
make test
make install
cd ..

File-ReadBackwardsのインストール
wget http://gitpan.integra.net/backpan/authors/id/U/UR/URI/File-ReadBackwards-1.02.tar.gz
tar xvzf File-ReadBackwards-1.02.tar.gz
cd File-ReadBackwards-1.02
perl Makefile.PL
make
make test
make install
cd ..

DBIのインストール
wget http://pkgs.fedoraproject.org/repo/pkgs/perl-DBI/DBI-1.48.tar.gz/87396e1a9c06d1190f1ca70e1da1163e/DBI-1.48.tar.gz
tar xvzf DBI-1.48.tar.gz
cd DBI-1.48
perl Makefile.PL
make
make test
make install
cd ..
make testで [make: *** [test_dynamic] エラー 255]が出ますが 誰も気にしない 。ちゃんと使えますのでご心配なく。

DBD-Pgのインストール
wget http://pkgs.fedoraproject.org/repo/pkgs/perl-DBD-Pg/DBD-Pg-1.43.tar.gz/1ddefc3cb5f8c0d20eaf6ba7aa11049d/DBD-Pg-1.43.tar.gz
tar xvzf DBD-Pg-1.43.tar.gz
cd DBD-Pg-1.43
perl Makefile.PL
export DBI_DSN='dbi:Pg:dbname=template1;port=5432'
export DBI_USER=postgres
make test
make install
cd ..
Jcodeのインストール
wget http://pkgs.fedoraproject.org/repo/pkgs/perl-Jcode/Jcode-2.03.tar.gz/8d285ebf5e5d4f60938829a2c11bdef6/Jcode-2.03.tar.gz
tar xvzf Jcode-2.03.tar.gz
cd Jcode-2.03
perl Makefile.PL
make test
make install
cd ..

CGIのインストール
wget http://openwebmail.org/openwebmail/download/packages/CGI.pm-3.05.tar.gz
tar xvzf CGI.pm-3.05.tar.gz
cd CGI.pm-3.05
perl Makefile.PL
make test
make install
cd ..

GDのインストール
wget http://pkgs.fedoraproject.org/repo/pkgs/perl-GD/GD-2.23.tar.gz/131a84d37921a18c87e7d994d72165b2/GD-2.23.tar.gz
tar xvzf GD-2.23.tar.gz
cd GD-2.23
perl Makefile.PL
make
make test
make install
cd ..

make test時に[make: *** [test_dynamic] エラー 2]が出るけど 誰も気にしない。 ちゃんと使えますのでご心配なく。
GD-Barcodeのインストール
wget http://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/modules/by-module/GD/KWITKNR/GD-Barcode-1.15.tar.gz
tar xvzf GD-Barcode-1.15.tar.gz
cd GD-Barcode-1.15
perl Makefile.PL
make
make test
make install
cd ..

このままでは「QRコードのバージョンを指定しなかった場合には自動判別になる」という機能が働かず、QRコードのバージョンを指定しなかった場合に1になってしまうというバグがあるので、以下のように修正します。
chmod 755 /usr/local/share/perl5/GD/Barcode/QRcode.pm
vi /usr/local/share/perl5/GD/Barcode/QRcode.pm
40行目
$oSelf->{Version} = $rhPrm->{Version} || 1;
               ↓
$oSelf->{Version} = $rhPrm->{Version};
ImageMagiclのインストール
他のモジュールのようにソースコードからコンパイルして生成したかったんですけど、うまくいかなくてすいません。rpmパッケージからインストールします。
cd /usr/local/src/RPMS
wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/ImageMagick-perl-6.5.4.7-6.el6_2.x86_64.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/ImageMagick-6.5.4.7-6.el6_2.x86_64.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/libwmf-0.2.8.4-22.el6.centos.x86_64.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/x86_64/Packages/libwmf-lite-0.2.8.4-22.el6.centos.x86_64.rpm
rpm -ivh ImageMagick-perl-6.5.4.7-6.el6_2.x86_64.rpm \
ImageMagick-6.5.4.7-6.el6_2.x86_64.rpm \
libwmf-0.2.8.4-22.el6.centos.x86_64.rpm \
libwmf-lite-0.2.8.4-22.el6.centos.x86_64.rpm

CentOSインストール時に「開発」関係を比較的多めに指定したので、依存性の解決がこの程度で済みましたが、インストール時の指定によっては以下のパッケージを要求してくる場合があります。
gd
ghostscript
ghostscript-devel
ghostscript
lcms
lcms-devel
libcroco
libgnomeui
libgnomeui-devel
libgsf
librsvg2
urw-fonts

MySQL

CentOSの最初から入ってるMysqlを削除
DVDからCentOSをインストールする時に「SQLサーバー」や「POSTFIXサーバー」を指定してしまうと、パッケージのMySQLがインストールされてしまうので、まずは削除します。いや、パッケージのままで良いという場合はそのままでも良いのですが、私はPostgreSQLやMySQLはソースからコンパイルして生成する事にしています。
rpm -e mysql-libs-5.1.61-4.el6.x86_64 mysql-devel-5.1.61-4.el6.x86_64 mysql-5.1.61-4.el6.x86_64 postfix-2.6.6-2.2.el6_1.x86_64
この後、いったんtelnetから抜けて入りなおします。(/usr/bin以下にあるmysqlコマンドを読もうとしてしまうため)

ユーザー作成
useradd mysql

コンパイル
cd /usr/local/src/targz
wget http://download.softagency.net/MySQL/Downloads/MySQL-5.0/mysql-5.0.92.tar.gz
tar xvzf mysql-5.0.92.tar.gz
cd mysql-5.0.92
./configure --with-charset=sjis --with-extra-charsets=all --with-mysqld-user=mysql
make
make install

雛型をコピー
cp support-files/my-medium.cnf /etc/my.cnf

ライブラリの場所をシステムに記憶させる
この作業は、DBD::mysqlを使う時に必要になります。
vi /etc/ld.so.conf.d/mysql.conf
/usr/local/lib/mysql
ldconfig

DB初期化
mysql_install_db --user=mysql

MySQL起動スクリプト作成
vi /etc/rc.d/init.d/mysql
#!/bin/bash
#
#       /etc/rc.d/init.d/mysql
#
# Starts the at daemon
#
# chkconfig: 345 95 5
# description: Runs commands scheduled by the at command at the time \
#    specified when at was run, and runs batch commands when the load \
#    average is low enough.
# processname: mysql

# Source function library.
. /etc/init.d/functions

RETVAL=0

start() {
        /usr/local/share/mysql/mysql.server start
}

stop() {
        /usr/local/share/mysql/mysql.server stop
}

restart() {
        /usr/local/share/mysql/mysql.server restart
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        restart
        ;;
  *)
        echo "Usage: mysql {start|stop|restart|reload}"
        exit 1
esac

exit $RETVAL
chmod 755 /etc/rc.d/init.d/mysql
chkconfig mysql on

MySQL起動
/etc/rc.d/init.d/mysql start

ルートパスワード設定
mysql
mysql>set password for (ユーザー名)@localhost=old_password('パスワード');
なんでold_passwordにしてるかというと、PHP4でパスワードを認識しなかったからです。PHP5では未確認です。rootパスワードは、セキュリティーのためには設定しておくべきですが、DBD::mysqlをインストールする時には解除しておかないとmake testで失敗します。

ユーザー追加
mysql>GRANT ALL ON *.* TO (ユーザー名);

データーベースの文字コードをシフトJISにする
vi /etc/my.cnf
[client]
default-character-set=sjis
[mysqld]
default-character-set=sjis
/etc/rc.d/init.d/mysql restart

DBD::mysqlをインストールする際に、文字コードがシフトJISになっているとmake testが失敗するので、DBD::mysqlをインストールする時は文字コード指定をいったん解除してください。

現在のキャラクターセットを確認する
mysql
mysql>SHOW VARIABLES LIKE '%character\_set%';

デフォルトのデーターベースのタイプをInnoDBにする
vi /etc/my.cnf
[mysqld]
default-table-type=InnoDB
/etc/rc.d/init.d/mysql restart

ログを/var/log/mysql以下に残すようにする
mkdir /var/log/mysql
mkdir /var/log/mysql-bin
chown mysql.mysql /var/log/mysql
chown mysql.mysql /var/log/mysql-bin

vi /etc/my.cnf
[mysqld]
log = /var/log/mysql/mysql.log
log-error = /var/log/mysql/mysql-error.log
log-slow-queries = /var/log/mysql/mysql-slow.log
log-bin = /var/log/mysql-bin
sync_binlog=1
expire_logs_days=30
max_binlog_size =1G
/etc/rc.d/init.d/mysql restart

ログのローテーションの設定
vi /etc/logrotate.d/mysql
/var/log/mysql/*log {
        create 660 mysql mysql
        missingok
        sharedscripts
        postrotate
          /usr/local/bin/mysqladmin -uroot -p'ルートパスワード' -hlocalhost flush-logs
        endscript
}
ここで、-p'ルートパスワード'は、設定したパスワードを設定してください。ルートパスワードを設定してない時は-p'ルートパスワード'は不要です。

ログローテーションの設定が終わったら、
logrotate -d /etc/logrotate.conf
でエラーがない事を確認してください。

また、
/usr/local/bin/mysqladmin -uroot -p'ルートパスワード' -hlocalhost flush-logs
の行だけコピペしてコマンドライン上で実行させ、
ps ax | grep mysql
でエラーでデーモンが落ちてないか確認してくだい。

samba

cd /usr/local/src/targz
wget http://www.samba.org/samba/ftp/stable/samba-4.0.3.tar.gz
tar xvzf samba-4.0.3.tar.gz
cd samba-4.0.3
./configure
make
make install

注意:samba3まではsource3以下にあるconfigureスクリプトを実行したのですが、samba4にあるsource3以下のディレクトリは前バージョンのソースを流用するために入っているだけなので、source3以下にあるconfigureスクリプトはここでは使いません。使おうとするとmake installの途中で止まります。展開したディレクトリ直下のconfigureスクリプトを実行してください。

雛形のコピー
cp examples/smb.conf.default /usr/local/samba/etc/smb.conf

注意:samba3までは、smb.confファイルは/usr/local/samba/lib/以下に入れていたのですが、samba4では/usr/local/samba/etc/以下に入れる必要があります。これはエラーログ(/var/log/samba/log.nmbd)を見ると判明します。

ライブラリの場所をシステムに覚えさせる
vi /etc/ld.so.conf.d/samba.conf
/usr/local/samba/lib64
/usr/local/samba/lib
ldconfig

自動起動スクリプトの作成
vi /etc/rc.d/init.d/samba
#!/bin/sh
#
# chkconfig: - 91 35
# description: Starts and stops the Samba smbd and nmbd daemons \
#              used to provide SMB network services.

# Source function library.
if [ -f /etc/init.d/functions ] ; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 0
fi

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# Check that smb.conf exists.
[ -f /usr/local/samba/etc/smb.conf ] || exit 0

RETVAL=0


start() {
       # If CUPS is used as printing system, reload smb after a 1 minute delay
       # to allow the printers to appear properly as samba shares.
        if killall -0 cupsd 2>/dev/null; then
         ( sleep 60 && killproc smbd -HUP ) &
       fi
       export TMPDIR="/var/tmp"
        echo -n "Starting SMB services: "
        daemon /usr/local/samba/sbin/smbd -D    
        RETVAL=$?
        echo
        echo -n "Starting NMB services: "
        daemon /usr/local/samba/sbin/nmbd -D 
        RETVAL2=$?
        echo
        [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/smb || \
           RETVAL=1
        return $RETVAL
}       
stop() {
        echo -n "Shutting down SMB services: "
        killproc smbd
        RETVAL=$?
        echo
        echo -n "Shutting down NMB services: "
        killproc nmbd
        RETVAL2=$?
        [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/smb
        echo ""
        return $RETVAL
}       
restart() {
        stop
        start
}       
reload() {
       export TMPDIR="/var/tmp"
        echo -n "Reloading smb.conf file: "
        killproc smbd -HUP
        RETVAL=$?
        echo
        return $RETVAL
}       
mdkstatus() {
        status smbd
        status nmbd
}       

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  reload)
        reload
        ;;
  status)
        mdkstatus
        ;;
  condrestart)
        [ -f /var/lock/subsys/smb ] && restart || :
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|status|condrestart}"
        exit 1
esac

exit $?
これはsamba4用です。smb.confの設置場所の変更に伴い、一部がsamba3用とは異なります。

起動
chmod 755 /etc/rc.d/init.d/samba
chkconfig samba on
/etc/rc.d/init.d/samba start

パスを通す
vi /etc/profile.d/samba.sh
PATH="$PATH":/usr/local/samba/bin
いったんtelnetから抜けて入りなおす。

ユーザーの作成
useradd ユーザー名
smbpasswd -a ユーザー名
New SMB password: パスワード
Retype new SMB password: パスワード

チューニング
vi /usr/local/samba/etc/smb.conf
   [global]
   server string = サーバー名
   workgroup = ワークグループ名
   log file = /var/log/samba/%m.log
   max log size = 0
   os level = OSレベル
   domain master = no
   preferred master = no
   load printers = no
   unix charset = EUC-JP
   dos charset = SHIFT_JIS
server stringはWindowsのエクスプローラでいうところの「詳細」欄に表示する名前を指定します。エクスプローラでいうところのサーバー名は、ホスト名が自動的に使われます。

max log sizeは0にしておくと無限に肥大してしまうので、別途logrotatedに設定してローテーションさせます。

os levelは33以上にすればWindows2000Serverの32に勝ってマスターブラウザになります。ただし、他にもsambaサーバーがあってマスターブラウザにしたくない場合は低くしておきます。

domain master、preferred master は、このサーバーをドメインマスターやブラウザーマスターにする場合はyesにします。ここではnoにしています。

load printersはsambaサーバーに接続したプリンターを共有として使うかどうか。使わないのでnoにしています。

display charset はSWATで使う文字コードの指定・・・だったんですが、samba4ではUTF8に固定されたらしく、この指定自体ができなくなりました。

ログの管理
mkdir /var/log/samba
useradd samba
chown samba.samba /var/log/samba
vi /etc/logrotate.d/samba
/var/log/samba/*log /var/log/samba/*mbd {
        create 0644 samba samba
        missingok
        sharedscripts
        postrotate
                /bin/kill -HUP `cat /usr/local/samba/var/run/smbd.pid 2>/dev/null` 2> /dev/null || true
                /bin/kill -HUP `cat /usr/local/samba/var/run/nmbd.pid 2>/dev/null` 2> /dev/null || true
        endscript
}
注意:samba3ではpidファイルは/usr/local/samba/var/locksにあったのですが、samba4では/usr/local/samba/var/runに変更になりました。その関係で一部をsamba4用に変更してあります。(・・・っていうか、こういうのってあまり変えないでほしいよね・・・・)

エラーがない事を確認します。
logrotate -d /etc/logrotate.conf

自作ソフトのインストール

urldec、pg_csv、dump2はけっこう便利なのでインストールします。ほとんどの人は使わないと思いますけど・・・。下記のツールが必要ない方は、ここは飛ばしてくださいね。

urldecのインストール
urldecはurlencodeされた文字列をデコードします。apacheのログを解析する時に使います。
cd /usr/local/src/tatgz
wget http://software.aufheben.info/linux/urldec-1.02.tar.gz
tar xvzf urldec-1.02.tar.gz
cd urldec-1.02
make
make install
cd ..

pg_csvのインストール
pg_csvはPostgreSQLのデーターをCSV形式で出力します。エクセル用に強制文字列指定もできます。
wget http://software.aufheben.info/linux/pg_csv-1.03.tar.gz
tar xvzf pg_csv-1.03.tar.gz
cd pg_csv-1.03
./configure
make
make install
cd ..

hexdump2のインストール
hexdump2はファイルの16進ダンプをMS-DOSのDUMPコマンドふうに表示します。
wget http://software.aufheben.info/linux/hexdump2-1.02.tar.gz
tar xvzf hexdump2-1.02.tar.gz
cd hexdump2-1.02
make
make install

watcher2のインストール

自宅や外出先からサーバーのSMTPを使ってメールする場合、自宅や外出先が固定IPなら良いのですが、動的IPだった場合/etc/mail/access.dbに許可IPを書くことができません。そこで、QPOPPERのログを監視して、POP3が成功したIPアドレスに一定期間メールの送信権を与えます。

まずQPOPPERをwatcher対応にコンパイルします。以前はパッチを当てて対応していたのですが、今は./configure時に --enable-log-login をつけるだけで良いです。

次に公式サイトに行ってwatcher2のv1.6をテキストエディターで開きます。

最初の方を少し変更します。
$popperlog = "/var/log/pop3.log"; # logfile for popper
$popauthlog = "/var/log/popauthlog"; # logfile for myself
$syslogpid = "/etc/syslog.pid"; # syslog pid file
$popauth = "/etc/mail/access"; # sendmail database
$makemap = "/usr/etc/makemap"; # makemap command
$mapclass = "hash"; # database class
これはあくまで例です。お使いの環境に合わせて変更してください。

また、このままの状態では、常にPOP3に成功したIPアドレスのみが許可され、常時許可されるデフォルトのIPアドレス、たとえば、192.168.0などが設定できません。ある程度自分が使いやすいようにカスタマイズする必要があります。たとえば、192.168.0は常時許可させる、といったカスタマイズが必要になると思います。

カスタマイズが終わったら、名前をつけて保存します。名前は、例えばwatcher2dlなどとします。改行コードはLFのみにします。それを、バイナリモードでサーバーにアップします。それを、適当なパス(たとえば、/usr/local/bin)にコピーして、
chmod 755 /usr/local/bin/watcher2d
として実行権限を与えます。

さて、問題はこれをどうやって常駐させるか。CentOS5まではinittabに
pbs:345:respawn:/usr/local/bin/watcher2d
というふうに記述して常駐させていたのですが、CentOS6ではこの手が通用しなくなりました。なぜなら、
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
って書いてあるからです。え?意味がわからない?えっと、これには、「inittabは起動時のランレベルを判別するためだけに使います。以降、何書いても効果はありません。」っていう意味です。なので、当然watcher2を常駐させる記載をしても無駄です。

仕方ないので、apacheのapachectrlみたいなのを作りました。以下をwatcher2ctrlとして、改行コードLFのみでセーブした後、バイナリモードでアップロードしてください。
#!/usr/bin/perl

$option1 = shift @ARGV;
$option2 = shift @ARGV;

# 初期設定
# ここをお使いの環境に合わせて変更してください

$WATCHER2="/usr/local/bin/watcher2d";

# 常駐チェック ====================================================================

$jochu_cnt=0;
$line_cnt=0;
$status_str="";
$watcher2_process_id=0;
$watcher2_process_cnt=0;

open(IN, "ps axwwww |");
while (<IN>) {
        $line_cnt++;
        if ( /\s*(\d+)\s.*($WATCHER2)/ ) {
                $jochu_cnt++;
                $watcher2_process_cnt++;
                $watcher2_process_id=$1;
                $status_str.="$&\n";
        }
}
close(IN);

# psコマンド失敗なら終了
if ($line_cnt==0){
        die("psコマンド失敗");
}

# 多重起動チェック ====================================

$dame=0;
if ($watcher2_process_cnt>1){
        $dame=1;
        die("watcher2が多重起動しています");
}

#実行フラグ初期化 ====================================

$done_flg=0;

# ストップモード =====================================

if ($option1 eq "stop") {
        if ($jochu_cnt==0) {
                printf("watcher2は常駐していません\n");
        }
        if ($watcher2_process_id>0){
                system("kill -KILL $watcher2_process_id");
                printf("watcher2を止めました\n");
        }
        $done_flg=1;
}

# リスタートモード =====================================
if ($option1 eq "restart") {
        if ($watcher2_process_id>0){
                system("kill -KILL $watcher2_process_id");
                printf("watcher2を止めました\n");
        }
        sleep 3;
        system("$WATCHER2 &");
        printf("watcher2を起動させました\n");
        $done_flg=1;
}

# スタートモード =========================================
if ($option1 eq "start"){
        if ($watcher2_process_id>0){
                printf("watcher2は既に動いてます - %s\n", $watcher2_process_id);
        } else {
                system("$WATCHER2 &");
                printf("watcher2を起動させました\n");
        }
        $done_flg=1;
}

# ステータス表示 =========================================
if ($option1 eq "status"){
        if ($jochu_cnt>0) {
                if ($watcher2_process_id>0){
                        printf("watcher2は常駐しています - %s\n",$watcher2_process_id);
                } else {
                        printf("watcher2は常駐していません\n");
                }
        } else {
                printf("watcher2は常駐していません\n");
        }
        $done_flg=1;
}

# ヘルプ ==============================================================

if ($done_flg==0){
        printf("使い方:\n");
        printf("watcher2ctrl start または stop または restart または status\n");
}
exit();
これをサーバーの/usr/local/binにコピーして、パーミッションを755にします。あとは、apachectrlみたいに使えます。

例)
watcher2ctrl start ・・・・watcher2を起動させます。
watcher2ctrl stop ・・・・watcher2を終了させます。
watcher2ctrl restart ・・・watcher2を再起動させます。

また、サーバー起動時にwatcher2を起動させるために、/etc/rc.d/init.d/watcher2というスクリプトを作成します。
#!/bin/sh
#
# chkconfig: 345 81 35
# description: Starts and stops the watcher2 daemons
#              used to provide watcher2 network services.

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

CONFIG=/usr/local/bin/watcher2d

# Check that smb.conf exists.
[ -f $CONFIG ] || exit 0

# See how we were called.
case "$1" in
  start)
         echo "Starting watcher2..."
         /usr/local/bin/watcher2d &
        ;;

  stop)
         echo "Stopping watcher2 ..."
         killall watcher2d
        ;;
  restart)
        echo "Restarting watcher2 services: "
        $0 stop
        /bin/sleep 3
        $0 start
        echo "done."
        ;;
  *)
        echo "Usage: watcher2 {start|stop|restart}"
        exit 1
esac
ここで注意してほしいのは、watcher2のデーモンの名前と、このスクリプトの名前を同じにしてはいけないという事です。なぜなら、restartのところでkillall watcher2dとしているからです。ここで、このスクリプトもwatcher2dという名前だとこのスクリプト自体がkillallされて止まってしまいます。必ずwatcher2本体とこの起動スクリプトは別名にしてください。

このスクリプトをviかなんかでコピペして、/etc/rc.d/init.d/watcher2に保存して、
chmod 755 /etc/rc.d/init.d/watcher2
chkconfig watcher2 on
とすると、サーバー起動時にwatcher2が自動起動します。

・さらなるカスタマイズ
watcher2はperlで記述されており、可読性も良いです。なので、さらにカスタマイズする事も可能です。たとえば、access.dbだけでなく、hosts.allowやhosts.denyを生成するようにすれば、POP3認証が成功したIPアドレスに一定時間telnet、ssh、FTPの接続権を与えることができます。ただし、その分セキュリティは脆弱になるので、穴の開け過ぎは禁物です。
1 2 3
スポンサーリンク