このエントリーをはてなブックマークに追加


a2enmodとa2dismodコマンドの動作について

Apache2をインストールしてモジュールを有効化(a2enmod)、無効化(a2dismod)する場合はコマンドを使うと便利です。
(Ubuntu, Debianで確認しました。他のディストリビューションでは確認していません…)
aptコマンドでApacheをインストールしたあと、/etc/apache2/apache2.conf をみてみてください。
modに関する設定がぜんぜんないのが確認できます。
しかし、以下の宣言により、modの設定を読み込んでいるのが確認できます。

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

以下、a2enmodとa2dismodの動作をrewrite_modを例にし記します。


スポンサーリンク

modの宣言ファイル

以下のコマンドでApache2のmod一覧が表示されます。

$ ls /etc/apache2/mods-available/
access_compat.load    buffer.load         headers.load              negotiation.conf     sed.load
actions.conf          cache.load          heartbeat.load            negotiation.load     session.load
actions.load          cache_disk.conf     heartmonitor.load         php5.conf            session_cookie.load
alias.conf            cache_disk.load     ident.load                php5.load            session_crypto.load
<snip>

上記の通り、/etc/apache2/mods-availableにファイルがあるのが確認できます。

a2enmodの動作

詳細は、man a2enmodを確認してください。
以下の例で rewrite_mod を有効にしてみます。

  1. rewrite_modがあるかどうかを確認します。
    以下の通りmodが表示されます。
    $ ls /etc/apache2/mods-available/
    access_compat.load    buffer.load         headers.load              negotiation.conf     sed.load
    actions.conf          cache.load          heartbeat.load            negotiation.load     session.load
    actions.load          cache_disk.conf     heartmonitor.load         php5.conf            session_cookie.load
    alias.conf            cache_disk.load     ident.load                php5.load            session_crypto.load
    <snip>
  2. たくさん表示されたので、grepをしてみます。
    rewriteが存在することが確認できます。
    $ ls -1 /etc/apache2/mods-available/ | grep rewrite
    rewrite.load
  3. 見つけたファイルをcatするとmodを有効化する設定が記述されています。
    $ cat /etc/apache2/mods-available/rewrite.load 
    LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
  4. a2enmodでrewriteを有効にします。
    a2enmod rewrite
    構文は以下のようになります。
    a2enmod モジュール
    Ubuntuなどの場合は、sudoをつけて実行してください。
  5. 以下、実際に実行したときの出力です。
    modを有効にするため、Apache2の再起動が促されます。
    $ sudo a2enmod rewrite
    Enabling module rewrite.
    To activate the new configuration, you need to run:
      service apache2 restart
  6. a2enmodで何が行われているかを以下に説明します。
    最初に記述した通り、apache2.confには以下の記述があります。
    IncludeOptional mods-enabled/*.load
    a2enmodコマンドで、/etc/apache2/mods-available/rewrite.load のリンクを /etc/apache2/mods-enabled/ に作成しています。
    $ ls -l /etc/apache2/mods-enabled/rewrite.load 
    lrwxrwxrwx 1 root root 30 12月 17 11:02 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load
    これにより、IncludeOptional mods-enabled/*.load 内にrewriteのリンクが存在するうようになるので、Apache2再起動によりrewriteが有効になります。

a2dismodの動作

a2enmodの動作でも記述しましたが、a2dismodによりa2enmodで作成したリンクを削除します。
これにより、rewriteの設定がなくなるのでApache2再起動によりrewriteが無効になります。
以下に実行例を記します。

$ ls -l /etc/apache2/mods-enabled/rewrite.load 
lrwxrwxrwx 1 root root 30 12月 17 11:02 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load
$ sudo a2dismod rewrite
Module rewrite disabled.
To activate the new configuration, you need to run:
  service apache2 restart
$ ls -l /etc/apache2/mods-enabled/rewrite.load 
ls: /etc/apache2/mods-enabled/rewrite.load にアクセスできません: そのようなファイルやディレクトリはありません
$ 

a2enmod, a2dismodとは

a2enmodとa2dismodをfileコマンドで確認すると、perlスクリプトであることが確認できます。
また、a2dismodはa2enmodへのリンクであることが確認できます。

$ file `which a2enmod`
/usr/sbin/a2enmod: a /usr/bin/perl -w script, ASCII text executable
$ file `which a2dismod`
/usr/sbin/a2dismod: symbolic link to a2enmod
$ ls -l `which a2dismod`
lrwxrwxrwx 1 root root 7  9月 18 01:51 /usr/sbin/a2dismod -> a2enmod
$ head -20 `which a2enmod`
#!/usr/bin/perl -w
#
# a2enmod by Stefan Fritsch <sf@debian.org>
# Licensed under Apache License 2.0
#
# The coding style is "perltidy -pbp"

use strict;
use Cwd 'realpath';
use File::Spec;
use File::Basename;
use File::Path;
use Getopt::Long;

my $quiet;
my $force;
my $maintmode;
my $purge;

Getopt::Long::Configure('bundling');

興味のある方は、スクリプトを読んでみてください。

以上、a2enmodおよびa2dismodについての簡単な説明でした。
詳細については、man a2enmodなどで確認してください。

設定変更後は、Apache2の再起動を忘れずに


スポンサーリンク

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-12-17 (土) 11:21:10 (644d)