サーバの基本的な設定ファイルとCentOS、Debian比較

こんにちは、牧野です。
4月になって、アシアルにも新しい人が入ってきて賑やかになった気がします。

さて、今回はサーバの設定についてです。
会社では、CentOS、Debianを使うことが多いです。設定ファイルの位置や用意されているコマンドがディストリビューションごとに異なることがあるので、その点を中心にいくつか紹介したいと思います。
ちなみに、自分が昔好きで使っていたのはVine Linuxでした。デフォルトで日本語設定がいろいろされていて、使いやすかった気がします。
その頃はemacsを使っていたのが、いつの間にかOSはCentOSに、エディタはvimを使うようになりました。

■ネットワークの設定ファイル
○共通
・使用するネームサーバ
/etc/resolv.conf
・hostsファイル
/etc/hosts

○違いがあるもの 1行目がCentOS、2行目がDebianです。
・ネットワークインターフェイスの設定
/etc/sysconfig/network-scripts/ifcfg-eth0(など、各インターフェイス名)
/etc/network/interfaces
・ホスト名など
/etc/sysconfig/network
/etc/hostname

■ユーザ、グループ関係の設定ファイル
○共通
・ユーザ一覧
/etc/passwd
・グループ一覧
/etc/group
・ユーザ名とパスワード一覧
/etc/shadow
・sudo設定ファイル
/etc/sudoers

ログイン時のシェルやログインできるユーザかどうかは、/etc/passwdファイルを見るとわかります。

■パッケージ管理関係
○違いがあるもの
・インストール
yum install パッケージ名
apt-get install パッケージ名
・削除
yum remove パッケージ名
apt-get remove パッケージ名
・検索
yum search キーワード
apt-cache search キーワード
・アップデート(マイナーバージョンアップ)
yum update (パッケージ名)
apt-get update (パッケージ名)
・アップグレード(メジャーバージョンアップ)
yum upgrade (パッケージ名)
apt-get upgrade (パッケージ名)
・パッケージコマンド設定ファイル
/etc/yum.conf
/etc/apt/apt.conf <= 必要な場合は作成する
・レポジトリ設定ファイル
/etc/yum.repos.d/*.repo
/etc/apt/sources.list
・インストールされているパッケージ一覧
rpm -qa
dpkg -l

Debianにはaptitudeコマンドもあります。
CentOSでレポジトリを追加する場合は、/etc/yum.repos.d内に拡張子が.repoのファイルを作成します。
utterramblings(通称??)やdagレポジトリを追加することがあります。
/etc/apt/apt.confでは、例えばプロキシサーバ経由でパッケージを取得したい場合は、次のように書きます。


Acquire::http::Proxy "http://asial.hogehoge:8888/";

■デーモン自動起動の設定
○違いがあるもの
・自動起動の追加
/sbin/chkconfig –add (デーモン名); /sbin/chkconfig (デーモン名) on
/usr/sbin/update-rc.d (デーモン名) defaults
・自動起動の解除
/sbin/chkconfig (デーモン名) off
/usr/sbin/update-rc.d (デーモン名) remove
・自動起動設定の確認
/sbin/chkconfig –list
Debianはない?
○共通
・起動時に実行される

デーモン名には、/etc/init.d内のシェルスクリプト名が入ります。
これは、CentOSの方が便利な気がします。

■iptables
○ファイアウォール設定
/etc/sysconfig/iptables

CentOSでは、ファイアウォール設定が上記ファイルに保存されます。
Debianの方は、あまり詳しく知りません。

■ntpd
○共通
・基本設定ファイル
/etc/ntp.conf
・時刻合わせの確認
/usr/sbin/ntpq -p

ntpdの設定をしておかないと、いつの間にか時間がずれてトラブルの原因になります。
ntpdを使わない場合、ntpdateコマンドでも時刻合わせができます。


/usr/sbin/ntpdate ntpサーバ名

■logrotate
○共通
・基本設定ファイル
/etc/logrotate.conf
・各ログファイルごとの設定
/etc/logrotate.d/*

logrotateを使うと、どこにあるログファイルでもローテーションが可能です。
フレームワークでログファイルに出力しているような場合は、/etc/logrotate.d/にファイルを追加して、ローテーションさせるようにした方がいいと思います。

■crond
○共通
・そのユーザのcron設定確認コマンド
/usr/bin/crontab -l
・そのユーザのcron設定変更コマンド
/usr/bin/crontab -e
・定期的に実行されるその他cron
/etc/crontab /etc/cron.d/* /etc/cron.hourly/* /etc/cron.daily/* /etc/cron.weekly/* /etc/cron.monthly/*
○違いがあるもの
・各ユーザのcronファイル
/var/spool/cron/ユーザ名
/var/spool/cron/crontabs/ユーザ名

■apache
○違いがあるもの
・起動スクリプト
/etc/init.d/httpd start|stop など
/etc/init.d/apache2 start|stop など
・コマンド
/usr/sbin/apachectl
/usr/sbin/apache2ctl
・基本設定ファイル
/etc/httpd/conf/httpd.conf
/etc/apache2/apache2.conf
・その他設定ファイル
/etc/httpd/conf.d/*.conf
/etc/apache2/conf.d/* /etc/apache2/mods-available/(*.load|*.conf) /etc/apache2/sites-available/*

Debianは他にも/etc/apache2内にいくつかファイルがあり、項目ごとに細かくファイルが分かれている印象があります。
また、各モジュール、バーチャルホストの有効、無効を切り替えるコマンドが用意されているのが特徴的です。
設定ファイルは/etc/apache2/mods-available、/etc/apache2/sites-available内に作成しておきます。
(実際は、/etc/apache2/mods-enabled内、/etc/apache2/sites-enabled内にある設定ファイルが有効になります。)


サイトを有効、無効にする
/usr/sbin/a2ensite ...
/usr/sbin/a2dissite ...
モジュールを有効、無効にする
/usr/sbin/a2enmod ... 
/usr/sbin/a2dismod ...

■mysql
○違いがあるもの
・基本設定ファイル
/etc/my.cnf
/etc/mysql/my.cnf

Debianに特徴的なのは、デフォルトで debian-sys-maint ユーザがいることだと思います。
/etc/mysql/debian.cnf
に debian-sys-maint ユーザのパスワード等が書かれています。
レプリケーションのために別サーバのmysqlデータディレクトリをコピーした際、mysql起動時にdebian-sys-maintユーザのパスワードが一致せず、エラーが発生したことがありました。

■php
○違いがあるもの
・基本設定ファイル
/etc/php.ini <= 作成します
/etc/php5/apache2/php.ini(ウェブ用) /etc/php5/cli/php.ini(コマンドライン用) /etc/php5/conf.d/*.ini(ウェブ、コマンドライン共通)

ネットワーク関係やiptablesなど、大切なコマンドが抜けていたりしますが、とりあえずざっと書いてみました。
重要な設定項目をおさえておけば、慣れているディストリビューションを好みで使えばいいのではないかと思います。