রুট অ্যাপ্লিকেশন কীভাবে পরিবর্তন করবেন?


130

আমি টমক্যাট web ওয়েবসভারের ডিফল্ট অ্যাপ্লিকেশনটিকে "আরওটি" (ওয়েব অ্যাপস ফোল্ডারের অভ্যন্তরে) এর চেয়ে আলাদা অ্যাপ্লিকেশনে পরিবর্তন করার চেষ্টা করছি। এই কাজ করতে সবচেয়ে ভালো উপায় কি?

উত্তর:


129

তিনটি পদ্ধতি রয়েছে:

  • প্রথমে আপনার টোম্যাটকে 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। বিশদগুলির জন্য প্রসঙ্গ পাত্রে ডকুমেন্টেশন দেখুন ।

উল্লেখ


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

আমি জানি এটি সত্যিই নরম নিয়মগুলি অনুসরণ করছে না তবে এটি স্ক্রু করেছে ..... ধন্যবাদ! আমি আশা করি আমি একাধিকবার upvote করতে পারে। সুপার সহায়ক। BTW, আমি ছিল , হুল বিড়াল আগে এই কাজ করবে পুনরায় আরম্ভ করা @hostnik।
বাজে পাস্তি

@ ড্যানি-লন্ডনের তৃতীয় পদ্ধতিটি টমক্যাট in এ আমার পক্ষে কাজ করে নি তবে আপনি যদি ROOT.xML ফাইল $CATALINA_BASE/conf/[enginename]/[hostname]ডিরেক্টরিতে রেখে দেন তবে এটি কাজ করবে (যা আমার বরং বেসিক সেটআপের জন্য $CATALINA_HOME/conf/Catalina/localhost)। পড়ুন কনটেক্সট কনটেইনার ডকুমেন্টেশন
মাইকেল শ্যাপার

টমক্যাট শুরু করার আধুনিক বিকল্প: sudo systemctl start tomcatxযেখানে xসংস্করণ সংখ্যাটি দাঁড়িয়েছে
আর্থমাইন্ড

24

একটি যোগ করার পদ্ধতি <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 এর জন্যও এটি সত্য?
মারসি

4
ডকুমেন্টেশন অনুসারে: টমক্যাট 6 এর জন্য টমক্যাট 4.x এর বিপরীতে <কনটেক্সট> উপাদানগুলি সরাসরি সার্ভার.এক্সএমএল ফাইলে রাখার প্রস্তাব দেওয়া হয় না। এর কারণ এটি কনফেক্স কনফিগারেশনটি সংশোধন করাটিকে আরও আক্রমণাত্মক করে তোলে যেহেতু মূল কনফ / সার্ভার.এক্সএমএল ফাইল টমক্যাট পুনরায় আরম্ভ না করে পুনরায় লোড করা যায় না।

এই পদ্ধতির পার্শ্ব প্রতিক্রিয়া আছে তা অবহিত করুন! myStrutsbook একবার লোকালহোস্টের জন্য একবার: 8080 এবং একবার লোকালহোস্টের জন্য: 8080 / myStrutsbook! এবং ডেটাবেস সংযোগ ত্রুটি এবং আরও সংস্থান ব্যবহার করতে পারে
Ali.Mojtehedy

24

এই পরিবর্তনগুলি সঙ্গে হুল বিড়াল 7, আমি অ্যাক্সেস করতে সক্ষম নই myAPP/এবং ROOT/ROOT

<Context path="" docBase="myAPP"/>
<Context path="ROOT" docBase="ROOT"/>

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


আমি যে সমাধানটি সন্ধান করছিলাম তা কেবল! ধন্যবাদ লক্ষ লক্ষ, সুধীর! আমার জন্য একটি কবজ ভালো কাজ করে। আরে! আমার আরেকটা প্রশ্ন আছে. আমি যখন রুটটি অ্যাক্সেস করি /ROOTএবং সঠিক শংসাপত্রগুলি ব্যবহার করে পরিচালক পৃষ্ঠায় লগ ইন করার চেষ্টা করি তখন আমি অ্যাক্সেসের বিষয়টি অস্বীকার করি। আপনি কি এটি ঠিক করতে জানেন?
স্যাটারনিয়ান

@ সুধীর পলিয়াম আমিও তাই করেছি। আমি সার্ভার.এক্সএমএল ফাইলটি পরিবর্তন করেছি এবং তারপরে আমি সার্ভারটি শুরু করেছি। তবে যখন আমি লোকালহোস্ট: 8080 লোড / পরিদর্শন করেছি, এটি আমাকে 404 স্থিতির ত্রুটি দেখিয়েছে। যদি আমি সার্ভার.এক্সএমএল থেকে এই লাইনগুলি মুছে ফেলি তবে এটি উপরের পোর্টটি লোড করে।
শচীন কুমার

16

মূলের ডিফল্ট অ্যাপ্লিকেশনটি সাধারণত টোম্যাট ম্যানেজার হয় - যা কার্যকর হতে পারে তাই এটি আমার চারপাশে রাখার মতো মনে হয়েছিল।

আমি আমার উপায় তাই অ্যাপটিকে রুট এবং টিসিএমগ্রার রেখেছি তা এই রকম।

রুটকে অন্য কোনও নামকরণ করেছেন

mv ROOT TCmgr

তারপরে একটি প্রতীকী লিঙ্ক তৈরি করা হয়েছে যার মাধ্যমে মূলটি ডিফল্ট করতে চাইলে অ্যাপটিতে মূল নির্দেশ করে।

ln -s <your app> ROOT

আমার পক্ষে কাজ করেছে এবং মনে হয়েছিল সবচেয়ে সহজ পদ্ধতির।


@ আপনারা ঠিক বলেছেন, তবে এক্সপিতে উইন্ডোজগুলির প্রতীকী লিঙ্ক রয়েছে, এবং উপরে আমি মনে করি আপনি এমকেলিঙ্ক ব্যবহার করতে পারেন। দয়া করে মনে রাখবেন আমি এটি করিনি এবং প্রতীকী লিঙ্কগুলি ব্যবহার না করার আমার অন্যান্য কারণও রয়েছে।
মাইকেলস্টোনার

12

অ্যাপাচি টমক্যাট ডক্স অনুসারে, আপনি একটি আরওটি.এক্সএমএল ফাইল তৈরি করে অ্যাপ্লিকেশনটি পরিবর্তন করতে পারেন। আরও তথ্যের জন্য এটি দেখুন:

http://tomcat.apache.org/tomcat-6.0-doc/config/context.html

"ডিওআলটি ওয়েব অ্যাপ্লিকেশনটি ROOT.xML নামে একটি ফাইল ব্যবহার করে সংজ্ঞায়িত করা যেতে পারে।"


12

আপনি এটি সামান্য হ্যাক-ওয়াই উপায়ে করতে পারেন:

  1. টমক্যাট বন্ধ করুন
  2. রুট.ওয়ারকে একপাশে সরান এবং আরএম-আরএফ ওয়েব অ্যাপস / রুট করুন
  3. আপনি যে ওয়েব অ্যাপ্লিকেশনগুলি ওয়েব অ্যাপস / রুট.ওয়ার করতে চান তা অনুলিপি করুন
  4. টমক্যাট শুরু করুন

2
কুরুচিপূর্ণ বা সম্ভবত আইকি, তবে হ্যাকিটি ভুল শব্দ হতে পারে যেহেতু এটি অফিসিয়াল / সমর্থিত পদ্ধতি বলে মনে হয়।
ব্রায়ান নোব্লাচ

3

বিকল্প সমাধান হ'ল এমন একটি সার্লেট তৈরি করা যা কাঙ্ক্ষিত ডিফল্ট ওয়েবঅ্যাপে পুনঃনির্দেশ পাঠায় এবং সেই সার্লেটটি রুট ওয়েবঅ্যাপের সমস্ত 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>

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

আমি নিশ্চিত না যে এটি করলে কোনও নেতিবাচক প্রভাব পড়তে পারে তবে আমি এটি পরীক্ষা করেছি এবং এটি কার্যকর হবে বলে মনে হচ্ছে না।


2

প্রসঙ্গ.এক্সএমএল কনফিগারেশন আমার পক্ষে কাজ করে না। টমক্যাট .0.০.২৯ ডকবেসটি অ্যাপবেসের ভিতরে থাকার বিষয়ে অভিযোগ করেছে: ... টমক্যাট 5 এর জন্য এটি আসলে কাজ করেছিল।

সুতরাং একটি সমাধান হ'ল অ্যাপ্লিকেশনটি রুট ফোল্ডারে রেখে দেওয়া।

আর একটি খুব সহজ সমাধান হ'ল একটি রুটকে একটি সূচি.জ.এস.পি রাখুন যা আমার অ্যাপ্লিকেশনটিতে এটির মতো পুনঃনির্দেশ করে: প্রতিক্রিয়া.সেন্ডারড্রেইটেক্ট ("/ মাই অ্যাপ্লিকেশনএক্স");

শুভেচ্ছা, জানু


1

টমক্যাট কনফিগার করার সময় server.xmlএবং প্রসঙ্গ উপাদানটি যুক্ত করার সময় আমি একটি সমস্যা পেয়েছি । তিনি কেবল আমার কনফিগারেশনটি ব্যবহার করতে চান না: http://www.oreillynet.com/onjava/blog/2006/12/configration_antipatterns_tom.html

আপনি যদি একটি Unix-likeসিস্টেমে থাকেন:

  1. mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
  2. ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT

সম্পন্ন.

আমার জন্য কাজ কর.


1

টমক্যাট মূল অ্যাপ্লিকেশন পরিবর্তন করার চূড়ান্ত উপায়। টমক্যাট 7 এবং 8 এ পরীক্ষিত।

  1. টমক্যাট ওয়েব অ্যাপস ডিরেক্টরিতে সরান:

    আমার মেশিনে উদাহরণ: ~/stack/apache-tomcat/webapps

  2. রুট ফোল্ডারটির নাম পরিবর্তন, প্রতিস্থাপন বা মুছুন। আমার পরামর্শটি নাম পরিবর্তন করে বা ব্যাকআপের জন্য একটি অনুলিপি তৈরি করছে। উদাহরণস্বরূপ, পুনরায় নামকরণের নামকরণ RENAMED_ROOT:

    mv ROOT RENAMED_ROOT

  3. আপনার অ্যাপ্লিকেশনটির সাথে যুদ্ধের ফাইলটি টমক্যাট ওয়েব অ্যাপস ডিরেক্টরিতে নিয়ে যান (এটি একটি ডিরেক্টরি যেখানে আমার মেশিনে পুরানো রুট ফোল্ডারটি ছিল: ~ / স্ট্যাক / অ্যাপাচি-টমক্যাট / ওয়েব অ্যাপস)

যুদ্ধ ফাইলের একটি নাম অবশ্যই ROOT.war থাকতে হবে । আপনার অ্যাপ্লিকেশনটির প্রয়োজন হলে নতুন নাম দিন: আপনার অ্যাপ্লিকেশননাম.ওয়ার -> রুট.ওয়ার

  1. টমক্যাটটি পুনরায় চালু করুন। পুনঃসূচনা করার পরে আপনার অ্যাপ্লিকেশনটি মূল হবে।

0

আমি আমার ডক্সটি দেখব; মূল ওয়েব অ্যাপ্লিকেশনটির রুট (বা আরআউট.ওয়ার) থেকে দূরে পরিবর্তনের জন্য একটি কনফিগারেশন নির্দিষ্ট করার একটি উপায় রয়েছে তবে টমক্যাট 5 এবং 6 এর মধ্যে এটি পরিবর্তিত হয়েছে বলে মনে হয়।

এটি পাওয়া গেছে:

http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html

সুতরাং, এটি দেখে মনে হচ্ছে যে (রুট.এক্সএমএল) মূল পাথ পরিবর্তন করা সম্ভব তবে কিছুটা ভাঙা - আপনাকে নিজের ওয়ারটি অটো-ডিপ্লোয়মেন্ট ডিরেক্টরিটির বাইরে নিয়ে যেতে হবে। মনে মনে যদি আমি জিজ্ঞাসা করি কেন আপনার ফাইলটির নাম ROOT.war এর নামকরণ করা একটি কার্যক্ষম সমাধান নয়?


1
দুর্ভাগ্যক্রমে যুদ্ধের ফাইলটি ROOT.war এ পরিবর্তন করা আমার পক্ষে কোনও বিকল্প নয়। জ্যাকস

কিছুটা দেরি হয়ে গেছে, তবে ... আমার পক্ষে আমি এটি পরিবর্তন করতে পারছি না কারণ আমি তৃতীয় পক্ষের তৈরি একটি সিস্টেম ব্যবহার করছি, যাকে মনে হয় ফাইলগুলি জার করার জন্য কয়েকটি অবস্থানকে হার্ড কোড করা হয়েছে .... সুতরাং এটি রুট.ওয়ারে সরানো হচ্ছে .... একটি সমস্যা তৈরি করে, যেহেতু মূল অ্যাপ্লিকেশনটি নিজের জন্য একটি জারটি একটি ডিরেক্টরিতে আবিষ্কার করে যা [
ওরিশালাপ.ওয়ার

0

খুব ভাল সমাধান নয় তবে একটি উপায় হ'ল রুট অ্যাপ থেকে আপনার ওয়েল অ্যাপে পুনর্নির্দেশ করা। এর জন্য আপনাকে রুট ইনডেক্স 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


-4

টমক্যাট In-এ (উইন্ডোজ সার্ভারের অধীনে) আমি কোনও কনফিগারেশন ফাইলে কোনও কিছুই যুক্ত বা সম্পাদনা করিনি। আমি সবেমাত্র আরআরটি ফোল্ডারটির অন্য কোনও নামকরণ করেছি এবং আমার অ্যাপ্লিকেশন ফোল্ডারের নাম বদলে ফেলেছি এবং এটি দুর্দান্ত কাজ করেছে।


1
এটি একটি ভাল কাজ হতে পারে, কিন্তু জ্যাকের প্রশ্ন কীভাবে ডিফল্ট অ্যাপ্লিকেশনটি পরিবর্তন করতে হবে; তিনি মূল ফোল্ডারের বিষয়বস্তু পরিবর্তন করতে না পারার কারণ থাকতে পারে।
JVMATL
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.