ഒരു അപ്പാച്ചെ ടോംകാറ്റ് സെർവറിൽ ഒന്നിലധികം വെബ് ആപ്ലിക്കേഷനുകൾ എങ്ങനെ പ്രവർത്തിപ്പിക്കാം


ജാവ കോഡ് നൽകുന്ന ഒരു വെബ് സെർവർ പ്രവർത്തിപ്പിക്കുന്നതിന് Java Servlets, JSP, Web Sockets എന്നിവ വിന്യസിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു ഓപ്പൺ സോഴ്uസ് വെബ് കണ്ടെയ്uനറാണ് Apache Tomcat. ഇത് ഒരു ക്രോസ്-പ്ലാറ്റ്ഫോം സെർവ്ലെറ്റ് കണ്ടെയ്നർ അല്ലെങ്കിൽ ഒരു വെബ് കണ്ടെയ്നർ ആയും തിരിച്ചറിയാം.

ലളിതമായി പറഞ്ഞാൽ, വിപണിയിലെ മറ്റ് വെബ് കണ്ടെയ്uനറുകളെ അപേക്ഷിച്ച് നിരവധി നേട്ടങ്ങൾ കാരണം നിരവധി വ്യാവസായിക പങ്കാളികൾക്കിടയിൽ ടോംകാറ്റ് വളരെ ജനപ്രിയമാണ്. നിങ്ങളുടെ ജാവ പ്രോജക്uറ്റിൽ നിന്ന് വെബ് ആർക്കൈവുകൾ സൃഷ്uടിക്കാനും ജാവ കോഡ് ചെയ്uത ഒരു എച്ച്uടിടിപി വെബ് സെർവർ ഹോസ്റ്റുചെയ്യുന്നതിന് ടോംകാറ്റ് കണ്ടെയ്uനറിൽ വിന്യസിക്കാനും കഴിയും. ഇനിപ്പറയുന്ന ഗുണങ്ങൾ കാരണം വ്യവസായങ്ങൾ മറ്റ് കണ്ടെയ്uനറുകളെ അപേക്ഷിച്ച് അപ്പാച്ചെ ടോംകാറ്റ് തിരഞ്ഞെടുക്കുന്നു.

  1. കുറഞ്ഞ ഭാരം.
  2. പരക്കെ ഉപയോഗിക്കുന്നു.
  3. മറ്റ് കണ്ടെയ്uനറുകളേക്കാൾ വളരെ വേഗത്തിൽ.
  4. കോൺഫിഗർ ചെയ്യാൻ എളുപ്പമാണ്.
  5. വളരെ വഴക്കമുള്ളത്.

സാധാരണയായി, അപ്പാച്ചെ ടോംകാറ്റ് ഒരു ഉപയോക്തൃ-സൗഹൃദ ഉൽപ്പന്നമാണ്, ഇത് എഞ്ചിനീയർമാർക്ക് അവരുടെ WAR ആർട്ടിഫാക്uറ്റുകൾ (വെബ് ആർക്കൈവ്uസ്) ചുരുങ്ങിയ കോൺഫിഗറേഷൻ മാറ്റങ്ങളോടെ വിന്യസിക്കാൻ ഇടം നൽകുന്നു.

ഇതിനകം ടോംക്യാറ്റ് ഉപയോഗിക്കുന്ന, അപ്പാച്ചെ ടോംകാറ്റ് എഞ്ചിൻ എങ്ങനെ ആരംഭിക്കാമെന്നും ഉപയോഗിക്കാമെന്നും അറിയാവുന്ന പ്രേക്ഷകരെയാണ് ഈ പോസ്റ്റ് ലക്ഷ്യമിടുന്നത്.

അപ്പാച്ചെ ടോംകാറ്റിൽ, കണ്ടെയ്uനർ സ്ഥിരസ്ഥിതിയായി വിന്യസിക്കുന്ന webapps ഡയറക്uടറിയിൽ WAR-കൾ ഇടണം. ലളിതമായി പറഞ്ഞാൽ, ടോംകാറ്റിനെ ഒരു വെബ് സെർവറായി വിന്യസിക്കുന്നതിനുള്ള ജാവ കോഡിന്റെ പ്രധാന കണ്ടെയ്uനറായി webapps ഡയറക്ടറി പ്രവർത്തിക്കുന്നു.

ഒരു ടോംകാറ്റ് കണ്ടെയ്uനറിൽ നിന്ന് ഞങ്ങൾ ഒന്നിലധികം വെബ് സെർവറുകൾ ഹോസ്റ്റ് ചെയ്യേണ്ട ഒരു സാഹചര്യത്തിൽ, അത് നിവർത്തിക്കുന്നതിനുള്ള ഒരു ഗൈഡായി നിങ്ങൾക്ക് ഈ പോസ്റ്റ് ഉപയോഗിക്കാം. ഈ ലേഖനത്തിൽ നിന്ന് ഒരു ടോംകാറ്റിനുള്ളിൽ ഒന്നിലധികം വെബ് ആപ്ലിക്കേഷനുകൾ അല്ലെങ്കിൽ രണ്ട് വെബ് സെർവറുകൾ എങ്ങനെ വിന്യസിക്കാമെന്ന് ഞാൻ നിങ്ങളെ കാണിക്കാൻ പോകുന്നു.

മുൻവ്യവസ്ഥകൾ: സെർവറിൽ ജാവ ഇൻസ്റ്റാൾ ചെയ്യണം. അഭികാമ്യം 1.7.x അല്ലെങ്കിൽ അതിനുമുകളിൽ. ഈ ട്യൂട്ടോറിയലിൽ ഞാൻ ടോംകാറ്റ് പതിപ്പ് 8.0.37 ഉപയോഗിക്കുന്നതിനാൽ ജാവ 1.7 ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്.

കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ പാക്കേജ് മാനേജർ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ജാവ ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും.

# yum install java              [On CentOS based Systems]
# apt-get install default-jre   [On Debian based Systems]

ഘട്ടം 1: Apache Tomcat സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുക

1. ആദ്യം റൂട്ട് അക്കൗണ്ട് ഉപയോഗിച്ച് ഒരു പ്രത്യേക tomcat ഉപയോക്താവിനെ സൃഷ്ടിക്കുക.

# useradd tomcat
# passwd tomcat

ഇപ്പോൾ ടോംകാറ്റ് ഉപയോക്താവായി ലോഗിൻ ചെയ്യുക, ഔദ്യോഗിക സൈറ്റിൽ നിന്ന് ഏറ്റവും പുതിയ അപ്പാച്ചെ ടോംകാറ്റ് ബണ്ടിൽ ഡൗൺലോഡ് ചെയ്യുക: ടെർമിനലിൽ നേരിട്ട് ഡൗൺലോഡ് ചെയ്യാനുള്ള wget കമാൻഡ്.

ഈ സാഹചര്യത്തിൽ, ഞാൻ ഇപ്പോൾ പുറത്തിറക്കിയ ഏറ്റവും പുതിയ സ്ഥിരതയുള്ള പതിപ്പുകളിലൊന്നായ Apache Tomcat, 8.5.5 ഡൗൺലോഡ് ചെയ്യുന്നു.

$ wget http://redrockdigimark.com/apachemirror/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

2. ഫയൽ ഡൗൺലോഡ് ചെയ്തുകഴിഞ്ഞാൽ, ടാർ കമാൻഡ് ഉപയോഗിച്ച് ഉള്ളടക്കം അൺകംപ്രസ്സ് ചെയ്യുക, കാണിച്ചിരിക്കുന്നതുപോലെ ഡയറക്ടറി ഘടന കാണുക:

$ tar -xvf apache-tomcat-8.5.5.tar.gz
$ cd apache-tomcat-8.5.5/
$ ls -l
total 112
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 bin
drwx------. 2 tomcat tomcat  4096 Sep  1 01:23 conf
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 lib
-rw-r-----. 1 tomcat tomcat 57092 Sep  1 01:23 LICENSE
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 logs
-rw-r-----. 1 tomcat tomcat  1723 Sep  1 01:23 NOTICE
-rw-r-----. 1 tomcat tomcat  7063 Sep  1 01:23 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 15946 Sep  1 01:23 RUNNING.txt
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 temp
drwxr-x---. 7 tomcat tomcat  4096 Sep  1 01:22 webapps
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 work

ഘട്ടം 2: അപ്പാച്ചെ ടോംകാറ്റ് സെർവർ കോൺഫിഗർ ചെയ്യുക

3. ഞങ്ങൾ തിരയുന്ന കോൺഫിഗറേഷൻ മാറ്റം conf ഡയറക്uടറിയിൽ കിടക്കുന്നു, ടോംകാറ്റിനെ ആരംഭിക്കാൻ സഹായിക്കുന്ന എല്ലാ കോൺഫിഗറേഷൻ ഫയലുകളും സ്ഥാപിക്കാൻ ഉപയോഗിക്കുന്നു.

conf ഡയറക്ടറിയുടെ ഉള്ളടക്കം താഴെ കാണുന്നത് പോലെയാണ്.

$ cd conf/
$ ls -l
total 224
-rw-------. 1 tomcat tomcat  12502 Sep  1 01:23 catalina.policy
-rw-------. 1 tomcat tomcat   7203 Sep  1 01:23 catalina.properties
-rw-------. 1 tomcat tomcat   1338 Sep  1 01:23 context.xml
-rw-------. 1 tomcat tomcat   1149 Sep  1 01:23 jaspic-providers.xml
-rw-------. 1 tomcat tomcat   2358 Sep  1 01:23 jaspic-providers.xsd
-rw-------. 1 tomcat tomcat   3622 Sep  1 01:23 logging.properties
-rw-------. 1 tomcat tomcat   7283 Sep  1 01:23 server.xml
-rw-------. 1 tomcat tomcat   2164 Sep  1 01:23 tomcat-users.xml
-rw-------. 1 tomcat tomcat   2633 Sep  1 01:23 tomcat-users.xsd
-rw-------. 1 tomcat tomcat 168133 Sep  1 01:23 web.xml

4. ഈ സാഹചര്യത്തിൽ, എനിക്ക് പ്രധാനപ്പെട്ടത് server.xml ഫയൽ ആണ്. അതിനാൽ മറ്റ് ഫയലുകളെക്കുറിച്ചോ ഡയറക്uടറികളെക്കുറിച്ചോ ഞാൻ ആഴത്തിലുള്ള വിശദീകരണം നടത്താൻ പോകുന്നില്ല.

server.xml എന്നത് ടോംകാറ്റിനോട് ഏത് പോർട്ട് ആരംഭിക്കണം, ഏത് ഡയറക്uടറി ഉള്ളടക്കം വിന്യസിക്കണമെന്നും മറ്റ് പ്രധാനവും അടിസ്ഥാനപരവുമായ കോൺഫിഗറേഷനുകൾ എന്നിവയെക്കുറിച്ച് പറയുന്ന കോൺഫിഗറേഷൻ ഫയലാണ്.

നിങ്ങൾ ഫയൽ തുറന്നതിന് ശേഷം ഇത് അടിസ്ഥാനപരമായി താഴെയായി കാണപ്പെടുന്നു.

$ vim server.xml

ഘട്ടം 3: അപ്പാച്ചെ ടോംകാറ്റിൽ വെബ് ആപ്പുകൾ വിന്യസിക്കുന്നു

5. ഇപ്പോൾ ഞങ്ങൾ Apache tomcat-ൽ ഒരു പുതിയ വെബ് ആപ്ലിക്കേഷൻ വിന്യസിക്കും, ആദ്യം സേവന ടാഗ് അടച്ച സ്ഥലം കണ്ടെത്തുക കൂടാതെ ആദ്യത്തെ അടച്ച സേവന ടാഗിന് ശേഷം വരികൾ താഴെ ചേർക്കുക.

<Service name="webapps2">
    <Connector port="7070" maxHttpHeaderSize="7192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" redirectPort="7443" acceptCount="100"
        connectionTimeout="20000" disableUploadTimeout="true" />
        <Connector port="7072" 
        enableLookups="false" redirectPort="7043" protocol="AJP/1.3" />

    <Engine name="webapps2" defaultHost="localhost">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
            <Host name="localhost" appBase="webapps2"
                unpackWARs="true" autoDeploy="true"
                 xmlValidation="false" xmlNamespaceAware="false">
            </Host>
    </Engine>
</Service>

നിങ്ങൾ കാണുന്നത് പോലെ, ഡിഫോൾട്ട് ടോംകാറ്റ് പോർട്ട് 8080-ൽ ആരംഭിക്കുന്നതിനാൽ, പുതുതായി ചേർത്ത എൻട്രിയിൽ ഞാൻ കണക്റ്റർ പോർട്ട് 7070 ആക്കി മാറ്റി. ഇത് പൂർണ്ണമായും സജ്ജീകരിച്ചതിന് ശേഷം 8080, 7070 എന്നീ പോർട്ടുകൾക്ക് കീഴിൽ രണ്ട് വെബ് സെർവറുകൾ പ്രവർത്തിക്കും.

6. server.xml എന്നതിലേക്ക് വരുത്തിയ മാറ്റം സംരക്ഷിച്ച ശേഷം, അപ്പാച്ചെ മെയിനിനുള്ളിൽ webapps2 എന്ന പേരിൽ ഒരു ഡയറക്ടറി സൃഷ്ടിക്കുക.

$ cd /home/tomcat/apache-tomcat-8.5.5/
$ mkdir webapps2

ഞാൻ നൽകിയ server.xml എന്ന പുതിയ എൻട്രി നിങ്ങൾ നിരീക്ഷിച്ചാൽ, സേവനത്തിന്റെ പേരും ആപ്പ് ബേസും എഞ്ചിനും webapps2 എന്ന് പേരിട്ടിരിക്കുന്നത് നിങ്ങൾ കാണും. അതാണ് ഞാൻ webapps2 എന്ന ഡയറക്ടറി സൃഷ്ടിച്ചത്. നിങ്ങൾക്ക് താൽപ്പര്യമുള്ളതുപോലെ ഒരെണ്ണം സൃഷ്ടിക്കാൻ കഴിയും, എന്നാൽ എൻട്രിയിൽ ആവശ്യമായ മാറ്റങ്ങൾ വരുത്തുന്നത് ഉറപ്പാക്കുക.

7. രണ്ടാമത്തെ വെബ് സെർവർ പ്രവർത്തനക്ഷമമാണെന്നും പ്രവർത്തിക്കുന്നുണ്ടെന്നും ഉറപ്പാക്കാൻ, ഞാൻ webapps ഡയറക്ടറിയുടെ ഉള്ളടക്കം webapps2 ഡയറക്uടറിയിലേക്ക് പകർത്തി.

$ cp -r webapps/* webapps2/

8. ഇപ്പോൾ ആവേശകരമായ ഭാഗം. ഞങ്ങൾ സെർവർ ആരംഭിച്ച് അത് പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് നോക്കാൻ പോകുന്നു. bin ഡയറക്ടറിയിൽ പോയി startup.sh സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ട് ചെയ്യുക. നിങ്ങൾക്ക് ലോഗുകൾ catalina.out എന്ന ഫയലിൽ ലോഗുകൾ കാണാനാകും.

$ cd bin/
$ ./startup.sh
Using CATALINA_BASE:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_HOME:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-8.5.5/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/tomcat/apache-tomcat-8.5.5/bin/bootstrap.jar:/home/tomcat/apache-tomcat-8.5.5/bin/tomcat-juli.jar
Tomcat started.

9. നിങ്ങൾ ലോഗുകൾ റഫർ ചെയ്യുകയാണെങ്കിൽ, webapps, webapps2 എന്നിവയും വിന്യസിച്ചിരിക്കുന്നതായും ആപ്പ് ഒരു പ്രശ്uനവുമില്ലാതെ ആരംഭിക്കുന്നതായും നിങ്ങൾക്ക് കാണാൻ കഴിയും.

$ cd logs/
$ tail -25f catalina.out 
29-Sep-2016 12:13:51.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples
29-Sep-2016 12:13:51.661 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples has finished in 452 ms
29-Sep-2016 12:13:51.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs
29-Sep-2016 12:13:51.703 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs has finished in 39 ms
29-Sep-2016 12:13:51.704 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager
29-Sep-2016 12:13:51.744 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager has finished in 39 ms
29-Sep-2016 12:13:51.748 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
29-Sep-2016 12:13:51.767 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service webapps2
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5
29-Sep-2016 12:13:51.777 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager has finished in 102 ms
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT
29-Sep-2016 12:13:51.915 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT has finished in 35 ms
29-Sep-2016 12:13:51.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples
29-Sep-2016 12:13:52.323 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
29-Sep-2016 12:13:52.337 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples has finished in 414 ms
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs has finished in 29 ms
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager
29-Sep-2016 12:13:52.417 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager has finished in 46 ms
...

10. ഈ സാഹചര്യത്തിൽ, ഞാൻ ഉപയോഗിച്ച സെർവറിന്റെ IP 172.16.1.39 ആണ്, ഒരു ടോംകാറ്റ് കണ്ടെയ്uനറിനുള്ളിൽ എനിക്ക് രണ്ട് വെബ് സെർവറുകൾ ആരംഭിക്കാനാകുമെന്ന് നിങ്ങൾക്ക് കാണാൻ കഴിയും.

http://172.16.1.39:8080   [1st Web App]
http://172.16.1.39:7070   [2nd Web App]

നിങ്ങൾക്കെല്ലാവർക്കും ഈ ലേഖനം ഉപയോഗപ്രദവും ആസ്വാദ്യകരവുമാണെന്ന് പ്രതീക്ഷിക്കുന്നു. TecMint-മായി സമ്പർക്കം പുലർത്തുക, ഈ ലേഖനവുമായി ബന്ധപ്പെട്ട എന്തെങ്കിലും ചോദ്യങ്ങൾക്ക് എന്നെ ബന്ധപ്പെടാൻ മടിക്കേണ്ടതില്ല.