etch and halfでウェブサーバ

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

戯れ言

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

Thanks to logo of debian GNU/Linux




























サーバならDebian

とうとうCube型サーバ機のマザーボードが壊れたらしく、マザーボードをGA-GC230Dに交換した。このマザーボードのネットワークデバイスであるRealTek社の8101EはEtchのカーネルのバージョン2.8.16ではサポートされていない。そこで、Realtek 8101Eをサポートする2.8.24でインストール可能なetch-and-halfを使ってインストールをした。

インストール

今回も最小CDイメージからネットワークインストールをする。その際、インストールに使用するカーネルは、マザーボードGA-GC230DのネットワークカードRealtek 8101E(rlt8101e)をサポートしているetch-and-halfを使う必要がある。今回の作業には、etch4.0raのecth-and-halfを用いた。

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

Back to MENU

Sambaの設定

sshの鍵の受け渡しに使うため、まず初めに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の設定

    etchではapacheのバージョンが2に上がった。設定ファイルも大きく変わり、次のように 分割されている。

     apache2.conf主にアプリの設定
     httpd.confウェブサーバ固有の設定
     ports.confポートの設定
     site-available/default公開するディレクトリの設定
     conf.d/charsetデフォルトの文字の設定

    まず、httpd.confにサーバ固有の設定として次の1行を追加した。

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

    設定変更後、次のコマンドで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へのアップグレード時と同様、/etc/network/interfaceファイルに直接記述する。 etchで使用したファイルとの変更点は次の通りである。

    上記の変更点は次のように記述される。

    allow-hotplug eth0
    #pre-up echo 1 > /proc/sys/net/ipv4/ip_forward
    pre-up iptables -F
      ### ネットワークインターフェースの指定
      ### ip forwardを有効にする行をコメントアウト
      ### iptablesをフラッシュ(pre-upの一例)

    結局、woodyで使用したファイルで、upをpre-upに、 localdomainを192.168.0.0/24に変更するだけで設定が終了した。

    Back to MENU

    追加パッケージのインストール

    以降のhyperestraierのインストールやカーネルの再構築で必要となるパッケージをインストールする。次のパッケージを新規にインストールした。

    kernel-package
    kernelの再構築に使うmake-kpkgを含むパッケージ
    libncurses-dev
    kernelの再構築に使うmake menuconfigが使用するライブラリ

    インストールは、もちろん次のコマンドである。

    # apt-get install kernel-packagelibncurses-dev

    Back to MENU

    カーネルの再構築

    カーネルのソースパッケージのインストールされたら、それを/usr/srcディレクトリに展開し、linuxと言う名のシンボリックリンクを作成する。

    # cd /usr/src
    # tar jxvf linux-source-2.6.24
    # ln -s linux-source-2.4.18 linux
    # cd /usr/src/linux

    今回はマザーボードが変わったので、前回使ったカーネルが2.6.24の際の設定ファイルを使うことはできない。dmesgやlsmodを参考にして不要なデバイス、サービスを削除した。前回iptablesで痛い目をみたので、iptablesに必要なmake menuconfigのNetworking→Network options→ Network packet filtering→IP:Netfilter Configuration→IP tables support(とそのサブ項目)を有効にした。 また、iptablesに必要なNetworking→Network options→Network packet filtering→Core Netfilter Configuration→ Netfilter Xtables supportとそのサブ項目を有効にした。

    # make menuconfig
    # make-kpkg --revision 20081023 kernel-image

    最後にできあがったkernel-imageをインストールする。このインストールにより、ブートローダgrubの設定も 自動で更新され、新しいkernelで起動できるように設定が追記される。

    # cd ..
    # dpkg -i linux-image-2.6.24_20070415_i386.deb
    (/etc/lilo.confを確認)
      ### 一つ上のディレクトリ(/usr/src)に移動。コンパイルに成功しているとlinux-image*.debファイルがあるはず。
      ### dpkgでインストール

    Back to MENU

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

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

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

     S20acpid電源管理用デーモン
     S20netatalkAppleTalk用デーモン
     S20nfs-kernel-serverネットワークファイル用デーモン
     S20openbsd-inetdTCP Wrapperの1つ。
     S20winbindWindowsのログイン名でsambaにアクセスするためのデーモン
     S21nfs-commonネットワークファイル用デーモン

    設定ファイル一覧