السلام عليكم :
أولاً : مصطلحات وكلام نظري لا بد منه : :wacko:
Worker: العامل هو عبارة عن مثيل (instance) عن مخدم Tomcat يكون في حالة انتظار دائماً لتنفيذ الـ servlets بالنيابة عن web server ما مثل Apache.
أي هنا سيقوم apache بتمرير طلبات servlet إلى مخدم tomcat الذي يعمل كمساند له ((وراءه)) .
سنطلق على worker اسم العامل!
يوجد عدة أنواع من العمال ما يهمنا هو ajp13 والذي مهمته تنفيذ الطلبات القادمة من Apache.
يتم تحديد اسم العامل كالتالي:
worker.list=<workername>
لهذا العامل خصائص :
worker.<workername>.type وهنا نريد العامل من النوع ajp13.
worker.<workername>.host وقيمة الخاصية هذه localhost بما أننا نعمل على نفس الجهاز.
worker.<workername>.port ويساوي 8009 يتخاطب مع apache عن طريق هذا المنفذ.
mod_jk: هي كتلة برمجية (module) تضاف إلى Apache حتى يعرف كيف يحول الطلبات إلى Tomcat ... الملف المرفق يحوي نسخة منها خاصة بالـ Apache 2.5 (لكل apache نسخة خاصة به).
العمل :
بعد تنصيب كل من Apache .. و Tomcat وتهيئتهما بشكل صحيح .. والتأكد من عملهما - تستطيع التأكد من عمل Apache بفتح صفحة http://localhost/ .. وللتأكد من عمل Tomcat افتح صفحة http://localhost:8080/..
قم بتنفيذ الخطوات التالية:
تهيئة Tomcat:
1- في ملف server.xml في مجلد Tomcat تأكد من أن الكود التالي غير موضوع ضمن تعليق:
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3"/>
2- أيضاً تأكد من الكود التالي:
<Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> </Host> </Engine>
تهيئة Apache:
3- قم بنسخ ملف mod_jk.so المرفق إلى مجلد modules الموجود ضمن مجلد Apache.
4- انسخ ملف workers.properties المرفق إلى مجلد conf ضمن apache إلى جانب ملف httpd.conf.
هذا الملف يقوم بإنشاء عامل من النوع ajp13 .. كما ذكر في البداية..
5- الآن سنقوم بتعديل ملف التهيئة الخاص ب apache لنخبره عن ملفي mod_jk و workers.properties الجديدين. وذلك بنسخ الكود التالي إلى نهاية httpd.conf:
# Load mod_jk module
# Update this path to match your modules location
LoadModule jk_module {apache modules directory path}/mod_jk.so
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile {apache conf directory path}/workers.properties
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile {apache logs directory path}/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Specify which requests get forwarded to Tomcat. (My web app is called
# "iyadhoo"; change as necessary. Note that I'm forwarding Struts *.do
# requests to Tomcat, along with the top-level home page request, which in my
# case happens to be a Struts request.)
JkMount /iyadhoo/ ajp13w
JkMount /iyadhoo/*.do ajp13w
JkMount /iyadhoo/*.jsp ajp13wملاحظات حول الكود المضاف: :huh:
آ- كل عبارة موضوعة بين قوسين } { (وهي ثلاث) استبدلها بالمسار المناسب مثلاً عندي الأولى:
{apache modules directory path} أضع بدلاً عنها c:/AppServ/apache/modules
ب- قم بإنشاء ملف داخل مجلد logs وسمّه mod_jk.log (لن يؤثر هذا الملف في العمل وإنما فقط لتسجيل الأحداث)
ج- في نهاية الملف انتبه : JkMount أقوم بربط الـ Apache مع المجلد الذي يحوي صفحات jsp التي أعمل عليها.. وهو هنا iyadhoo وهذا المجلد موجود في root الـ tomcat (وهو هنا webapps) وليس root apache.
ء- ajp13w هو اسم العامل المعرف ضمن ملف workers.properties.!!
للتجريب :
تأكد من تشغيل كل من tomcat و apache .. اطلب الصفحة http://localhost/ يجب أن تظهر صفحة الترحيب الخاصة ب apache وفيها phpmyadmin وما إلى ذلك..
الآن اطلب صفحة http://localhost/iyadhoo/
المقال فيه الكثيير من النقص .. وستتم تغطيته بإذن الله..
هذا حصيلة عمل وتجريب لمدة 6 ساعات متواصلة أرجو أن تنتفعوا به وألا يقع أحد بالمطبات التي وقعت بها!!
ما كان من صواب فمن الله وما كان من خطأ فمني ومن الشيطان ..
ولا تنسوني من دعائكم!. :rolleyes: