আমি টমক্যাট web ওয়েবসভারের ডিফল্ট অ্যাপ্লিকেশনটিকে "আরওটি" (ওয়েব অ্যাপস ফোল্ডারের অভ্যন্তরে) এর চেয়ে আলাদা অ্যাপ্লিকেশনে পরিবর্তন করার চেষ্টা করছি। এই কাজ করতে সবচেয়ে ভালো উপায় কি?
আমি টমক্যাট web ওয়েবসভারের ডিফল্ট অ্যাপ্লিকেশনটিকে "আরওটি" (ওয়েব অ্যাপস ফোল্ডারের অভ্যন্তরে) এর চেয়ে আলাদা অ্যাপ্লিকেশনে পরিবর্তন করার চেষ্টা করছি। এই কাজ করতে সবচেয়ে ভালো উপায় কি?
উত্তর:
তিনটি পদ্ধতি রয়েছে:
প্রথমে আপনার টোম্যাটকে bin
ডিরেক্টরি ( sh shutdown.sh
) থেকে বন্ধ করুন । তারপরে আপনার টমক্যাট webapps
ফোল্ডার ( rm -fr *
) এর সমস্ত সামগ্রী মুছুন । তারপরে আপনার ওয়ার ফাইলটি পুনরায় নামকরণ করুন ROOT.war
এবং অবশেষে bin
ডিরেক্টরি ( sh startup.sh
) থেকে আপনার টমক্যাট শুরু করুন ।
আপনার যুদ্ধ ফাইলটি $CATALINA_BASE/webapps
এর মূল নামে ছেড়ে দিন। ফাইলে আপনার হোস্ট উপাদানটিতে অটোডেপ্লোয় এবং ডিফলিঅনস্টার্টআপ বন্ধ
server.xml
করুন। সমস্ত অ্যাপ্লিকেশন প্রবন্ধগুলিকে স্পষ্টভাবে সংজ্ঞায়িত করুন server.xml
, পাথ
এবং ডকবেস উভয় বৈশিষ্ট্য নির্দিষ্ট করে । আপনাকে অবশ্যই এটি করতে হবে কারণ আপনি সমস্ত টমকেট স্বতঃ-মোতায়েনের প্রক্রিয়াটি অক্ষম করেছেন এবং টমক্যাট আপনার অ্যাপ্লিকেশনগুলিকে তাদের প্রসঙ্গটি খুঁজে না পাওয়া পর্যন্ত আর মোতায়েন করবে না server.xml
।
দ্বিতীয় পদ্ধতি: যে কোনও অ্যাপ্লিকেশনটিতে কোনও পরিবর্তন আনতে আপনাকে টমক্যাটটি থামাতে হবে এবং পুনরায় চালু করতে হবে।
আপনার ওয়ার ফাইলটি এর বাইরে রাখুন $CATALINA_BASE/webapps
(দ্বিগুণ স্থাপনা রোধ করতে এটি অবশ্যই বাইরে থাকতে হবে)। নামে একজন প্রসঙ্গ ফাইল স্থাপন করুন ROOT.xml
মধ্যে $CATALINA_BASE/conf/
। এই প্রসঙ্গে ফাইলের একক উপাদানটির একটি ডকবেস বৈশিষ্ট্য থাকতে হবে
যা আপনার ওয়ার ফাইলের অবস্থানের দিকে নির্দেশ করে। পথের উপাদানটি সেট করা উচিত নয় - এটি .xml
এই ক্ষেত্রে ফাইলের নাম থেকে নেওয়া ROOT.xml
। বিশদগুলির জন্য প্রসঙ্গ পাত্রে ডকুমেন্টেশন দেখুন ।
$CATALINA_BASE/conf/[enginename]/[hostname]
ডিরেক্টরিতে রেখে দেন তবে এটি কাজ করবে (যা আমার বরং বেসিক সেটআপের জন্য $CATALINA_HOME/conf/Catalina/localhost
)। পড়ুন কনটেক্সট কনটেইনার ডকুমেন্টেশন ।
sudo systemctl start tomcatx
যেখানে x
সংস্করণ সংখ্যাটি দাঁড়িয়েছে
একটি যোগ করার পদ্ধতি <Context>
ট্যাগে <Host>
ট্যাগেserver.xml
টমক্যাট 6 এর জন্য সমস্যার সমাধান করবে।
আপনি যদি path=""
খালি ব্যবহার করেন তবে আপনি এর মতো একটি ইউআরএল ব্যবহার করতে পারেনhttp://localhost/first.do
।
প্রসঙ্গে ট্যাগ সেট বৈশিষ্ট্য docBase="E:\struts-ITRCbook\myStrutsbook"
এবংreloadable="true"
তারপরে প্রসঙ্গ ট্যাগটি শেষ করুন।
এটি দেখতে কিছু দেখতে হবে:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true">
</Context>
</Host>
এই পরিবর্তনগুলি সঙ্গে হুল বিড়াল 7, আমি অ্যাক্সেস করতে সক্ষম নই myAPP
এ /
এবং ROOT
এ/ROOT
<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>
<Host>
সার্ভার.এক্সএমএল বিভাগে উপরে যুক্ত করুন
/ROOT
এবং সঠিক শংসাপত্রগুলি ব্যবহার করে পরিচালক পৃষ্ঠায় লগ ইন করার চেষ্টা করি তখন আমি অ্যাক্সেসের বিষয়টি অস্বীকার করি। আপনি কি এটি ঠিক করতে জানেন?
মূলের ডিফল্ট অ্যাপ্লিকেশনটি সাধারণত টোম্যাট ম্যানেজার হয় - যা কার্যকর হতে পারে তাই এটি আমার চারপাশে রাখার মতো মনে হয়েছিল।
আমি আমার উপায় তাই অ্যাপটিকে রুট এবং টিসিএমগ্রার রেখেছি তা এই রকম।
রুটকে অন্য কোনও নামকরণ করেছেন
mv ROOT TCmgr
তারপরে একটি প্রতীকী লিঙ্ক তৈরি করা হয়েছে যার মাধ্যমে মূলটি ডিফল্ট করতে চাইলে অ্যাপটিতে মূল নির্দেশ করে।
ln -s <your app> ROOT
আমার পক্ষে কাজ করেছে এবং মনে হয়েছিল সবচেয়ে সহজ পদ্ধতির।
অ্যাপাচি টমক্যাট ডক্স অনুসারে, আপনি একটি আরওটি.এক্সএমএল ফাইল তৈরি করে অ্যাপ্লিকেশনটি পরিবর্তন করতে পারেন। আরও তথ্যের জন্য এটি দেখুন:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
"ডিওআলটি ওয়েব অ্যাপ্লিকেশনটি ROOT.xML নামে একটি ফাইল ব্যবহার করে সংজ্ঞায়িত করা যেতে পারে।"
আপনি এটি সামান্য হ্যাক-ওয়াই উপায়ে করতে পারেন:
বিকল্প সমাধান হ'ল এমন একটি সার্লেট তৈরি করা যা কাঙ্ক্ষিত ডিফল্ট ওয়েবঅ্যাপে পুনঃনির্দেশ পাঠায় এবং সেই সার্লেটটি রুট ওয়েবঅ্যাপের সমস্ত url এ ম্যাপ করে।
package com.example.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RedirectServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect("/myRootWebapp");
}
}
উপরের ক্লাসটি যুক্ত করুন
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet
।
এবং নিম্নলিখিতগুলিতে এতে যুক্ত করুন CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml
:
<servlet>
<display-name>Redirect</display-name>
<servlet-name>Redirect</servlet-name>
<servlet-class>com.example.servlet.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
এবং যদি ইচ্ছা হয় তবে আপনি উত্স পরিবর্তন না করেই ডিফল্ট ওয়েবআপ সেট করতে অনুমতি দেওয়ার জন্য একটি ডিআইআর পরম গ্রহণ করতে আপনি সহজেই পুনর্নির্দেশ সার্ভারলেটটি সংশোধন করতে পারেন।
আমি নিশ্চিত না যে এটি করলে কোনও নেতিবাচক প্রভাব পড়তে পারে তবে আমি এটি পরীক্ষা করেছি এবং এটি কার্যকর হবে বলে মনে হচ্ছে না।
প্রসঙ্গ.এক্সএমএল কনফিগারেশন আমার পক্ষে কাজ করে না। টমক্যাট .0.০.২৯ ডকবেসটি অ্যাপবেসের ভিতরে থাকার বিষয়ে অভিযোগ করেছে: ... টমক্যাট 5 এর জন্য এটি আসলে কাজ করেছিল।
সুতরাং একটি সমাধান হ'ল অ্যাপ্লিকেশনটি রুট ফোল্ডারে রেখে দেওয়া।
আর একটি খুব সহজ সমাধান হ'ল একটি রুটকে একটি সূচি.জ.এস.পি রাখুন যা আমার অ্যাপ্লিকেশনটিতে এটির মতো পুনঃনির্দেশ করে: প্রতিক্রিয়া.সেন্ডারড্রেইটেক্ট ("/ মাই অ্যাপ্লিকেশনএক্স");
শুভেচ্ছা, জানু
টমক্যাট কনফিগার করার সময় server.xml
এবং প্রসঙ্গ উপাদানটি যুক্ত করার সময় আমি একটি সমস্যা পেয়েছি । তিনি কেবল আমার কনফিগারেশনটি ব্যবহার করতে চান না:
http://www.oreillynet.com/onjava/blog/2006/12/configration_antipatterns_tom.html
আপনি যদি একটি Unix-like
সিস্টেমে থাকেন:
mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
সম্পন্ন.
আমার জন্য কাজ কর.
টমক্যাট মূল অ্যাপ্লিকেশন পরিবর্তন করার চূড়ান্ত উপায়। টমক্যাট 7 এবং 8 এ পরীক্ষিত।
টমক্যাট ওয়েব অ্যাপস ডিরেক্টরিতে সরান:
আমার মেশিনে উদাহরণ: ~/stack/apache-tomcat/webapps
রুট ফোল্ডারটির নাম পরিবর্তন, প্রতিস্থাপন বা মুছুন। আমার পরামর্শটি নাম পরিবর্তন করে বা ব্যাকআপের জন্য একটি অনুলিপি তৈরি করছে। উদাহরণস্বরূপ, পুনরায় নামকরণের নামকরণ RENAMED_ROOT:
mv ROOT RENAMED_ROOT
আপনার অ্যাপ্লিকেশনটির সাথে যুদ্ধের ফাইলটি টমক্যাট ওয়েব অ্যাপস ডিরেক্টরিতে নিয়ে যান (এটি একটি ডিরেক্টরি যেখানে আমার মেশিনে পুরানো রুট ফোল্ডারটি ছিল: ~ / স্ট্যাক / অ্যাপাচি-টমক্যাট / ওয়েব অ্যাপস)
যুদ্ধ ফাইলের একটি নাম অবশ্যই ROOT.war থাকতে হবে । আপনার অ্যাপ্লিকেশনটির প্রয়োজন হলে নতুন নাম দিন: আপনার অ্যাপ্লিকেশননাম.ওয়ার -> রুট.ওয়ার
আমি আমার ডক্সটি দেখব; মূল ওয়েব অ্যাপ্লিকেশনটির রুট (বা আরআউট.ওয়ার) থেকে দূরে পরিবর্তনের জন্য একটি কনফিগারেশন নির্দিষ্ট করার একটি উপায় রয়েছে তবে টমক্যাট 5 এবং 6 এর মধ্যে এটি পরিবর্তিত হয়েছে বলে মনে হয়।
এটি পাওয়া গেছে:
http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html
সুতরাং, এটি দেখে মনে হচ্ছে যে (রুট.এক্সএমএল) মূল পাথ পরিবর্তন করা সম্ভব তবে কিছুটা ভাঙা - আপনাকে নিজের ওয়ারটি অটো-ডিপ্লোয়মেন্ট ডিরেক্টরিটির বাইরে নিয়ে যেতে হবে। মনে মনে যদি আমি জিজ্ঞাসা করি কেন আপনার ফাইলটির নাম ROOT.war এর নামকরণ করা একটি কার্যক্ষম সমাধান নয়?
খুব ভাল সমাধান নয় তবে একটি উপায় হ'ল রুট অ্যাপ থেকে আপনার ওয়েল অ্যাপে পুনর্নির্দেশ করা। এর জন্য আপনাকে রুট ইনডেক্স html পরিবর্তন করতে হবে।
<html>
<head>
<title>Redirecting to /YourWebApp</title>
</head>
<body onLoad="javascript:window.location='YourWebApp';">
</body>
</html>
অথবা
<html>
<head>
<title>Redirecting to /YourWebApp</title>
<meta http-equiv="refresh" content="0;url=YourWebApp" />
</head>
<body>
</body>
</html>
তথ্যসূত্র: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html
টমক্যাট In-এ (উইন্ডোজ সার্ভারের অধীনে) আমি কোনও কনফিগারেশন ফাইলে কোনও কিছুই যুক্ত বা সম্পাদনা করিনি। আমি সবেমাত্র আরআরটি ফোল্ডারটির অন্য কোনও নামকরণ করেছি এবং আমার অ্যাপ্লিকেশন ফোল্ডারের নাম বদলে ফেলেছি এবং এটি দুর্দান্ত কাজ করেছে।