Linuxゲリラ戦記

Linux楽しいよ。

左を向いているペンギンみたいなキャラクター、ナックス

Debian GNU/Linux 5.0 "Lenny"でApache2とPHP5をインストール

Apache2をaptitudeコマンドでインストール

# aptitude install apache2

PHP5をApache2で使うためにインストールしたいので、まずは検索してパッケージの情報を調べる。

# aptitude search php5

どうやら以下の物が欲しいものらしい。

p  libapache2-mod-php5  - server-side, HTML-embedded scripting language (Apache 2 module)

インストールする。

# aptitude install libapache2-mod-php5

これだけで基本的に使えます。

起動コマンドは

# /etc/init.d/apache2 start

終了コマンドは

# /etc/init.d/apache2 stop

再起動コマンドは

# /etc/init.d/apache2 restart

私は、apacheの「各ユーザーのホームディレクトリにpublic_htmlと言うディレクトリを作ればアドレスhttp://localhost/~ユーザー名/でアクセス出来るようになる」という機能を使いたかったので、その機能をONにする。

Apache2ではモジュール機能と言って、各機能をモジュール形式で組み込めるようになっている。

Debianの場合、Apache2の設定ファイルは/etc/apache2にある。

私と同じインストール方法であれば、ここにmods-availableというディレクトリとmods-enabledというディレクトリが出来ている。

mods-availableディレクトリには使用できるモジュールが入っており、mods-enabledには現在使用中のモジュールが入っている。

lsコマンドでmods-availableの中を見て、使いたいモジュールを探す。今回私が使いたいのはuserdirの機能。まず、userdir.confを自分の好みに編集する。

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
          AllowOverride FileInfo AuthConfig Limit Indexes
          Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
          <Limit GET POST OPTIONS>
            Order allow,deny
            Allow from all
          </Limit>
          <LimitExcept GET POST OPTIONS>
            Order deny,allow
            Deny from all
          </LimitExcept>
        </Directory>
</IfModule>

上記がデフォルトの状態。このなかの7行目のIndexesはディレクトリの中にindexファイルが無いと、そのディレクトリの中の全てのファイルを表示するという機能を持つ。これを消す。

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
          AllowOverride FileInfo AuthConfig Limit Indexes
          Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
#デフォルト     Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
          <Limit GET POST OPTIONS>
            Order allow,deny
            Allow from all
          </Limit>
          <LimitExcept GET POST OPTIONS>
            Order deny,allow
            Deny from all
          </LimitExcept>
        </Directory>
</IfModule>

一応、デフォルト状態をコメントアウトで残しておく。で、保存。

次に、実際に機能をコマンドで組み込む。Debianでは以下のようなコマンドで機能を組み込める。

$ sudo /usr/sbin/a2enmod モジュール名

つまり、今回はこう。

$ sudo /usr/sbin/a2enmod userdir

ルートユーザーなら多分以下の様に出来る(と思う)。

# a2enmod userdir

ちなみに、いらない機能を取り除くにはこうする。

$ sudo /usr/sbin/a2dismod モジュール名

で、Apacheを再起動すればオッケー。

# /etc/init.d/apache2 restart

でも、私の場合、500 Internal Server Errorが出た。

/var/log/apache2/error.logにあるApache2のエラーログを見る。

[Wed Mar 04 15:26:53 2009] [alert] [client 127.0.0.1] /home/ユーザー名/public_html/.htaccess:
			 Invalid command 'RewriteCond', perhaps misspelled or defined by a module not included in the server configuration

.htaccessのファイルがどうやら悪さをしているらしい。試しに.htaccessを別の場所に移したらちゃんと動いた。

ググっていたら、.htaccessで、RewriteCondという機能を使ったファイルの書き変えを行っているが、そもそものrewriteするためのモジュールを組み込むのを忘れていたらしい。先ほどと同じように組み込む。

$ sudo /usr/sbin/a2enmod rewrite

動いた。満足。

Debianの場合、インストールされた物は次回からパソコンを起動したときに自動的に起動されるようになっている。

ただ、私は常にApache2を起動したいわけじゃないので、パソコンを起動しても自動的にApache2が起動しないようにする。

自動起動するものを取り除くには

# update-rc.d -f プログラム名 remove

逆に、自動起動に追加するには

# update-rc.d プログラム名 defaults

とするそうな。

自動起動するプログラムは以下のコマンドなどで確認する(詳しくは他のサイトを参照して下さい)。

$ ls /etc/rc2.d/

今回はApache2を自動起動から取り除きたいので以下の様にする。

# update-rc.d -f apache2 remove

以上。

今回参考にしたサイト
Welcome! - The Apache Software Foundation
Options ディレクティブ Apache Core Features
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 - bluespearの勉強メモ - bluespearグループ
Debian apache2 モジュールを有効にする / 無効にする方法について - Mlog OG
apache2 - おいぬまの覚え書き
Debianの起動とランレベルの整理 [Linux(Debian)] オニオンソード!!