Webサーバ構築で
心がけるべき二つのこと

 2011/3/3 高倉利明
はじめに
  今日の内容は
   二つ!
今日の内容

サーバへのライブラリ
インストール作法
Apache設定ファイル作法
※CentOS5系前提で。
内容は基本的なことです。
→みんな出来てるかな?
その1
サーバへの
ライブラリインストール作法
大前提:
可能な限りソースから
入れるな!
ソースから入れるデメリット

 サーバ内の状態がわからくなる
−   何が?
−   ログはどこ?
−   設定ファイルはどこ?

 ライブラリのアップデートが大変
→Iチーフマネージャに某案件での苦労話を聞きましょう。

 インストールオプションを自分で適切な設定を考
 えなければならない ※パッケージは作成時に
 OSに最適化されている
パッケージで入れることで改善!

 サーバ内の状態が固定
 −   何が? → $ yum list
 −   ログはどこ? → /var/log/~
 −   設定ファイルはどこ?→ /etc/~

 ライブラリのアップデートが簡単
→$ yum install や $ rpm -ivhなど

 インストールオプションがOSに最適化されている
yumで入れる_デフォルト

 多くのライブラリはyumで入る。
 (apache,tomcat,mysql.....)

 Apache等は独自パッチが当たっており、見た目
 のバージョンよりも機能が多い

httpd.x86_64 2.2.3-43.el5
→実は2.2.3以降の機能も備わっている
yumで入れる_外部リポジトリ

標準リポジトリに無いライブラリは
rpmforgeやutterramblingsといった
外部リポジトリを使用して入れる。


ex) utterramblings
→PHP5.2系のインストール可能
rpmパッケージを探す

 ライブラリの公式サイトでrpmを用意している場合
 が結構ある。
 ※torittonとか。残念ながらrubyは無い。
checkinstallでrpm化

 checkinstall(パッケージ作成ツール)で
 rpm化して入れる!

●Rubyなら~
# make
# checkinstall --fstrans=no
# rpm -ivh
  /usr/src/redhat/RPMS/x86_64/ruby-1.8.7-
  p302-1.x86_64.rpm
pacoで管理

 どうしても駄目なときはpacoで入れる
→ソースから入れるライブラリを管理できる

●インストール
# make
# paco -D make install
●リスト表示
  # paco -a
ruby-1.8.7-p72 rubygems-1.3.0
●アンインストール
  # paco -r ruby-1.8.7-p72
まとめ
以下の優先順位で選択する

1.   yumデフォルトで入れる
2.   yum外部リポジトリを利用して入れる
3.   rpmが用意されていれば使用して入れる
4.   checkinstallでrpmを作成して入れる
5.   pacoでインストールを管理する
その2
Apache設定ファイル作法
基本は「設定の差分をconf.dに置く」


/etc/httpd
       |-/conf
       |    |-/httpd.conf ←ほぼ修正しない
       |
       |-/conf.d ←ここに設定ごとの差分を置く
            |-svn.conf
            |-ssl.conf
            …
※ デフォルトでは「*.conf」のみ読み込まれる
同じ処理を二カ所に書くな!:問題点

 ありがちなパターン
→<VirtualHost *:80>にPassengerの設定を書く
→SSLページでも同じ設定が必要
→ssl.confにコピペして設定

→<VirtualHost *:80>の設定変更が必要になる
→SSLページでも同じ設定変更が必要
→ssl.confにコピペ…以下略

ちょっとした変更でも複数箇所の対応が必要!
同じ処理を二カ所に書くな!:改善

 ファイル分けしてIncludeで読み込む

/etc/httpd/conf.d
           |-virtualhost.conf ←HTTP設定
           |-ssl.conf         ←HTTPS設定
           |-passenger.part ←Passenger設定
同じ処理を二カ所に書くな!:改善

●virtualhost.conf
<VirtualHost *:80>
  Include conf.d/passenger.part
~
</VirtualHost>

●ssl.conf
<VirtualHost *:443>
  Include conf.d/passenger.part
~
</VirtualHost>
機能ごとにファイル分割

ファイルの役割をはっきりさせる!

/etc/httpd/conf.d
           |-virtualhost.conf ←HTTP設定
           |-ssl.conf         ←HTTPS設定
           |-svn.conf         ←Subversion設定
           |-passenger.part ← Passenger設定
           |-redirect.part ← リダイレクト設定
           |-access.part ← アクセス制限設定
           …
まとめ
以下を考慮して設定する!


1. httpd.confは極力触れず、/etc/httpd/conf.dに
   差分設定ファイルを置く
2. 複数のVirtualHostで共通の設定はファイル分け
   した後Includeする
3. ポートや目的ごとにファイルを分けて配置する
もう一度
 まとめ
サーバへのライブラリ
インストール作法
以下の優先順位で選択する

1.   yumデフォルトで入れる
2.   yum外部リポジトリを利用して入れる
3.   rpmが用意されていれば使用して入れる
4.   checkinstallでrpmを作成して入れる
5.   pacoでインストールを管理する
Apache設定ファイル作法
以下を考慮して設定する!

1. httpd.confは極力触れず、/etc/httpd/conf.dに
   差分設定ファイルを置く
2. 複数のVirtualHostで共通の設定はファイル分け
   した後Includeする
3. ポートや目的ごとにファイルを分けて配置する
質疑応答
ご静聴
 ありがとう
ございました。

Webサーバ構築で心がけるべき二つのこと