linux – どのapacheモジュールが有効/インストールされているかを確認するには?

apache-http-server linux ubuntu

どのapacheモジュールが有効になっているかを確認する最もエレガントな方法はどれですか?

  402  udo  2011-05-17


ベストアンサー

Ubuntuを使っているので試してみてください

apache2ctl -M

492  Linker3000  2011-05-17


httpd -Mは、どのモジュールがビルトインかシェアードかを教えてくれます

122  Ignacio Vazquez-Abrams  2011-05-17


リモートサーバ上でコマンドを実行できない場合は、上記の回答の何も動作しません。user” 権限しかない場合や、全く権限がない場合は、test.php スクリプトを作成してみてください

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

ただし、PHPがmod_phpとしてインストールされている場合のみ動作します

40  yatsek  2012-04-11


これは、httpd, apachectl, プロセスにアクセスできない共有ホスト上の一部の人のために役立つかもしれません

有効なモジュール。ls /etc/apache2/mods-enabled/

利用可能なモジュール。ls /etc/apache2/mods-available/

31  CodeBrauer  2015-05-04


また、apachectlを使用することもできます

apachectl -t -D DUMP_MODULES

19  Eddie B  2013-02-06


実はここには3つの質問があると思います。どれを質問しているのかはわかりませんが

  • ディスクに入っているモジュールは?使えるモジュールは何か

これは (通常は) apache ディストリビューションの modules ディレクトリ、通常は /etc/httpd/modules/ にあるでしょう

  • どのようなモジュールが特定のインスタンスを実行するように設定されているか

これは/usr/sbin/httpd -Mで確認できます。特定の設定ファイルで確認したい場合 /usr/sbin/httpd -M -f /path/to/config/file

  • 実行中のapacheには何が入っているのか

多くの情報を得るためには、http://machinename/server-info/ これはデフォルトでは設定されていないので、設定しなければなりません少し情報が漏れてしまうので、ローカルの人だけが見られるように設定してください

マシン上にいて、実行中のユーザーになることができるアクセス権を持っている場合は、プロセスを確認することで何がロードされているかを確認することもできます。で親プロセスを見つけることができます

ps -ef | gawk '/httpd/ && $3 == 1{print $2}'

続いて、チェックしてみましょう

cat /proc/PID_FROM_ABOVE/maps

14  Rich Homolka  2011-05-17


Redhat/CentOSの場合は、httpdapache2ctlの代わりに使用します

を使う必要があるということです

httpd -M

しかし、httpdはほとんど期待通りの道を歩むことはありません

CentOS 5.8で確認できるのは、実際のパスが/usr/sbin/httpdになっていることです

/usr/sbin/httpd -M

しかし、それが道ではないのであれば、その道を発見することができます。私がどのようにしてそうすることができたのかをご紹介します

まず、制御に使われているデーモンを確認してみました

less /init.d/httpd

40番線付近

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd

どこにあるか教えてくれましたこれが助けになることを願っています

11  geedew  2014-03-11


有効なモジュールをすべてリストアップします

a2query -m

6  MetalGodwin  2016-08-30


私のgentooでは、apache2ctl modulesを実行するとモジュールの一覧が表示されます

3  Grzegorz Golec  2014-05-21


php スクリプトの中からチェックしています (mod_xsendfile の場合)

if (in_array(PHP_SAPI, array('apache','apache2filter','apache2handler'))
&& in_array('mod_xsendfile', apache_get_modules()))
\\doSomething();

PHP_SAPI のチェックは、apache_get_modules()がそのコンテキストでは動作しないため、PHP が CGI として実行されている場合を除外することです。さらに、これを php < 5.0.0.0 で実行した場合、apache2handler コンテキストのみが期待した結果を生成します

2  noobish  2016-04-11


そのための小さなpythonスクリプトを作成しました。https://github.com/zioalex/unused_apache_modulesをご覧ください

これは期待できることです

curl http://localhost/server-info > http_modules_test.txt
cat http_modules_test.txt| python find_unused_apache_mod.py

1
Module name mod_python.c
Configuration Phase Participation: 4
Request Phase Participation: 11
Current Configuration: 3

2
Module name mod_version.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 1

3
Module name mod_proxy_connect.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 0

To remove safely:
['mod_proxy_connect.c']
POPPED:  mod_proxy_connect.c

To KEEP:  ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']

1  Alex  2018-07-19


タイトルとURLをコピーしました