কোন অ্যাপাচি মডিউলগুলি সক্ষম / ইনস্টল করা আছে তা কীভাবে পরীক্ষা করবেন?


380

কোন অ্যাপাচি মডিউলগুলি সক্ষম হয়েছে তা যাচাই করার জন্য সবচেয়ে মার্জিত উপায় কোনটি?

উত্তর:


464

আপনি উবুন্টুতে আছেন তাই চেষ্টা করুন:

apache2ctl -M

11
apache2ctl -M দুর্দান্ত কাজ করে
u

3
apache2 -M এর ফলে এই ত্রুটি ঘটেapache2: bad user name ${APACHE_RUN_USER}
u

4
যথেষ্ট উপযুক্ত - এটি অ্যাপাচি কনফিগারেশনে সংজ্ঞায়িত অ্যাপাচি রান টাইম ব্যবহারকারী (সম্ভবত www-ডেটা) হিসাবে আপনি কমান্ডটি চালাচ্ছেন না এর কারণ এটি। এটি ঠিক করার একটি উপায় আছে তবে আপনি অ্যাপাচি 2 কেটিএল ধরে রাখতে পারেন।
Linker3000

9
sudo apache2ctl -M | sort
মিমডিমিরবাস

4
নোট করুন এখানে অনেক দরকারী বিকল্প (পতাকা) রয়েছে apache2ctlতবে সেগুলি ম্যানপেজে বা তেমন তালিকাভুক্ত নয় apache2ctl --help। কারণ তাদের হাতে তুলে দেওয়া হয়েছে httpd। এগুলি কেবলমাত্র httpd ডকুমেন্টেশনে তালিকাভুক্ত ।
লুটজ প্রিচেল্ট

117

httpd -M কোন মডিউলগুলি অন্তর্নির্মিত বা ভাগ করা আছে তা আপনাকে জানাবে।


হুম ... আমি
HTTP

সুতরাং httpdএক্সিকিউটেবলের পুরো পথটি নির্দিষ্ট করুন ।
ইগনাসিও ওয়াজকেজ-আব্রামস

9
@ ইগনাসিও ওয়াজকেজ-আব্রামস: উবুন্টু (এবং অন্যান্য দেবিয়ান ভিত্তিক বিতরণ) এ, নামটি রয়েছে apache2এবং নেই httpd, এজন্য এটি খুঁজে পাওয়া যায় না।
ড্যানিয়েল অ্যান্ডারসন

3
অ্যাপাচি রেডহ্যাটে httpd হয়। যদি এই উত্তরটি আপনার পক্ষে কাজ করে না তবে অন্য একটি উত্তর দিয়ে চেষ্টা করুন।
জ্যাক_ড্রেসেশন

3
CentOS
এপাচি

37

উপরের উত্তরগুলি থেকে কিছুই কার্যকর হয় না যদি আপনি দূরবর্তী সার্ভারে কমান্ড চালাতে না পারেন। আপনার যদি কেবলমাত্র "ব্যবহারকারী" সুবিধাগুলি বা কিছু নেই তবে test.phpস্ক্রিপ্ট তৈরির চেষ্টা করবেন না :

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

যদিও এটি কেবলমাত্র পিএইচপি হিসাবে ইনস্টল থাকলে কাজ করবে mod_php


4
এছাড়াও, আপনি এটি সর্বজনীনভাবে দৃশ্যমান না হতে চাইবেন। প্রশাসকের আইপি দিয়ে ক্লায়েন্টের কাছে ফলাফলটি সীমাবদ্ধ করতে পারে। এবং আপনি স্ক্রিপ্টটি এটি সম্পন্ন করার সাথে সাথে মুছে ফেলতে চাইবেন। কারণ গভীরতায় প্রতিরক্ষা; এটি প্রয়োজনের চেয়ে সহজ করে তুলবেন না।
পার্থিয়ান শট

28

হয়তো এই প্রবেশাধিকার নেই সাথে ভাগ হোস্টে কিছু কিছু মানুষের জন্য সাহায্য করবে httpd, apachectlবা প্রসেস:

সক্ষম মডিউল: ls /etc/apache2/mods-enabled/

উপলব্ধ মডিউল: ls /etc/apache2/mods-available/


এখানে সম্পূর্ণ তালিকা রয়েছে, এপাচি
সিটিএল


13

আমি মনে করি এখানে আসলে তিনটি প্রশ্ন আছে। আপনি যা জিজ্ঞাসা করছেন তা আমি নিশ্চিত নই

  • আপনার ডিস্কে কী মডিউল রয়েছে। আপনি ব্যবহার করতে পারেন সমস্ত মডিউল কি।

এটি (সাধারণত) আপনার অ্যাপাচি বিতরণের মডিউল ডিরেক্টরিতে হবে, সাধারণত / ইত্যাদি / httpd / মডিউল /

  • কোন মডিউলগুলি কোনও নির্দিষ্ট উদাহরণটি চালানোর জন্য কনফিগার করা হয়।

এটি / usr / sbin / httpd -M দিয়ে চেক করা যায়, কমপক্ষে বেস সিস্টেম অ্যাপাচের জন্য। যদি আপনি একটি নির্দিষ্ট কনফিগার ফাইল / usr / sbin / httpd -M -f / path / to / config / file পরীক্ষা করতে চান

  • চলমান অ্যাপাচে কি আছে

প্রচুর তথ্য পেতে, আপনি এটি http: // machinename / server-info / দিয়ে দেখতে পারবেন এটি ডিফল্টরূপে কনফিগার করা হয়নি, আপনাকে এটি কনফিগার করতে হবে Its এটি কিছুটা তথ্য ফাঁস, তাই এটি কনফিগার করুন তাই কেবল স্থানীয় লোকেরা এটি দেখতে পারে।

আপনি যদি মেশিনে থাকেন এবং আপনার চলমান ব্যবহারকারী হওয়ার অ্যাক্সেস থাকে তবে প্রক্রিয়াটি পরীক্ষা করে আপনি কী লোড হয়েছেন তাও দেখতে পাবেন। আপনি এর সাথে পিতামাতার প্রক্রিয়াটি খুঁজে পেতে পারেন:

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

তারপরে চেক আউট করুন

cat /proc/PID_FROM_ABOVE/maps

1
দরকারী তথ্য তবে ওপেন উবুন্টু ব্যবহার করছে বলে ফাইলের নাম এবং অবস্থানগুলি আলাদা - উদাহরণস্বরূপ: / usr / sbin / apache2 httpd এর পরিবর্তে, এবং পিএস-শেফ | gawk '/ apache2 / && $ 3 == 1 {মুদ্রণ $ 2}' মডিউলগুলির অবস্থানটি মোড-উপলভ্য এবং মোডস-সক্ষম সাবফোল্ডার সহ আলাদাভাবে পরিচালিত হয়
লিংক 3000

ধন্যবাদ @ লিঙ্কার ৩০০০ ... আপনি ঠিক বলেছেন, এটি রেডহ্যাট / সেন্টোসের পক্ষে, আমি কীভাবে উবুন্টুতে রূপান্তর করতে পারি সে সম্পর্কে আপনার মন্তব্যটি দাঁড় করিয়ে দেব
রিচ হোমোলকা

11

আপনি যদি রেডহাট / সেন্টোস এ থাকেন তবে এটির httpdজায়গায় ব্যবহৃত হয় apache2ctl

এর অর্থ আপনার ব্যবহার করা দরকার

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

এটি আমাকে কোথায় খুঁজে পেতে হবে ঠিক তা বলেছিল। আশাকরি এটা সাহায্য করবে.




2

পিএইচপি স্ক্রিপ্টের মধ্যে থেকে পরীক্ষা করা হচ্ছে (Mod_xsendfile এর জন্য):

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

পিএইচপি_এসএপিআইয়ের চেকটি বাদ দেওয়া হয় যখন পিএইচপি সিজিআই হিসাবে চলতে থাকে, কারণ অ্যাপাচি_জেট_মডিউলগুলি () সেই প্রসঙ্গে কাজ করে না। অতিরিক্ত হিসাবে, এটি পিএইচপি <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']
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.