初期型玄箱のDebian化後Webサーバー化する為の覚え書き
玄箱 Debian にWebサーバ Apache、PHP、MySQL、Webminを追加する。
apache 1.3系のインストール、PHP、MySQL、Webminをまとめてインストール
 
Apacheをまず入れる
# aptitude install apache
 
PHP4 なら
# aptitude install php4 php4-cli php4-common php4-dev
 
MySQL
# aptitude install mysql-client mysql-common mysql-server
 
PHP4でMySQLを使えるように
# aptitude install php4-mysql
 
PHPで他に必要になるSqlite Pear 他もインストール
# aptitude install php4-sqlite php4-imap php4-pear
 
Webminをインストール
# aptitude install webmin
 
Webmin関連ソフトのファイル追加
# aptitude install webmin-core webmin-mysql webmin-apache
 
Webminの設定修正
# vim /etc/webmin/miniserv.conf
以下に修正
allow 127.0.0.1 192.168.1.

設定ファイルの内容を適用する。
# /etc/init.d/webmin force-reload
 それぞれの設定ファイルの場所
PHP
/etc/php4/apache/php.ini
Apache
 /etc/apache/httpd.conf
MySQL
 /etc/mysql/my.cnf
 
Apache
設定ファイルの場所:/etc/apache/httpd.conf
再起動コマンド   :/etc/init.d/apache reload
 
文字化け対策(apacheが出力するDefaultCharsetを抑制する)
そのままでは日本語に文字化けが起こるのでhttpd.confを修正
AddDefaultCharset onをコメントアウトまたは AddDefaultCharset off とする
再起動!!
 
表示の日本語化
# aptitude install locales
"Change Language and Theme" ボタンを押し、"Webmin UI language"に"Japanese (JA_JP.EUC)"を設定する。
 
後で設定を変更する場合は
# dpkg-reconfigure locales
[*] ja_JP.EUC-JP EUC-JP
OK
ja_JP.EUC-JP
OK

MySQLのユーザー設定
rootにパスワードを設定する
# mysqladmin -u root password 'rootパスワード'
 
MySQLにログインし、誰でもアクセスできてしまう匿名ユーザ(空のuser)を削除しておく。
# mysql -u root -p
Enter password: rootパスワード[Enter]

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 4.0.15

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql> select host,user,password from mysql.user; ←user確認
+-----------+------+------------------+
| host   | user | password     |
+-----------+------+------------------+
| localhost | root | **************** |
| server  | root |         |
| localhost |   |         |
| server  |   |         |
+-----------+------+------------------+
4 rows in set (0.01 sec)

mysql> delete from mysql.user where user=""; ←匿名user削除
Query OK, 2 rows affected (0.01 sec)

mysql> select host,user,password from mysql.user; ←user確認
+-----------+------+------------------+
| host   | user | password     |
+-----------+------+------------------+
| localhost | root | **************** |
| server  | root |         |
+-----------+------+------------------+
2 rows in set (0.00 sec)
 
 任意の場所からアクセスできるroot (ここではhost名: server)にもパスワードを設定しておく。
mysql> set password for root@'server'=password('rootパスワード');
Query OK, 0 rows affected (0.02 sec)
mysql> select host,user,password from mysql.user; ←user確認
+-----------+------+------------------+
| host   | user | password     |
+-----------+------+------------------+
| localhost | root | **************** |
| server  | root | **************** |
+-----------+------+------------------+
2 rows in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)
mysql> \q
Bye
  
Sambaのインストール
# aptitude install samba webmin-samba
次のことを聞いてくる

Workgroup/Domain Name?
workgroup  (.ワークグループ/ドメイン名を入力)
Use password encryption?
Yes      (パスワードを暗号化するか)
Modify smb.conf to use WINS settings from DHCP?
No       (DHCPからWINS設定を使うようsmb.confを変更するか)
How do you want to run Samba?
daemons   (どうやってSambaを動かすか)
Create samba password database, /var/lib/samba/passdb.tdb?Samba
Yes(パスワードデータベースを作成するか)
Do you want to upgrade glibc now? [Y/n] Y
Do you wish to restart services? [Y/n] Y
Sambaにアクセスするユーザーを作成
Sambaを利用するにはSambaユーザーを作成する必要があります。
今回の場合、このユーザーはLinux上に既にあるアカウントと同名でなければならないため、
適切なアカウントがなければ予め作成した上でSambaユーザーを作成します。
ユーザー「shoji」をSambaユーザーに作成

$ smbpasswd -a shoji
New SMB password:
Retype new SMB password:
 
Samba設定ファイル
/etc/samba/smb.conf
例 設定例 一部
 
BINDのインストール
Debian 版 bind9
インストール
# aptitude install bind9
debianでdigやnslookupを使おうと思っても使えない。dnsutilsというパッケージに入っているらしいのでこれも入れておく。
# aptitude install dnsutils
 
bind 用ユーザー、グループが作成されているかをチェック
基本的にはインストールで作成されているはず。無ければbind ユーザを作成しておきます。
group = bind
user = bind
bindユーザはログインできる必要は無いので、ログインシェルは/bin/falseなどにしておく。
 
Bind9のファイル(/etc/bindにあります。)
named.conf------BIND基本設定ファイル。
named.ca--------キャッシュ用
domain.zone----- 正引き用ゾーンファイル
domain.rev------逆引き用ゾーンファイル
local.zone------ループバック正引き用ゾーンファイル
local.rev-------ループバック逆引き用ゾーンファイル
named.pid------- プロセスID(PID)ファイル
 
基本設定
設定ファイル(named.conf)を見るとoptionはnamed.conf.optionファイルとしてincludeしている。
ドメイン関連ファイルはnamed.conf.localとして別ファイルとして分割するのがDebian流。
使える物は使いましょう・・と言うことでまずはデフォルトのファイルはバックアップ!!
# cd /etc/bind
# mkdir org
# cp * ./org/
現在、私のサーバーのドメインのアドレスは固定ではないので外向きの設定までは実施していない。しかし今後固定アドレスになるかも知れないので、とりあえず外向きの設定も簡単に追加出来るようにしておく。
本来のDebian流の使い方からは違う作法になるが変更してnamed.confに内向き、named.conf.localに外向きの設定を書くことにします。
 
/etc/bind/rndc.confを作成
# cd /etc/bind
# rndc-confgen -r /dev/random > rndc.conf
# chown bind:bind rndc.conf
# chmod 640 rndc.conf
# vim rndc.conf
rndc.confを開いて以下のKey部分をメモるか、範囲指定してメモリで覚えておく。
 
/etc/bind/named.conf.optionsを編集
Option設定以下のように変更
 
acl localnet {
    192.168.0.0/24;
    127.0.0.1;
}; 
options {
    //directory "/var/cache/bind";
    directory "/etc/bind";
    //pid-file "/var/run/bind/run/named.pid";

    version "DNS Server";
    recursion yes;

    allow-recursion {
        localnet;
    };

    allow-transfer {
        none;
    };

    allow-query {
        localnet;
    };
    // If there is a firewall between you and nameservers you want
    // to talk to, you might need to uncomment the query-source
    // directive below. Previous versions of BIND always asked
    // questions using port 53, but BIND 8.1 and later use an unprivileged
    // port by default.

    // query-source address * port 53;

    // If your ISP provided one or more IP addresses for stable
    // nameservers, you probably want to use them as forwarders.
    // Uncomment the following block, and insert the addresses replacing
    // the all-0's placeholder.

    forward first;
    forwarders {
        192.168.0.1;
        ***.***.***.***;
    };

    auth-nxdomain no;  # conform to RFC1035
};
 
/etc/bind/named.confを編集
内向きの設定
 
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
 
include "/etc/bind/named.conf.options";
 
key "rndc-key" {    「先ほど記憶しておいた情報をここに!!」
    algorithm hmac-md5;
    secret "FrutnP4aFjrFEgpFs6z8QQ==";
};
 
controls {
    inet 127.0.0.1 port 953
    allow { 127.0.0.1; } keys { "rndc-key"; };
};
view "internal" {
    match-clients { localnet; };
 
// prime the server with knowledge of the root servers
zone "." {
    type hint;
    file "/etc/bind/db.root";
};
 
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
 
zone "localhost" {
    type master;
    file "/etc/bind/db.local";
};
 zone "127.in-addr.arpa" {

    type master;
    file "/etc/bind/db.127";
};
 
zone "0.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0";
};
 
zone "255.in-addr.arpa" {
    type master;
    file "/etc/bind/db.255";
};
 


// ***.ddo.jpの正引きゾーン情報
zone "***.ddo.jp" IN {
    type master;
    file "db.localnet";
};
 
// 192.168.0.xxxの逆引きゾーン情報
zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "db.0.168.192";
};
 
};
 
// zone "com" { type delegation-only; };
// zone "net" { type delegation-only; };
 
// From the release notes:
// Because many of our users are uncomfortable receiving undelegated answers
// from root or top level domains, other than a few for whom that behaviour
// has been trusted and expected for quite some length of time, we have now
// introduced the "root-delegations-only" feature which applies delegation-o
// logic to all top level domains, and to the root domain. An exception lis
// should be specified, including "MUSEUM" and "DE", and any other top level
// domains from whom undelegated responses are expected and trusted.
// root-delegation-only exclude { "DE"; "MUSEUM"; };
 
include "/etc/bind/named.conf.local";
 
/etc/bind/named.conf.localを編集
外向きの設定 必要なら追加 今回はやらない
/etc/bind/db.localnetを新規作成
$TTL  86400
@          IN SOA  ****.ddo.jp. root.****.ddo.jp.(
                    2007030305 ; Serial
                    3600    ; Refresh
                    900    ; Retry
                    360000   ; Expire
                    86400 )  ; Minimum
 
           IN  NS    ****.ddo.jp.
           IN  MX 10   ****.ddo.jp.
 
localhost      IN  A     127.0.0.1
****.ddo.jp     IN  A     192.168.0.100
  
 
/etc/bind/db.0.168.192
$TTL  86400
@          IN SOA  ****.ddo.jp. root.****.ddo.jp.(
            2006090501 ; Serial
            28800   ; Refresh
            14400   ; Retry
            3600000  ; Expire
            86400 )  ; Minimum
    IN NS  ns.*****.ddo.jp.
    IN MX 10 mail.******.ddo.jp.
 
100   IN PTR  ****.ddo.jp.
107   IN PTR  mail.****.ddo.jp
 
 
キャッシュサーバ用の設定
キャッシュサーバ用ファイルのnamed.caの最新版は、以下の URLより入手。
ftp://ftp.rs.internic.net/domain/named.root

入手したnamed.rootファイルを/etc/bind/db.rootとしてコピーします。
#cp named.root /etc/bind/db.root
 
最後に、設定ファイルの所有者とパーミッションを変更しておきます。
#chown -R bind:bind /etc/bind
#chmod -R 700 /etc/bind
 
起動します!!
zoneファイルを全て作成したら、bindを起動。
debianでは/etc/init.d/bind9スクリプトを使用しますが、その前にnamedデーモンを bind ユーザで起動するように修正。
具体的には、/etc/init.d/bind9を下記のように修正します。
 
OPTIONS=""
  ↓
OPTIONS="-u bind"

起動!!
# /etc/init.d/bind9 start
起動後に、 namedデーモンの起動を確認。
# ps aux | grep named
bind    788 0.0 4.5 12164 2848 ?    Ss  20:11  0:00 /usr/sbin/named -u bind
bind    789 0.0 4.5 12164 2848 ?    S  20:11  0:00 /usr/sbin/named -u bind
bind    790 0.2 4.5 12164 2848 ?    S  20:11  0:00 /usr/sbin/named -u bind
bind    791 0.0 4.5 12164 2848 ?    S  20:11  0:00 /usr/sbin/named -u bind
bind    792 0.0 4.5 12164 2848 ?    S  20:11  0:00 /usr/sbin/named -u bind
root    795 0.0 0.8 1656 516 pts/0  S+  20:12  0:00 grep named
digで動作を調べる
 
# dig ********.ddo.jp @********.ddo.jp 

最初の再起動します。
rndcのキーが合わないらしく素直に停止できません。なので、一旦プロセスを殺します。それ以後は普通に停止できます。
$ sudo killall named
$ sudo /etc/init.d/bind9 start