etch and halfからlenny

私のメモです。参考になればいいですが、間違っていたらごめんなさい。

戯れ言

--------------------------------------------------------

Thanks to logo of debian GNU/Linux




























サーバならDebian

そういえばetchの次のバージョンlennyがリリースされていたのを忘れていた。思い出したのでクリーンインストールをすることにした。

インストール

今回も最小CDイメージからネットワークインストールをする。lennyのカーネル2.6.26は、マザーボードGA-GC230DのネットワークカードRealtek 8101E(rlt8101e)をサポートしているetch-and-halfので特に問題なくインストールできる。

上記のインストーラを用いると難なくインストールが終了する。今回は標準パッケージのみをインストールした。

etch-and-halfからlennyへのアップデートでは、sambaやapacheなどの設定がほとんど変わらないため、インストールの前に/etc以下のバックアップを取っておくと良い。また、以下の記述はetch-and-halfでの設定と重複するものがほとんどである。

Back to MENU

Sambaの設定

まず初めにsambaとsmbfsをインストールする。smbfsパッケージは、Windowsの共有フォルダをLinuxのディレクトリにマウントするコマンド(smbmount)である。

# apt-get install samba smbfs

まず、IPアドレスでの制限やCharset等、基本的なところを設定する。 デフォルトファイルからの変更/追加点は次の通りである。

さらに、sambaユーザとして登録したユーザはシェルログインしないよう、次のコマンドでユーザを追加した。
# useradd -s /bin/false USERNAME
  ### シェルを実行できないよう-s /bin/falseを付加

次に共有フォルダの設定である。今回も複数のユーザが居ることを仮定した次の方針で設定した。

Back to MENU

sshdの設定

次にWindows端末からPuTTYでログインできるよう、sshをインストールして設定する。その後、sshdにログインできるのは限られたクライアントPCとし、且つPuTTYでは鍵による認証でログインするように設定した。

PuTTYの設定は、Windowsのページを参考のこと。

これまで、ssh(依存関係でopenssh-clientとopenssh-server)をインストールしていたが、PuTTYでのログインをするだけならば、openssh-clientとopenssh-serverをインストールするだけである。

# apt-get install openssh-client openssh-server

次に/etc/ssh/sshd_configを設定する。インストールした際に作成されたファイルからの変更点は下の通りである。

PermitRootLogin no
RSAAuthentication no
PasswordAuthentication no
# rootでのログインを許可するかどうか。
# DSAを使用するためRSAでの認証は許可しない。
# 鍵ではなくパスワード認証によるログインは拒否するのでno

今回インストールしたopensshのsshd_configでは、初めからssh2のみでのログインとなっていた(前回はssh1,2の両方)。

  • 公開鍵のコピー
  • PuTTYで作成したssh2用の公開鍵をユーザの.sshディレクトリ(/home/username/.ssh)にコピーする。その際、コピーしたファイル名はauthorized_keys2とし、他のユーザから見られないようにパーミッションを400に設定する。これでPuTTYを使ってWindowsからログインできるようになる。

    Back to MENU

    apacheの設定

    leenyでの設定ファイルは次のように分割されている。

    apache2.conf設定ファイルの構成が記述されたファイル。これはlennyでインストールされるファイルを使う必要がある。
    envvarslennyで追加されたファイルで、環境変数の設定
    httpd.conf空ファイル。下位互換のためにあると思われる。
    ports.confポートの設定
    site-available/default公開するディレクトリの設定
    mod-available/default使用可能なモジュール
    conf.d/charsetデフォルトの文字の設定

    etch-and-halfのapacheの設定ではhttpd.confにサーバ固有の設定として次の1行を追加したが、これをapache2.confに追加し、httpd.confは空ファイルにした。

    ServerName fishers.homeunix.net

    また、lennyで追加されたenvvarsファイルにapache2の環境変数を記述する。デフォルトではAPACHE_PID_FILEが設定されていないようである。

     export APACHE_RUN_USER=www-data
     export APACHE_RUN_GROUP=www-data
     export APACHE_PID_FILE=/var/run/apache2.pid

    次に、ディレクトリの設定をする。元のファイルdefaultをfishersというファイルにコピーし、 fishersで以下の項目を変更した(DirectoryIndexは追加した)。

    設定変更後、次のコマンドでfishersを有効にする。このコマンドを実行すると、site-enableディレクトリにfisherファイルへのシンボリックリンクが張られてfishersファイルの設定が有効となる。

    # a2dissite default
    # a2ensite fishers
      ### defaultを無効にする
      ### fishersを有効にする。

    上の設定はapache2を再起動するまで有効にならない。設定が一通り済んでから再起動するので それまで放っておけばよい。

    今度は日本語に関する設定を行う。apache2.confとconf.d/charsetで以下の項目を変更した。 特に、conf.d/charsetを修正しないと、表示されるページが全てUTF-8になるので要注意である。

    apache2.conf
     LanguagePriorityjaを先頭に
    conf.d/charset
     # AddDefaultCharset UTF-8コメントアウト

    DebianではSSI用のモジュールはデフォルトで無効である。 そのため、最後にSSI用のモジュールを有効にする。

    # a2enmod include
      ### SSI用モジュールincludeを有効にする

    また、使わないモジュールは無効にしておいた方が良い。 デフォルトではmod_python、php4、perlが有効になっていたので、それを無効にした。 (a2enmodは、mod-enableにmod-availableにある実体へシンボリックリンクを 貼り、2dismodはそれを削除するコマンドである。そのため、OSを再起動しても 設定は保持される。)

    # a2dismod mod_python php4 perl
      ### SSI用モジュールincludeを有効にする

    最後にapache2を再起動して、設定を反映させる。。

    # /etc/init.d/apache2 restart
      ### apache2を再起動

    Back to MENU

    iptablesの設定

    etch-and-halfと同様、/etc/network/interfacesファイルに直接記述する。 etch-and-halfで使用したファイルとの変更点は次の通りである。

    woodyetch-and-halfの設定では、「autoからallow-hotplugに変更になった」と記述したがこれは誤りであった。正確には、カーネル起動時にインタフェースを有効にする場合はautoを、カーネルがホットプラグイベント(インターフェースデバイスの抜き差し)を感知した際に起動する場合はauto-hotplugを記述する。

    これまでループバックネットワークインターフィースloをDROPしていた。しかし、loをACCEPTしないとsmbdデーモンが起動しないため、これを追加した。また、mount -t smbfsでWindowsの共有ファイルをLinux上にマウントする際、Windowsのport 445に向けてパスワードを発行することがあるため、その設定も追加した。さらに、INPUTチェインでtcpの139、445を使うのは最初の時だけなので、-m state --state NEWを付けた。

    Back to MENU

    Hyper-Estraierで検索機能付加定

    検索機能はCGIで行うため、Hyper-Estraierを設定するだけでなく、/etc/apach2/site-available/fishersファイルでCGIを 使えるようにしなくてはならない。 まずfishersファイルに以下のディレクティブを追加する。

    ScriptAlias /cgi-bin/ /var/www/cgi-bin/

    <Directory /var/www/cgi-bin>
     AllowOverride None
     Options ExecCGI
     Order deny,allow
     Allow from all
    </Directory>
     # CGIを実行するディレクトリ。これ以下にhtmlファイルを置いても見ることができない。

     # CGIを実行するディレクトリの設定
     # .htaccessファイルの上書き設定。Noneは無効
     # ExecCGIでCGIを実行するようになる。SSIの場合、Includesになる。
     # このディレクトリのアクセス制限順序
     # 全て許可(誰でも見れる)

    次にcgiモジュールを有効にする。/etc/apach2/mods-availableディレクトリに移動し、次のコマンドでcgiモジュールを有効にする(デフォルトでは有効になっているみたいですが・・)。

    # cd /etc/apach2/mods-available
     ディレクトリ/etc/apach2/mods-availableに移動
    # a2ensite cgi
     cgiモジュールを有効にする

    次にHyper-Estraierをインストールして設定する。 その方法はHyper-Estraierの イントロダクションのページに記述されたやり方そのものである。 僕の環境では、Hyper-Estraierの他に、 libicnvQDBMzlibも 必要であった。以下、それらのtarballをダウンロード&インストールした後、Hyper-Estraierをインストールする手順を示す(libiconv、QDBM、zlibも同様の手順でインストールできる)。

    # tar zxvf hyperestraier-1.4.13.tar.gz
    # cd hyperestraier-1.4.13
    # ./configure
    # make
    # make check
    # make install
    # cp /usr/local/libexec/estseek.cgi /var/www/cgi-bin
    # cp /usr/local/share/hyperestraier/locale/ja/*.* /var/www/cgi-bin
     tarballを展開
     展開したディレクトリへ
     設定、依存関係の確認
     実行ファイル、ライブラリ作成
     実行ファイル、ライブラリのコピー
     CGIを動かすディレクトリにHyper-Estraierをコピー。ver. 1.0のconfファイルでは起動できない。
     日本語版テンプレート、コンフィグファイルなどをコピー

    以上でインストールは終了である。もしHyper-Estraierをアンインストールしたいならば、 tarballを展開したディレクトリでmake uninstallを行えば良い。

    次にコンフィグファイルを編集し、検索用インデックスを作成する。 コンフィグファイル(estseek.conf)をエディタで開き、次の箇所を修正する。

    indexname: /var/www/cgi-bin/casket
    replace: ^file:///var/www/html/{{!}}http://fishers.homeunix.net/
     # 検索用インデックスのディレクトリ
     # ウェブサーバのドキュメントルートとURI

    上の編集を終えたら、好みでテンプレート(estseek.tmpl)やトップページ(estseek.top)も編集する。 もちろん、estseek.confでtmplfileとtopファイルに自前のものを用いても良い。 編集が終えたら、estseek.cgiのパーミッションを100に、テンプレートなどは400に変更し、 ユーザ、グループをwww-dataに変更する。

    # cd /var/www/cgi-bin/
    # chmod 400 estseek.*
    # chmod 100 estseek.cgi
    # chown www-data estseek.*
    # chgrp www-data estseek.*

    最後に、検索用インデックスを下のコマンドで作成する。 その際、estseek.confのindexnameに指定したディレクトリに検索用インデックスを作成しなくてはならない。

    # cd /var/www/cgi-bin
    # estcmd gather -il ja -sd casket /var/www/html
    # chown -R www-data casket
    # chgrp -R www-data casket
    # chmod 400 casket
    # find casket -type d | xargs chmod 100
     検索用インデックスを作成するディレクトリへ移動
     /var/www/html以下を日本語でインデックスにする
     ユーザやパーミッションの変更



    ver.1.0同様、estcmdには指定したディレクトリ以下を除外するオプションが無い(ファイル単位ならばある)。 そのため、例えば/var/www/html/friendを検索結果に表示したくない場合、後から逐一friend配下のファイルを 除外することになる。

    Back to MENU

    ランレベルのカスタマイズ

    次に不要なサービスを停止する。etchではデフォルトのランレベルが2である(/etc/inittab中に記載されている)。 そこで、/etc/rc2.d/にあるシンボリックリンクの名前の頭文字をSからKに変えることでサービスを起動しないようにする。

    今回は、使用しない以下のサービスを止めた(頭文字SをKに変更)。

     S20nfs-kernel-serverネットワークファイル用デーモン
     S20openbsd-inetdTCP Wrapperの1つ。
     S21nfs-commonネットワークファイル用デーモン

    設定ファイル一覧