සක්‍රීය කර ඇති / ස්ථාපනය කර ඇති කුමන අපාචේ මොඩියුලයන් පරීක්ෂා කරන්නේ කෙසේද?


396

කුමන අපාචේ මොඩියුල සක්‍රීය කර ඇත්දැයි පරීක්ෂා කිරීමට වඩාත්ම අලංකාර ක්‍රමය කුමක්ද?

Answers:


486

ඔබ උබුන්ටු වල සිටින නිසා උත්සාහ කරන්න:

apache2ctl -M

12
apache2ctl -M විශිෂ්ට ලෙස ක්‍රියා කරයි
udo

3
apache2 -M මෙම දෝෂයට හේතු වේapache2: bad user name ${APACHE_RUN_USER}
udo

4
සෑහෙන තරම් සාධාරණයි - එයට හේතුව ඔබ apache වින්‍යාසය තුළ අර්ථ දක්වා ඇති apache run time user (බොහෝ විට www-data) ලෙස විධානය ක්‍රියාත්මක නොකිරීමයි. මෙය නිවැරදි කිරීමට ක්‍රමයක් ඇත, නමුත් ඔබ apache2ctl වෙත ඇලී සිටිය හැකිය.
Linker3000

9
sudo apache2ctl -M | sort
mmdemirbas

4
බොහෝ ප්‍රයෝජනවත් විකල්ප (කොඩි) ඇති apache2ctlනමුත් ඒවා ලැයිස්තුගත කර ඇත්තේ මෑන්පේජ් හෝ ඉන් නොවේ apache2ctl --help. ඒ ඔවුන් වෙත භාර දී ඇති බැවිනි httpd. ඒවා ලැයිස්තුගත කර ඇත්තේ httpd ප්‍රලේඛනයේ පමණි.
ලුට්ස් ප්‍රීචෙල්ට්

120

httpd -M ගොඩනගා ඇති හෝ බෙදාගෙන ඇති මොඩියුල මොනවාදැයි ඔබට කියනු ඇත.


හ්ම් ... httpd -M root ලෙස දියත් කිරීමේදී මට "bash: httpd: විධානය හමු නොවීය"
udo

එබැවින් httpdක්‍රියාත්මක කළ හැකි සම්පූර්ණ මාර්ගය සඳහන් කරන්න .
ඉග්නේෂියෝ වස්කස්-ඒබ්‍රම්ස්

9
@ ඉග්නේෂියෝ වාස්කේස්-ඒබ්‍රම්ස්: උබුන්ටු (සහ වෙනත් ඩේබියන් පදනම් කරගත් බෙදාහැරීම්) වල නම apache2සහ නැත httpd, එබැවින් එය සොයාගත නොහැකි විය.
ඩැනියෙල් ඇන්ඩර්සන්

3
අපාචේ යනු රතු පැහැයෙන් httpd වේ. මෙය ඔබ වෙනුවෙන් වැඩ නොකරන්නේ නම් අනෙක් පිළිතුරු වලින් එකක් උත්සාහ කරන්න.
ජැක්ස්_ගල්ච්

3
CentOS ද apache2 වෙනුවට httpd භාවිතා කරයි
pedromanoel

38

ඔබට දුරස්ථ සේවාදායකයේ විධාන ක්‍රියාත්මක කළ නොහැකි නම් ඉහත පිළිතුරු වලින් කිසිවක් ක්‍රියා නොකරයි. ඔබට ඇත්තේ “පරිශීලක” වරප්‍රසාද පමණක් හෝ කිසිවෙකු නොමැති නම් test.phpස්ක්‍රිප්ට් නිර්මාණය කිරීමට උත්සාහ කරන්න :

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

එය ක්‍රියාත්මක වන්නේ PHP ලෙස ස්ථාපනය කර ඇත්නම් පමණි mod_php.


4
එසේම, මෙය ප්‍රසිද්ධියේ දැකීමට ඔබට අවශ්‍ය නොවනු ඇත. පරිපාලකගේ IP සමඟ සේවාදායකයාට එම ප්‍රති result ලය සීමා කිරීමට අවශ්‍ය විය හැකිය. ඔබ එම ස්ක්‍රිප්ට් එක අවසන් කළ වහාම එය ඉවත් කිරීමට ඔබට අවශ්‍ය වනු ඇත. ආරක්ෂාව ගැඹුරින් ඇති නිසා; එය අවශ්‍ය ප්‍රමාණයට වඩා පහසු නොකරන්න.
පාර්තියන් වෙඩි තැබීම

29

සමහර විට මෙම ප්රවේශය නොමැති හවුල් සත්කාරක මත සමහර අය සඳහා උපකාරී වනු ඇත httpd, apachectlහෝ ක්රියාවලිය:

සක්‍රීය මොඩියුල: ls /etc/apache2/mods-enabled/

ලබා ගත හැකි මොඩියුල: ls /etc/apache2/mods-available/


මෙන්න සම්පූර්ණ ලැයිස්තුව, apache2ctl ඒවා පෙරහන් කරන්න
jgpATs2w


14

මම හිතන්නේ ඇත්ත වශයෙන්ම මෙහි ප්‍රශ්න තුනක් තිබේ. ඔබ ඉල්ලන්නේ කුමක්දැයි මට විශ්වාස නැත.

  • ඔබට තැටියේ ඇති මොඩියුල මොනවාද? ඔබට භාවිතා කළ හැකි සියලුම මොඩියුල මොනවාද?

මෙය (සාමාන්‍යයෙන්) ඔබගේ අපාචේ බෙදාහැරීමේ මොඩියුල නාමාවලියෙහි වේ, සාමාන්‍යයෙන් / etc / httpd / modules /

  • ක්‍රියාත්මක කිරීමට වින්‍යාස කර ඇති නිශ්චිත අවස්ථාවක් මොඩියුලයන් වේ.

මෙය අවම වශයෙන් මූලික පද්ධති අපාචේ සඳහා / usr / sbin / httpd -M සමඟ පරීක්ෂා කළ හැකිය. ඔබට නිශ්චිත වින්‍යාස ගොනුවක් / usr / sbin / httpd -M -f / path / to / config / file පරීක්ෂා කිරීමට අවශ්‍ය නම්

  • ක්‍රියාත්මක වන අපචේ හි ඇති දේ

බොහෝ තොරතුරු ලබා ගැනීම සඳහා, ඔබට එය http: // machinename / server-info / සමඟ දැක ගත හැකිය. මෙය පෙරනිමියෙන් වින්‍යාස කර නොමැත, ඔබට එය වින්‍යාස කිරීමට සිදුවේ . එහි තොරතුරු කාන්දු වීමක් නිසා එය වින්‍යාස කරන්න එබැවින් එය දැකිය හැක්කේ ප්‍රාදේශීය ජනතාවට පමණි.

ඔබ යන්ත්‍රයේ සිටී නම් සහ ධාවනය වන පරිශීලකයා වීමට ඔබට ප්‍රවේශය තිබේ නම්, ක්‍රියාවලිය පරීක්ෂා කිරීමෙන් ඔබට පටවා ඇති දේ ද දැක ගත හැකිය. ඔබට මව් ක්‍රියාවලිය සොයාගත හැක්කේ:

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

ඉන්පසු පරීක්ෂා කරන්න

cat /proc/PID_FROM_ABOVE/maps

1
ප්‍රයෝජනවත් තොරතුරු නමුත් OP උබුන්ටු භාවිතා කරන නිසා, ගොනු නම් සහ ස්ථාන වෙනස් වේ - උදාහරණයක් ලෙස: httpd වෙනුවට / usr / sbin / apache2, සහ ps -ef | gawk '/ apache2 / && $ 3 == 1 {$ 2 මුද්රණය}' ෙම ල ස්ථානය දුරැල-ලබා ගත හැකි හා දුරැල සක්රීය subfolders සමග, වෙනස් හසුරුවන
Linker3000

ස්තූතියි @ ලින්කර් 3000 ... ඔබ හරි, මෙය රෙඩ්හැට් / සෙන්ටෝස් සඳහා වන අතර, උබුන්ටු
රිච් හෝමොල්කා

11

ඔබ Redhat / CentOS හි httpdසිටී නම්, ඒ වෙනුවට භාවිතා වේ apache2ctl.

මෙයින් අදහස් කරන්නේ ඔබ භාවිතා කළ යුතු බවයි

httpd -M

කෙසේ වෙතත්, httpdඔබ බලාපොරොත්තු වන මාවතේ කිසි විටෙකත් නැත.

CentOS 5.8 හි මට සත්‍ය මාර්ගය තහවුරු කළ හැකිය /usr/sbin/httpd.

/usr/sbin/httpd -M

නමුත් එය මාර්ගය නොවේ නම්, ඔබට එය සොයාගත හැකිය. මෙන්න මට එය කළ හැකි ආකාරය.

පළමුව, මම එය පාලනය කිරීම සඳහා භාවිතා කරන ඩීමන් පරීක්ෂා කළා.

less /init.d/httpd

40ish පේළිය වටා

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

ඒකෙන් මට හරියටම ඒක හොයාගන්න තැන කිව්වා. මෙය උපකාරී වේ යැයි සිතමි.




2

Php ස්ක්‍රිප්ට් එකෙන් පරීක්ෂා කිරීම (mod_xsendfile සඳහා):

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

PHP_SAPI සඳහා වන චෙක්පත වන්නේ php CGI ලෙස ක්‍රියාත්මක වන විට බැහැර කිරීමයි, එම සන්දර්භය තුළ apache_get_modules () ක්‍රියා නොකරයි. මීට අමතරව, මෙය php <5.0.0 මත ක්‍රියාත්මක වන්නේ නම් apache2handler, අපේක්ෂිත ප්‍රති .ලය ලබා දෙන්නේ සන්දර්භය පමණි .


1

ඔබට උදව් කිරීම සඳහා මම කුඩා පයිතන් පිටපතක් නිර්මාණය කළෙමි. කරුණාකර 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']
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.