etchでウェブサーバ

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

戯れ言

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

Thanks to logo of debian GNU/Linux




























サーバならDebian

メジャーバージョンアップに伴い、woody(3.0)からetch(4.0)へアップデートすることにした。 woodyの際はXなどの余計なパッケージも入れていたが、今回はシンプルにウェブサーバ+ ファイルサーバの構成でインストールすることとした。

インストール

DVDイメージをBitTorrentでダウンロードしたが、なぜか起動せず。仕方なく、今回も 最小CDイメージからネットワークインストールとなった。 インストール後に気付いたが、ウェブサーバ+ファイルサーバの構成なら最小CDイメージとネットワークインストールでも 十分であった。

Back to MENU

カーネルの再構築

インストールが済んだら、早速カーネルの再構築である。カーネルソースをインストールする際、 woodyではkernel-source-Versionと入力したが、etchではlinux-source-Versionと する必要がある。

# apt-get build-dep linux-source-2.6.18
# apt-get install linux-source-2.4.18
# apt-get install libncurses-dev
# cd /usr/src
# tar jxvf linux-source-2.6.18
# ln -s linux-source-2.4.18 linux
# cd /usr/src/linux
  ### ビルドルーツのインストール
  ### 安定版のカーネルソール
  ### make menuconfigに必要
  ### ソースのあるディレクトリに移動
  ### apt-getでインストールされるのはbz2ファイルなので、それを展開
  ### 展開して出来たディレクトリkernel-source-2.4.18へのシンボリックリンクlinuxを作成
  ### /usr/src/linuxへ移動

さて、横着して、カーネルが2.4の際の設定ファイルを使って再構築してみた。 make-kpkgを行う前に、以前(ver. 2.4)のconfigファイルをコピーし、make menuconfigを実行直後にsaveして 作成したconfigファイルを使用した。

# cp /mnt/myconfig /usr/src/linux/.config
# make menuconfig
# make-kpkg --revision 20070415 kernel-image
  ### 2.4のconfigファイルをコピー
  ### make menuconfigを実行し、一切変更せずにsave
  ### カーネルの再構築

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

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

2.4のconfigファイルを使うとうまく行かないこともあるようだが、今回は特に問題なく起動した。

後で分かったのだが、上の方法では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とそのサブ項目を有効にした。

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ネットワークファイル用デーモン

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

sshdの設定

今回もwoodyの時と同様にsshdを設定した。設定の方針は前回同様に以下の通りである。

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

まず、sshをインストールする。

# apt-get install ssh
  ### openssh-serverとsshがインストールされる
  1. /etc/ssh/sshd_configの設定

  2. woodyで使用した設定ファイルをコピーして終了。デフォルトからの変更点は 前回と同様に以下の通りである。
    Protocol 2
    PermitRootLogin no
    RSAAuthentication no
    PasswordAuthentication no
    # sshdが使用するprotocolバージョン。SSH1を使用しないので2のみを記述
    # rootでのログインを許可するかどうか。sshログイン用のユーザを作成後に無効にした。
    # DSAを使用するためRSAでの認証は許可しない。
    # 鍵ではなくパスワード認証によるログインは拒否するのでno
  3. ユーザの作成と公開鍵
  4. woodyで使用したファイルを保存していたため、PuTTYに対しては ssh_host_*ファイルを/etc/ssh/以下にコピーするだけでOKであった。

    また別のUNIX PCからsshでログインする事はないので、今回はユーザを作成しなかった。

Back to MENU

iptablesの設定

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

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

dns-nameservers DNSサーバのアドレス
pre-up iptables -F
pre-up echo 1 > /proc/sys/net/ipv4/ip_forward
pre-up iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
  ### iptablesをフラッシュ(pre-upの一例)
  ### iptablesをフラッシュ(pre-upの一例)
  ### ip forwardを有効にする
  ### localdomainを192.168.0.0/24に変更した例

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

Samba によるHDDの共有

最後にsambaの設定である。 今回はsambaの設定の勉強も兼ねて、複数のユーザが居ることを仮定した 次の方針で設定した。

詳細は設定ファイルsmb.confに譲るとして、 主な点は次の通りである。

設定ファイル一覧