سؤال

حصلت مؤخرًا على مشاريع تعمل على الدعامات وأتوقع المزيد من JSP قادم.

بعد غوغلينغ السؤال ، قيل لي إلى مدونات للأشخاص الذين حاولوا فعل الشيء نفسه. لم تكن هذه المدونات مجرد إجراء خطوة بخطوة لكيفية قيامها بذلك ، ولكن أشبه بالإشارة في حالة حاجة إلى القيام بشيء ما في المستقبل. في بعض الحالات ، لم يقل المؤلف بالضبط ما إذا كان ناجحًا في محاولته لإدارة كل من الخدمتين المذكورة أعلاه معًا.

لسوء الحظ ، لا يمكنني متابعة "التعليمات" الخاصة بهم حيث لدي الكثير من مشاريع PHP التي تم تكوينها (تحميل الدلائل ، و classpaths ، إلخ ...) لتشغيلها على خادم الاختبار الخاص بي وليس لديّ رفاه الوقت لإعادة تكوينها جميعًا الحالة أنا العبث مع خادم HTTPD. ومن أجل الصدق ، لم أجرب خطوة واحدة على تشغيلها معًا لنفس السبب للتردد في تحديث ملفات التكوين.

لست متأكدًا مما إذا كان هذا يضيف إلى التعقيد ، لكنني أقوم بتشغيل كلتا الخدمتين من خلال XAMPP (مع كون Tomcat إضافة XAMPP) لأغراض قابلية النقل.

أعلم أنه يمكنني فقط إيقاف خدمة Apache الخاصة بي عندما أعمل على JSP ، لكن مهلا هذا هو الفاكهة لتجربة شيء جديد ولا يمكنني تركه. علاوة على ذلك ، سيكون من المريح حقًا أن يتم تشغيل كلتا الخدمتين تلقائيًا على بدء التشغيل مما سيزيد حقًا من إنتاجيتي حيث لن أضطر إلى التبديل يدويًا بين الخدمات عند الحاجة.

آمل أن يكون هناك شخص ما ركب القارب نفسه.

تحرير: إصدار Tomcat هو 6.0.20 httpd إصدار 2.2.14

هل كانت مفيدة؟

المحلول

  • اطلب من Tomcat الاستماع على منفذ بخلاف 80
  • اتبع دليلًا لإعداد mod_proxy لإعادة توجيه الطلبات لموقع معين إلى tomcat ، مثل هذا.

إذا كنت حقًا تختبر فقط ، تخطي الخطوة الثانية وقم فقط بالوصول إلى الخادم عبر منفذ مختلف لـ Tomcat.

تعديل: أنظر أيضا http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html عند إعداد mod_proxy_ajp.

نصائح أخرى

لقد أهملت أن تذكر إصدار Tomcat الذي تستخدمه ولم تذكر أيضًا ما إذا كنت قد نظرت بالفعل إلى وثائق Tomcat للإجابة على السؤال.

أقترح البدء هنا: http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html وابحث في إعداد mod_jk.

إذا كنت تريد استخدام apache/ httpd لخدمة الطلب من PHP وأي خادم آخر يعمل على منفذ مختلف ، دع Tomcat على المنفذ 8080 يمكنك استخدام Apache/ HTTPD للعمل كملف "الوكيل" ورسم خريطة عنوان URL الذي سيخدمه خادم آخر. يتم ذلك باستخدام ProxyPass ProxyPassReverse ترتيب.

على سبيل المثال: إذا كنت تريد http: // localhost/php لتخدمها PHP و http: // localhost/tomcat لتخدمها Tomcat ، سيتعين عليك إجراء تغييرات متابعة في httpd.config/ apache.config [apache2.config اعتمادًا على إصدار Apache الذي تستخدمه]:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# Uncomment these to proxy FTP or HTTPS
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so

<VirtualHost *:80>
# Your domain name
# ServerName Domain_NAME_HERE

ProxyPreserveHost On

ProxyPass /tomcat http://localhost:8080/
ProxyPassReverse /tomcat http://localhost:8080/

# The location of the HTML files, and access control information
DocumentRoot /var/www
<Directory /var/www>
    Options -Indexes
    Order allow,deny
    Allow from all
</Directory>

</VirtualHost>

في حال كنت تعمل httpd على centos وقد تحصل على خطأ Apache Mod_proxy '[Error] (13)Permission Denied', ، ثم اتبع هذه الرابط الذي يقول تنفيذ الأمر التالي:

 /usr/sbin/setsebool -P httpd_can_network_connect 1

أود أن أوصيك بالقراءة mod_proxy.

المرجع: Redhat mod_proxy التكوين

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top