টমক্যাটের মূলটিতে আমার অ্যাপ্লিকেশন স্থাপন করা


132

আমার আবেদনের যুদ্ধ ফাইল রয়েছে। আমাকে এটি মূল স্তরে মোতায়েন করা দরকার। বর্তমান ইউআরএল http://localhost:8080/war_name/application_name


1
আপনি দয়া করে নির্দিষ্ট করতে পারেন আপনার সমস্যাটি আসলে কী? আপনি যখন টমক্যাটে কোনও যুদ্ধ ফাইল মোতায়েন করেন তখন অ্যাপ্লিকেশনটি ইউআরএল: লোকালহোস্ট: 8080 / war_name ব্যবহার করে .war এক্সটেনশন ছাড়াই অ্যাক্সেস করা হয় ।
আশীষ্মেশ্বরম

1
হ্যাঁ আপনি ঠিক বলেছেন, আমার অ্যাপটি অ্যাক্সেস করা দরকার। " লোকালহোস্ট / অ্যাপ্লিকেশন_নাম ", আমি যখন আমার যুদ্ধ ফাইলটির নাম "আরওটি.ওয়ার" এ রাখছি তখন আমি তা পেতে পারি, তবে এটির স্মৃতি ব্যতিক্রম থেকে দূরে থাকায় আমার যুদ্ধের ফাইলের আকার প্রায়
120MB

1
@ ব্যবহারকারী 661660 - মনে হচ্ছে আপনার অন্যরকম সমস্যা আছে - নাম পরিবর্তন করে ROOT.warকাজ করা উচিত। আমি OutOfMemoryExceptionস্ট্যাক ট্রেস এবং বিশদ সরবরাহ করে আপনার সম্পর্কে আরও একটি প্রশ্ন জিজ্ঞাসা করার পরামর্শ দেব । আপনি সম্ভবত -Xmxএটি JVM এর জন্য কনফিগার করে আশেপাশে পেতে পারেন ।
রব হুশকা

.lang.OutOfMemoryError: PermGen স্পেস মার্চ 16, 2011 9:52:52 এএম com.ebay.kernel.logger. লোগার লগ তদন্ত করুন: পারফমন থ্রেডে ত্রুটি java.lang.OutOfMemoryError: PermGen স্পেস থ্রেড ব্যতিক্রম "CalClient: NotifyThreadDestroy "java.lang.OutOfMemor yError: PermGen স্পেস থ্রেডে ব্যতিক্রম" মেট্রিকস্ন্যাপশট পরিচালনাকারী "java.lang.OutOfMemoryError: PermG এন স্পেস মার্চ 16, 2011 9:53:36 এএম com.ebay.kernel.logger. লোগার লগ SEVERE: পারফরমনে ত্রুটি থ্রেড java.lang.OutOfMemoryError: PermGen স্পেস থ্রেডে ব্যতিক্রম "CalClient: NotifyThreadDestroyThread-0" java.lang.OutOfMemor yError: PermGen স্পেস
iamjustcoder

1
@ ব্যবহারকারী 661660 - সম্ভবত এই প্রশ্নের উত্তরগুলির কিছু আপনাকে সহায়তা করতে পারে।
রব হুড়স্কা

উত্তর:


220

আপনার কাছে কয়েকটি বিকল্প রয়েছে:

  1. ROOT/টমক্যাট থেকে আউট-অফ-বক্স ডিরেক্টরিটি সরিয়ে ফেলুন এবং আপনার যুদ্ধ ফাইলটি ROOT.warস্থাপনের আগে নামকরণ করুন ।

  2. হিসাবে আপনার যুদ্ধ (আপনার উদাহরণ থেকে) স্থাপন করুন war_name.warও কনফিগার প্রসঙ্গ রুট মধ্যে conf/server.xmlআপনার যুদ্ধ ফাইল ব্যবহার করার জন্য:

    <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>

প্রথমটি সহজ, তবে আরও কিছুটা ক্লডজি। দ্বিতীয়টি সম্ভবত এটি করা আরও মার্জিত উপায়।


3
টমকাট যদি স্ব-অদ্যোপকরণে সেট করা থাকে তবে আপনাকে বিকল্প 2 সম্পর্কে চিন্তা করতে হবে না
বুহাকে সিন্ধি

4
@ ডিজেল - প্রযুক্তিগতভাবে কিছুই নেই। আমি নিজে বেশ খানিকটা পেরেছি; ইহা কাজটিকে সফল করে. আপনার নিজের যুদ্ধের ফাইলটির নাম ধারকটির একটি বাস্তবায়নের বিশদ হিসাবে এমন কিছুতে নামকরণ করতে কিছুটা দুর্বল মনে হয়।
রব হুড়স্কা

4
আপনার সরবরাহিত লিঙ্ক অনুসারে <কনটেক্সট> উপাদানগুলি সরাসরি সার্ভার.এক্সএমএল ফাইলে রাখার প্রস্তাব
নিলেশ

6
এই উত্তরটি এমন একটি প্রযুক্তির প্রস্তাব দেয় যা ডকুমেন্টেশনে সুস্পষ্টভাবে খারাপ ফর্ম হিসাবে উল্লেখ করা হয়েছে। যথাযথ কৌশলটি এখানে বিশদ: স্ট্যাকওভারফ্লো.com
ক্রিস্টোফার

5
এটিকে ROOT.war বলার জন্য +1। টমক্যাট ডক্স অনুসারে, ডাবল মোতায়েন এড়ানোর জন্য "পথ" নির্দিষ্ট করার সময় আপনার খুব সতর্কতা অবলম্বন করা উচিত: "এমনকি সার্ভার.এক্সএমএল-তে কোনও প্রসঙ্গ স্থিতিরূপে সংজ্ঞায়িত করার পরেও ডকব্যাস হোস্টের অধীনে না থাকলে এই বৈশিষ্ট্যটি নির্ধারণ করা উচিত না not অ্যাপবেস বা উভয়ই ডিফলিঅনস্টার্টআপ এবং অটোডপ্লাই মিথ্যা। যদি এই নিয়মটি অনুসরণ না করা হয় তবে ডাবল স্থাপনার ফলস্বরূপ হতে পারে "" - tomcat.apache.org/tomcat-8.0-doc/config/context.html
অ্যান্টনি

31

টমক্যাট ভি 7 এ (ভ্যানিলা ইনস্টলেশন)

আপনার কনফিডে / সার্ভার.এক্সএমএল </Host>বন্ধের ট্যাগের ঠিক আগে ফাইলের শেষের দিকে নিম্নলিখিত বিটটি যুক্ত করুন :

<Context path="" docBase="app_name">
    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

যে ডকবেস বৈশিষ্ট্য নোট করুন । এটি গুরুত্বপূর্ণ বিট। আপনি নিশ্চিত হয়ে নিন যে আপনি নিজের রুট ওয়েব অ্যাপ্লিকেশনটি পরিবর্তন করার আগে আপনি অ্যাপ_নামটি স্থাপন করেছেন, বা আপনার টমক্যাটের ওয়েব অ্যাপস ফোল্ডারে আপনার প্যাকযুক্ত ওয়েব অ্যাপ (অ্যাপ_নাম) অনুলিপি করেছেন। স্টার্টআপ, রুট দেখুন, আপনার অ্যাপ্লিকেশন নামটি দেখুন!


13

এই পরিবর্তনগুলির সাথে টমক্যাট 7-এ, আমি আমারএপিপি / এবং মূলের / মূলের মূলগুলিতে অ্যাক্সেস করতে সক্ষম হয়েছি

<Context path="" docBase="myAPP">
     <!-- Default set of monitored resources -->
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
     <!-- Default set of monitored resources -->
     <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

<Host>সার্ভার.এক্সএমএল বিভাগে উপরে যুক্ত করুন


3
প্রসঙ্গের পথটি ফাঁকা স্ট্রিং হতে হবে বা একটি '/' দিয়ে শুরু হওয়া উচিত। পথ [মূল] এই মানদণ্ডগুলি পূরণ করে না এবং [/ মূল] এ পরিবর্তিত হয়েছে
নিকিতা বসিক

11

আমি জানি যে আমার উত্তরটি অন্যান্য উত্তরগুলির সাথে কিছুটা ওভারল্যাপ হয়ে গেছে তবে এটি একটি সম্পূর্ণ সমাধান যা এর কিছু সুবিধা রয়েছে। এটি টমকেট 8 এ কাজ করে:

  1. মূল প্রয়োগটি মূল থেকে পরিবেশন করা হয়
  2. ওয়েব ইন্টারফেসের মাধ্যমে যুদ্ধের ফাইল স্থাপন করা বজায় রাখা হয়।
  3. প্রধান অ্যাপ্লিকেশনটি পোর্ট ৮০ এ চলবে যখন কেবল অ্যাডমিনদের ম্যানেজমেন্ট ফোল্ডারগুলিতে অ্যাক্সেস থাকতে পারে (আমি বুঝতে পারি যে * নিক্স সিস্টেমে ৮০ এর সাথে বাইন্ডিংয়ের জন্য সুপারউসার প্রয়োজন, তবে উইন্ডোতে এটি কোনও সমস্যা নয়)।

এর অর্থ এই যে আপনাকে একবার টমক্যাটটি পুনরায় চালু করতে হবে এবং আপডেট হওয়া যুদ্ধের ফাইলগুলি কোনও সমস্যা ছাড়াই স্থাপন করা যেতে পারে।

পদক্ষেপ 1: সার্ভার.এক্সএমএল ফাইলে সংযোজক এন্ট্রি সন্ধান করুন এবং এর সাথে প্রতিস্থাপন করুন:

<Connector 
    port="8080"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

<Connector
    port="80"
    protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

পদক্ষেপ 2: <Host ...>ট্যাগের মধ্যে প্রসঙ্গগুলি সংজ্ঞায়িত করুন :

<Context path="/" docBase="CAS">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/host-manager" docBase="host-manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

নোট করুন যে আমি ওয়েব অ্যাপ্লিকেশন ফোল্ডারে সমস্ত অ্যাপ্লিকেশনগুলিকে সম্বোধন করেছি। প্রথমটি কার্যকরভাবে রুট এবং মূল অ্যাপটিকে অবস্থান থেকে স্যুইচ করুন। রুট এখন চালু http://example.com/ROOTএবং প্রধান অ্যাপ্লিকেশন চালু http://example.com/। পাসওয়ার্ড দ্বারা সুরক্ষিত ওয়েব অ্যাপসগুলিকে privileged="true"এট্রিবিউটের প্রয়োজন হয় ।

আপনি যখন সিএএস.ওয়ার ফাইলটি মোছেন যা মূলের সাথে মেলে ( <Context path="/" docBase="CAS">আপনাকে প্রশাসনিক প্যানেলে সেই একটিটি পুনরায় লোড করতে হবে কারণ এটি মোতায়েনের সাথে রিফ্রেশ হয় না।

<Context path="/CAS" docBase="CAS">আপনার প্রসঙ্গগুলিতে এটিকে অন্তর্ভুক্ত করবেন না কারণ এটি যুদ্ধের ফাইল মোতায়েনের জন্য ম্যানেজার বিকল্পটি অক্ষম করে। এর অর্থ হল আপনি অ্যাপটি দুটি উপায়ে অ্যাক্সেস করতে পারবেন: http://example.com/এবংhttp://example.com/APP/

পদক্ষেপ 3: রুট এবং ম্যানেজার ফোল্ডারে অযাচিত অ্যাক্সেস রোধ valveকরতে, এই জাতীয় প্রসঙ্গে ট্যাগগুলিতে একটি যুক্ত করুন :

<Context path="/manager" docBase="manager" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        addConnectorPort="true"
        allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>

এটি ডিফল্ট পোর্ট ৮০৮০ ব্যবহার করে এবং ওয়েব ইন্টারফেসের মাধ্যমে যুদ্ধের ফাইলগুলিকে গতিশীলভাবে স্থাপন করার দক্ষতা বজায় রাখার জন্য এগুলি মূলত আমার নিজের ডোমেন (নকল আইপি ঠিকানা) এবং লোকালহোস্টের লোকদের কাছে অ্যাডমিন ওয়েব অ্যাপ্লিকেশন ফোল্ডারে অ্যাক্সেস সীমাবদ্ধ করে।

আপনি যদি বিভিন্ন আইপি ঠিকানা ব্যবহার করে এমন একাধিক অ্যাপ্লিকেশনগুলির জন্য এটি ব্যবহার করতে চান, আপনি সংযোগকারীটিতে আইপি ঠিকানা যুক্ত করতে পারেন ( address="143.21.2.1")।

আপনি যদি রুট থেকে একাধিক ওয়েব অ্যাপ্লিকেশন চালনা করতে চান তবে আপনি সার্ভিস ট্যাগটিকে সদৃশ করতে পারেন (দ্বিতীয়টির জন্য একটি পৃথক নাম ব্যবহার করুন) এবং <Context path="/" docBase="CAS">উদাহরণস্বরূপ এর ডকবেস পরিবর্তন করতে পারেন <Context path="/" docBase="ICR">


6

দ্রুততম উপায়।

  1. নিশ্চিত করুন যে আপনার কাছে রুট অ্যাপ স্থাপন করা নেই, যদি আপনার কাছে থাকে তবে অন্বেষণ করুন

  2. আপনার যুদ্ধের নাম ROOT.war এ নামকরণ করুন, মোতায়েন করুন, সব ঠিকঠাক করুন, কোনও কনফিগারেশন পরিবর্তন দরকার নেই


6

সরান $CATALINA_HOME/webapps/ROOT। আপডেট করুন $CATALINA_HOME/conf/server.xml, হোস্ট উপাদানটি নীচের পাঠ্যের মতো দেখায় তা নিশ্চিত করুন:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="false" deployOnStartup="false">
  <Context path="" docBase="myApp"></Context>

এটা তোলে মোতায়েন থেকে হুল বিড়াল প্রতিরোধ মিথ্যাতে সেট করতে হুল বিড়াল 8. autoDeploy এবং deployOnStartup প্রয়োজন সঙ্গে কাজ করে myAppদুইবার।


আমি ওয়ার আপলোড করার চেষ্টা করেছি এবং এটি কাজ করতে ব্যর্থ হয়েছিল। এটি কি কেবল বিস্ফোরিত যুদ্ধগুলির জন্য?
লগিক্সপ্লেয়ার

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

@logixplayer। আমার সমাধান ওয়ারের সাথে কাজ করে। আমি এটি বিস্ফোরিত হয়নি। আমি উল্লেখ করতে ভুলে গেছি যে $CATALINA_HOME/webapps/ROOTঅপসারণ করা প্রয়োজন। দয়া করে এটি সরান এবং আবার চেষ্টা করুন।
জিংগুও ইয়াও

আপনার কথা মতো আমি রুটটি সরিয়েছি। আমি আমার ওয়ার স্থাপন করেছি (বিস্ফোরণ ডিরেক্টরি নয়)। আমি লক্ষ্য করেছি যে এটিতে আমার স্টাফের সাথে একটি নতুন আরআরটি ডিরেক্টরি তৈরি করা হয়েছে যেমন ওয়েব-আইএনএফ। সাইটটি চলছে। এটি কি এভাবে কাজ করার কথা?
লগিক্সপ্লেয়ার

আমি এই পদ্ধতিটিও চেষ্টা করেছিলাম এবং যখন আমি ব্রাউজারে পৃষ্ঠাটি খোলার চেষ্টা করি তখন এটি কেবল সার্ভারের জন্য অপেক্ষা করতে থাকে। ক্যাটালিনা.আউট কেবল বলে সার্ভার শুরু হয়েছিল।
আসু

1

@ রব হুশকার সোলে যোগ করা, সার্ভার.এক্সএমএল বিভাগের মধ্যে এই সেটিংটি কাজ করে:

<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>

দ্রষ্টব্য: ওভাররাইড = "সত্য" কিছু ক্ষেত্রে প্রয়োজন হতে পারে।


আপনি এটি কোথায় রাখবেন তা উল্লেখ করেননি। @ সুধীর পলিয়াম উত্তরটি সহায়ক ছিল।
কান্নান রামমূর্তি

1

যোগ করা হচ্ছে @Dima এর উত্তর, যদি আপনি ব্যবহার করছেন mavenআপনার প্যাকেজ নির্মাণের, আপনি এটি বলতে তোমার যুদ্ধ ফাইল নাম সেট করতে পারেন ROOTমধ্যে pom.xml:

<build>
    <finalName>ROOT</finalName>
</build>

ডিফল্টরূপে, ওয়েব অ্যাপ্লিকেশনটিকে মূল প্রসঙ্গে ( ) প্রেরণ করা tomcatহবে ।ROOT.war/


0

টোম্যাক্ট ম্যানেজার ইউআরএল খুলুন: - http: // লোকালহস্ট : 8080 / ম্যানেজার / এইচটিএমএল /
তারপরে অ্যাপ্লিকেশনগুলিতে আপনি "/" হিসাবে একটি অ্যাপ্লিকেশন পাথ রাখার বিষয়টি দেখতে পাচ্ছেন
কেবল এটি আনডপ্লাই করুন। আপনার অ্যাপ্লিকেশনটির যুদ্ধের ফাইলটি ROOT.war হিসাবে পুনরায় নামকরণ করুন এবং কেবলমাত্র পথে: - আপনার টমক্যাট শুরু করুন কোনও অতিরিক্ত কনফিগারেশন প্রয়োজন নেই। এখন আমরা আমাদের অ্যাপ্লিকেশন হোম পৃষ্ঠা বা কনফিগার করা url টি http: // লোকালহোস্ট: 8080 এ দেখতে পাচ্ছি
এখানে চিত্র বর্ণনা লিখুন
C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps


-1

আমার সার্ভারে আমি এটি ব্যবহার করছি এবং রুট অটোডেপ্লাই ঠিক কাজ করে:

   <Host name="mysite" autoDeploy="true" appBase="webapps" unpackWARs="true" deployOnStartup="true">
        <Alias>www.mysite.com</Alias>
        <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="mysite_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b"/>
        <Context path="/mysite" docBase="mysite" reloadable="true"/>
    </Host>

এটি / তবে /
মাইসাইটে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.