Tomcat รีสตาร์ทโฮสต์เสมือนจาก Tomcat Web Application Manager

ฉันมีโฮสต์เสมือน 3 ตัวที่ทำงานบน Tomcat

abc.domain.com def.domain.com ghi.domain.com

เมื่อฉันอัปเดตแอปพลิเคชันหนึ่ง ฉันต้องเริ่มบริการ Tomcat ใหม่ (ฉันใช้สคริปต์ ./shutdown.sh และ ./startup.sh)

เมื่อฉันใช้ Tomcat Web Application Manager ฉันต้องการอัปเดตใหม่ เหตุการณ์ที่ฉันหยุดแอปพลิเคชั่นตัวใดตัวหนึ่ง มันยังคงใช้งานได้เมื่อฉันเรียกมันบนเบราว์เซอร์

บน localhost ฉันใช้วิธีการเหล่านั้น (คิดว่า Tomcat Web Application Manager) เพื่อรีสตาร์ทแอปพลิเคชันและใช้งานได้ (ไม่มีโฮสต์เสมือน)

localhost:8080/abc localhost:8080/def localhost:8080/ghi

มีความคิดบ้างไหมว่าจะรีสตาร์ทแอปพลิเคชันโดยไม่ต้องรีสตาร์ทบริการ Tomcat ได้อย่างไร จุดประสงค์ของฉันคือฉันไม่ต้องการรบกวนแอปพลิเคชันอื่นๆ

ขอบคุณ

ในไฟล์ server.xml

<Host name="abc.domain.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="/tomcat/webapps/abc"
               debug="0" reloadable="true"/>
      </Host>

<Host name="def.domain.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="/tomcat/webapps/def"
               debug="0" reloadable="true"/>
</Host>

<Host name="ghi.domain.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="/tomcat/webapps/ghi"
               debug="0" reloadable="true"/>
      </Host>`

person Ndrik7    schedule 09.01.2019    source แหล่งที่มา


คำตอบ (1)


ดังนั้นฉันจึงพบวิธีแก้ปัญหาในเอกสาร Tomcat

https://tomcat.apache.org/tomcat-9.0-doc/virtual-hosting-howto.html#server.xml

โปรดทราบว่าโครงสร้างไดเรกทอรีภายใต้ appBase สำหรับแต่ละโฮสต์ไม่ควรทับซ้อนกัน

ดังนั้น ฉันต้องแก้ไข server.xml จาก

<Host name="abc.domain.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="/tomcat/webapps/abc"
               debug="0" reloadable="true"/>
      </Host>

to

<Host name="abc.domain.com"  appBase="abc" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="xyz"
               debug="0" reloadable="true"/>
      </Host>

<Host name="def.domain.com"  appBase="def"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="" docBase="klm"
               debug="0" reloadable="true"/>
</Host>

และไปที่ Tomcat Virtual Host Manager เพื่อ หยุด และ เริ่ม โฮสต์เสมือน

ฉันหวังว่ามันสามารถช่วยได้

person Ndrik7    schedule 09.01.2019