東京エリア Debian 勉強会
第 86 回 2012 年 3 月度

岩松 信洋
iwamatsu@debian.org
Twitter: @iwamatsu

2012 年 3 月 17 日

Agenda最近あった Debian 関連のイベント報告
第 85 回 東京エリア Debian 勉強会
第 0 回 福岡 Debian 勉強会

Debian 勉強会 -ユーザサイド- Apache2 HTTP サーバから始める Debian
今後のイベント

自己紹介

自己紹介

岩松 信洋（ いわまつ のぶひろ） / @iwamatsu

Debian Project Oﬃcial Developer
Bluetooth, OpenCV, mozc, libpng のメンテナ
普段は Linux カーネル、ブートローダなどを開発「 Git によるバージョン管理」という本を書いたので買ってください本日の資料本日の資料

セミナープレゼンテーション
http://tokyodebian.alioth.debian.org/2012-03.html
セミナーレジュメ http://tokyodebian.alioth.debian.org/2012-03.html
全部メモを取る必要はありません。必要な事だけメモを取りましょう。

イベント報告第 85 回東京エリア Debian 勉強会

Debian 開発者の為の KDE 開発環境について
月刊 Debhelper 第 4 回
cmake を使ってみた

第 0 回福岡 Debian 勉強会

なぜか福岡に行ったので、勉強会をした。

DKMS の仕組みと Debian の対応状況
Debian サーバ量産工場 - 無限ポチポチ on DebianApache2/HTTP
サーバから始める
Debian普段はちょっと開発者寄りな話をしている Debian 勉強会..

普段はちょっと開発者寄りな話をしている Debian 勉強会..

Debian 勉強会は恐ろしい所！

普段はちょっと開発者寄りな話をしている Debian 勉強会..

Debian 勉強会は恐ろしい所！ ではない。

普段はちょっと開発者寄りな話をしている Debian 勉強会..

Debian 勉強会は恐ろしい所！ ではない。
今回は OSC 出張企画として、ユーザー視点の勉強会を開催。

普段はちょっと開発者寄りな話をしている Debian 勉強会..

Debian 勉強会は恐ろしい所！ ではない。
今回は OSC 出張企画として、ユーザー視点の勉強会を開催。
ユーザサイド？ ユーザ向けの Debian 勉強会。

普段はちょっと開発者寄りな話をしている Debian 勉強会..

Debian 勉強会は恐ろしい所！ ではない。
今回は OSC 出張企画として、ユーザー視点の勉強会を開催。
ユーザサイド？ ユーザ向けの Debian 勉強会。
ユーザの生の意見を取り入れ、 Debian、 Upsteam に反映（ できるかも）。
反応が良ければ次回もあるかもしれません。

はじめに

はじめに

噂によると、 Debian は 世界（ ヨーロッパ）で HTTPサーバとして一番採用されている Linux ディストリビューションらしい。1

1

http://w3techs.com/blog/entry/debian_is_now_the_most_popular_linux_distribution_on_web_servers

はじめに噂によると、 Debian は 世界（ ヨーロッパ）で HTTPサーバとして一番採用されている Linux ディストリビューションらしい。1
日本では HTTP サーバとしてあまり利用されているように見えませんが。

1

http://w3techs.com/blog/entry/debian_is_now_the_most_popular_linux_distribution_on_web_servers

はじめに利用されている理由は HTTP サーバパッケージの種類が多くある事が理由の一つだとか。

Apache HTTPD、 Nginx、 Lighttpd、 etc..

はじめに実際に利用している人（ 商業利用）に聞くと理由はこれだ
けではないようだ。

はじめに実際に利用している人（ 商業利用）に聞くと理由はこれだ
けではないようだ。

Debian のパッケージングシステム

はじめに実際に利用している人（ 商業利用）に聞くと理由はこれだ
けではないようだ。

Debian のパッケージングシステム
APT

はじめに実際に利用している人（ 商業利用）に聞くと理由はこれだ
けではないようだ。

Debian のパッケージングシステム
APT
Apahce モジュールパッケージの多さはじめに実際に利用している人（ 商業利用）に聞くと理由はこれだ
けではないようだ。

Debian のパッケージングシステム
APT
Apahce モジュールパッケージの多さ
Web アプリケーションで採用される P 言語
（ Perl,Python, PHP）等のサポート

はじめに実際に利用している人（ 商業利用）に聞くと理由はこれだ
けではないようだ。

Debian のパッケージングシステム
APT
Apahce モジュールパッケージの多さ
Web アプリケーションで採用される P 言語（ Perl,Python, PHP）等のサポート
設定ファイルの柔軟性

設定ファイルの柔軟性

Debian ってややこしいイメージ (らしい)設定ファイルの柔軟性

Debian ってややこしいイメージ (らしい)Red Hat 系 と違い、 Debian 特有の設定ファイルの構成

設定ファイルの柔軟性

Debian ってややこしいイメージ (らしい)Red Hat 系 と違い、 Debian 特有の設定ファイルの構成
しかしなぜ特有の構成になっているのか？

設定ファイルの柔軟性

Debian ってややこしいイメージ (らしい)Red Hat 系 と違い、 Debian 特有の設定ファイルの構成
しかしなぜ特有の構成になっているのか？
理解すると、他のディストリビューションとのメリット、デメリットが見えてくるはず。

はじめにというわけで今回は、 Debian の Apache2 / HTTP サーバ (以下、 Apache2 ） について勉強しましょう。

Debian の Apache2バージョン

Debian の Apache2 バージョン
ディストリビューション
stabletesting
unstable
experimental
Upstreamバージョン
2.2.16-6+squeeze6
2.2.22-1
2.2.22-1
2.4.1

Debian の Apache2 バージョン
ディストリビューション
stabletesting
unstable
experimental
Upstreamバージョン
2.2.16-6+squeeze6
2.2.22-1
2.2.22-1
2.4.1Upstream と比べると少し古いが、機能的には問題ない。
もちろんセキュリティアップデートにも対応。
RHEL、 CentOS（ バージョン 2.2.15-15）と比べても特にバージョンが古いというわけでもない。

Debian のパッケージ構成とパッケージのインストール

パッケージ構成

パッケージ名apache2apache2-mpm-worker
apache2-mpm-prefork
apache2-mpm-event
apache2-mpm-itk
apache2.2-common
apache2.2-bin
apache2-utils
apache2-suexec
apache2-suexec-custom
apache2-doc

パッケージの説明
Apache HTTP サーバメタパッケージ
スレッドモデル HTTP サーバ
非スレッドモデル HTTP サーバ
イベントドリブンモデル HTTP サーバ
マルチユーザ環境 HTTP サーバ
Apache HTTP サーバ 共通ファイル
Apache HTTP サーバ 共通バイナリ
ウェブサーバ用ユーティリティ
mod-suexec 用 基本 suexec
mod-suexec 用 設定可能 suexec
Apache HTTP サーバドキュメント

パッケージ構成

パッケージ名apache2-dbg

apache2-prefork-dev
apache2-threaded-dev

パッケージの説明
Apache HTTP サーバ デバッグシンボ
ルファイル
非スレッドモデル HTTP サーバ 開発
用ファイル
マルチスレッドモデル HTTP サーバ
開発用ファイルパッケージ構成

HTTP サーバの処理モデルごとにパッケージ（ apache2-mpm-worker、 apache2-mpm-prefork、apache2-mpm-event、 apache2-mpm-itk）が分離されている。
用途に合わせたパッケージをインストールできる。
Red Hat 系は一つのパッケージに纏まっていて、処理モデル毎にサフィックスをつけている（ 例： httpd.worker）。

パッケージ依存関係

パッケージ依存関係

パッケージ依存関係

依存関係が複雑なのでユーザは不安になるかもしれない。

Debian では強力なパッケージ管理ツール APT によって気にする事なくインストールできる。

インストールインストール
Debian で パッケージをインストールする場合、 apt-getinstall コマンドを使う。
apache2 というメタパッケージを使ってインストールすることが多い。
$ sudo apt-get update$ sudo apt-get install apache2

デフォルトは apache2-mpm-worker（ スレッドモデルHTTP サーバ）がインストールされる。
他の HTTP サーバパッケージをインストールしたい場合は、各々のパッケージを指定してインストールする必要がある。

インストール

CentOS などでは、「 httpd」 パッケージとして提供されているのでパッケージ名が異なる。
普段は他のディストリビューションを使っている人は注意すること。

Apache HTTP サーバの起動と停止

Apache HTTP サーバの起動と停止

Debian は「 インストールしたものは使う」というポリシー。

Apache HTTP サーバの起動と停止

Debian は「 インストールしたものは使う」というポリシー。
パッケージインストール完了の時点で既に Apache HTTPサーバは起動している。

Apache HTTP サーバの起動と停止

Debian は「 インストールしたものは使う」というポリシー。
パッケージインストール完了の時点で既に Apache HTTPサーバは起動している。
停止したい場合:
sudo /etc/init.d/apache2 stop

Apache HTTP サーバの起動と停止

Debian は「 インストールしたものは使う」というポリシー。
パッケージインストール完了の時点で既に Apache HTTPサーバは起動している。
停止したい場合:
sudo /etc/init.d/apache2 stop
起動したい場合:
sudo /etc/init.d/apache2 startApache HTTP サーバの起動と停止

Debian は「 インストールしたものは使う」というポリシー。
パッケージインストール完了の時点で既に Apache HTTPサーバは起動している。
停止したい場合:
sudo /etc/init.d/apache2 stop
起動したい場合:
sudo /etc/init.d/apache2 start
再起動したい場合:
sudo /etc/init.d/apache2 restartApache HTTP サーバの起動と停止$ ps ax | grep apache210034 ?
Ss
0:05 /usr/sbin/apache2 -k start
13008 ?
S
0:00 /usr/sbin/apache2 -k start....
$ sudo /etc/init.d/apache2 stop
$ ps ax | grep apache2
16833 pts/1 S+
0:00 grep apache2$ sudo /etc/init.d/apache2 start$ ps ax | grep apache210048 ?
Ss
0:05 /usr/sbin/apache2 -k start
13024 ?
S
0:00 /usr/sbin/apache2 -k start....

Apache HTTP サーバの起動と停止

デフォルトの状態では、マシンを立ち上げ時に HTTPサーバが起動するようになっている。

Apache HTTP サーバの起動と停止デフォルトの状態では、マシンを立ち上げ時に HTTPサーバが起動するようになっている。
起動しないようにするには、ランレベル毎に動作するサーバ（ サービス）変更する必要がある。

Apache HTTP サーバの起動と停止

デフォルトの状態では、マシンを立ち上げ時に HTTPサーバが起動するようになっている。
起動しないようにするには、ランレベル毎に動作するサーバ（ サービス）変更する必要がある。
サービスの起動設定 → update-rc.d コマンドを使う。

Apache HTTP サーバの起動と停止

全てのランレベルで Apache2 を起動させないように設定:
sudo update-rc.d -f apache2 remove
インストール直後のデフォルトの状態に戻したい場合:
sudo update-rc.d -f apache2 default

Apache HTTP サーバの起動と停止

Red Hat 系だと chkconfig を使う。

Apache HTTP サーバの起動と停止

Red Hat 系だと chkconfig を使う。
Debian にはないんでしょ？

Apache HTTP サーバの起動と停止

Red Hat 系だと chkconfig を使う。
Debian にはないんでしょ？ もちろん Debian でも提供されている。

Apache HTTP サーバの起動と停止

Red Hat 系だと chkconfig を使う。
Debian にはないんでしょ？ もちろん Debian でも提供されている。
chkconfig は RedHat 系のサービス管理ツールなので....。

Apache HTTP サーバの起動と停止

Red Hat 系だと chkconfig を使う。
Debian にはないんでしょ？ もちろん Debian でも提供されている。
chkconfig は RedHat 系のサービス管理ツールなので....。
インターフェイスが似ている sysv-rc-conf があるのでこちらを使う。

Apache HTTP サーバの起動と停止

現在の状態を出力:
sudo sysv-rc-conf --list
ランレベル 2 の apache2 を無効にする:
sudo sysv-rc-conf --level 2 apache2 off
ランレベル 2 の apache2 を有効にする:
sudo sysv-rc-conf --level 2 apache2 onApache HTTP サーバの起動と停止$ sudo apt-get install sysv-rc-conf$ sudo sysv-rc-conf --list
apache20:off1:off2:on3:on4:on5:on6:off
bootlogd
S:on（ 中略）$ sudo sysv-rc-conf --level 2 apache2 off$ sudo sysv-rc-conf --list | head -1
apache20:off1:off2:off3:off4:off5:off6:off$ sudo sysv-rc-conf --level 2 apache2 on$ sudo sysv-rc-conf --list | head -1
apache20:off1:off2:on3:off4:off5:off6:off

Apache2 の設定ファイル

Apache2 の設定ファイル

Red Hat 系の場合
主な設定は /etc/httpd/conf/httpd.conf で行う
include されるファイルは /etc/httpd/conf.d/ディレクトリに格納する。

Apache2 の設定ファイル
Debian の場合
設定ファイル/etc/apache2/apache2.conf/etc/apache2/httpd.conf/etc/apache2/conf.d//etc/apache2/ports.conf/etc/apache2/envvars/etc/apache2/mods-available//etc/apache2/mods-enabled//etc/apache2/sites-available//etc/apache2/sites-enabled//var/www/usr/lib/cgi-bin/var/log/apache2

内容
基本設定
オーバーライドする設定
Include するファイルを格納
ポートの設定環境変数の設定
利用可能なモジュール設定
利用中のモジュール設定
利用可能なサイト設定
利用中のサイト設定
ドキュメントルート
cgi-bin
Apache2 ログ

Apache2 の設定

Apache2 の設定
apache2.conf には以下の行があり、 apache2.conf から各設定が読み込まれるようになっている。
（ 省略）# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf# Include all the user configurations:
Include /etc/apache2/httpd.conf# Include ports listing
Include /etc/apache2/ports.conf（ 中略）# Include generic snippets of statements
Include /etc/apache2/conf.d/# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/Apache2 の設定

Apache2 の設定を変更する場合、 apache2.conf を変更しない。
httpd.conf や ports.conf を変更する。

サイトの設定サイトを設定する

Debian は/etc/apache2/sites-available/defaultに apache2 のデフォルトのサイト設定を格納している。
サイトを一つだけ構築する場合はこのファイルを変更する。
変更した後は、 apache2 を再起動する。
再起動方法$ sudo /etc/init.d/apache2 restartサイトの設定

Debian の Apache2 で複数のサイトを立ち上げる場合、apache2.conf は編集しない。
サイト別に設定を記述し、/etc/apache2/sites-available/ディレクトリに格納する。
そのサイト設定を有効にするコマンド「 a2ensite」実行し、 Apache2 を再起動する。

サイトの設定

1

サイト設定を記述する（ test とする)。

2

サイト設定を/etc/apache2/sites-available/test に格納する。

3

sudo a2ensite test を実行する。
実行すると/etc/apache2/sites-enabled/ にシンボリックリンクが張られ設定が有効になる。
Apache2 を再起動する。
有効にしただけでは、稼働している httpd サーバには設定が反映されていないため。

4

サイトの設定$ ls -F /etc/apache2/sites-enabled/000-default@ default-ssl.old@$ sudo a2ensite test
Enabling site test.
Run ’/etc/init.d/apache2 reload’ to activate new configuration!
$ ls -l /etc/apache2/sites-enabled/000-default@ test@ default-ssl.old@$ sudo /etc/init.d/apache2 restartサイトの設定を無効にする
サイトの設定を無効にする場合、「 a2dissite コマンド」に無効にしたいサイトの設定ファイル名を指定して実行する。
実行すると/etc/apache2/sites-enabled/からシンボリックリンクが削除される。
サイト設定を無効にした後は、有効時と同様に Apache2を再起動する必要がある。

$ sudo a2dissite test
Site test disabled.
Run ’/etc/init.d/apache2 reload’ to activate new configuration!
$ ls -l /etc/apache2/sites-enabled/
000-default@ default-ssl.old@

サイトの設定を無効にする

Debian ではサイトの設定を分離し、サイト毎に状態を管理することができる。
他のディストリビューションでは include 等を使って管理できるが、ファイル内容を変更する必要があるので非常に手間。
Debian はシンボリックリンクを使うことによってApache2 の設定ファイルを変更せずにサイト設定の有効・ 無効ができる。

モジュールの設定

モジュールを有効/無効にする

Debian のモジュールに関する設定はモジュール毎の設定ファイルとして mods-available ディレクトリに格納されている。
それらのうち、実際に有効なものが mods-enabled ディレクトリにシンボリックリンクが張られる。
シンボリックリンクは手動で行わない。
モジュールを有効にする場合には a2enmod コマンドを使う。
無効にする場合には a2dismod コマンドを使う。
有効・ 無効にした後は Apache2 を再起動する。

例: mod info を有効にする$ ls -l /etc/apache2/mods-enabled/ | grep info
（ 出力なし）$ sudo a2enmod info
Enabling module info.
Run ’/etc/init.d/apache2 restart’ to activate new configuration$ sudo /etc/init.d/apache2 restart.....
$ sudo /usr/sbin/apache2ctl -D DUMP_MODULES 2>/dev/null | grep
info_module (shared)例: mod info を無効にする$ ls -l /etc/apache2/mods-enabled/ | grep info
info.conf@
info.load@$ sudo a2dismod info
Module info disabled.
Run ’/etc/init.d/apache2 restart’ to activate new configuration$ ls -l /etc/apache2/mods-enabled/ | grep info
$ sudo ’/etc/init.d/apache2 restart.....
$ sudo /usr/sbin/apache2ctl -D DUMP_MODULES 2>/dev/null | grep
（ 出力なし）その他

その他

libapache2-mod-php5 と apache2-mpm-prefork

apache2-mpm-worker（ スレッドモデル） で PHP5（ mod-php5） は使えない。
PHP5（ mod-php5）の制限で、スレッドセーフではないため。
apache2-mpm-prefork（ 非スレッドモデル）を使う必要がある。
libapache2-mod-php5 をインストールすると、apache2-mpm-worker が削除され、 apache2-mpm-preforkがインストールされる（ 親切設計）。
PHP ユーザの方は注意しましょう。

再起動確認についてglibc が更新されたとき、サーバ系は再起動する必要がある。
Red Hat 系では再起動してくれず、管理者が手動で行う必要がある。
CentOS を使っている会社ではデーモンを再起動しないとならないアップデートがあったかどうかチェックするツー
ルをわざわざ作って管理しているようだ。ダサイ。
しかし Debian では再起動の確認が行われる（ 設定によって自動再起動等も可能）。
管理者の手を煩わせない。
このような細かいところに気を使ってくれるのも Debianの良い所。

まとめ

Debian のパッケージ古いというのは昔の話。
セキュリティ対応あるし、早い。
Debian の設定ファイルが独自なのは理由がある。
専用のツールもあるので、慣れるとメンテナンスが容易。
パッケージによる、細かいところへの気配り。
とりあえず、 Debian 使え。

質問

何か質問はありますか？

今後のイベント

今後のイベント3 月 関西 Debian 勉強会
第 57 回 関西 Debian 勉強会
日時: 2012 年 3 月 25 日 (日) 13:30 - 17:00
場所:福島区民センター 303 号会議室

4 月 東京エリア Debian 勉強会
第 87 回 東京エリア Debian 勉強会
日時: 2012 年 4 月 21 日 (土)（ 予定）
場所: 未定Debian Hack Cafe
どこかで開催している謎イベント
Twitter: @debian hackcafe で告知