Jinsi ya Kuendesha Programu Nyingi za Wavuti kwenye Seva Moja ya Apache Tomcat


Apache Tomcat ni chombo huria cha wavuti kinachokuruhusu kupeleka Huduma za Java, JSP na Soketi za Wavuti ili kuendesha seva ya wavuti inayoendeshwa na msimbo wa Java. Inaweza pia kutambuliwa kama chombo cha huduma ya jukwaa-mbali au chombo cha wavuti.

Kwa urahisi, Tomcat ni maarufu sana kati ya wadau wengi wa viwanda kutokana na faida nyingi juu ya vyombo vingine vya wavuti kwenye soko. Unaweza kuunda kumbukumbu za wavuti kutoka kwa mradi wako wa Java na uitumie kwa urahisi ndani ya tomcat ili kupangisha seva ya wavuti ya HTTP iliyosimbwa na Java. Viwanda huchagua apache tomcat juu ya chombo kingine kwa sababu ya faida zifuatazo.

  1. Uzito mwepesi.
  2. Inatumika Sana.
  3. Haraka zaidi kuliko vyombo vingine.
  4. Rahisi kusanidi.
  5. Ni rahisi kubadilika.

Kwa kawaida, apache tomcat ni bidhaa ifaayo kwa mtumiaji ambayo huwapa wahandisi nafasi ya kupeleka vizalia vyao vya WAR (Kumbukumbu za Wavuti) na mabadiliko madogo ya usanidi.

Chapisho hili linalenga hadhira ambayo tayari inatumia tomcat na inajua jinsi ya kuanzisha na kutumia injini ya apache tomcat.

Katika apache tomcat, WARs zinapaswa kuwekwa kwenye webapps saraka ambayo chombo huzitumia kwa chaguo-msingi. Kwa urahisi, saraka ya programu za wavuti hufanya kama kontena kuu la msimbo wa Java kwa tomcat kuipeleka kama seva ya wavuti.

Katika hali ambayo tunahitaji kupangisha zaidi ya seva moja za wavuti kutoka kwa chombo kimoja cha tomcat, unaweza kutumia chapisho hili kama mwongozo ili kulikamilisha. Nitakuonyesha jinsi ya kupeleka programu nyingi za wavuti au seva mbili za wavuti ndani ya tomcat moja kutoka kwa nakala hii.

Masharti: Java inapaswa kusakinishwa kwenye seva. Ikiwezekana 1.7.x au zaidi. Katika somo hili nina Java 1.7 iliyosakinishwa tangu nitumie toleo la tomcat 8.0.37.

Unaweza kusakinisha Java kwa kutumia meneja wa kifurushi chako kama vile yum au apt kama inavyoonyeshwa:

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

Hatua ya 1: Sakinisha Seva ya Apache Tomcat

1. Kwanza unda mtumiaji tofauti wa tomcat ukitumia akaunti ya mizizi.

# useradd tomcat
# passwd tomcat

Sasa ingia kama mtumiaji wa tomcat na upakue kifungu cha hivi karibuni cha apache tomcat kutoka kwa tovuti rasmi hapa: wget amri ya kupakua moja kwa moja kwenye terminal.

Katika kesi hii, ninapakua Apache Tomcat, 8.5.5, ambayo ni mojawapo ya matoleo ya hivi karibuni imara iliyotolewa na sasa.

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

2. Faili ikishapakuliwa, shinikiza yaliyomo kwa kutumia amri ya tar na uangalie muundo wa saraka kama inavyoonyeshwa:

$ 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

Hatua ya 2: Sanidi Seva ya Apache Tomcat

3. Mabadiliko ya usanidi ambayo tunatafuta yamo ndani ya saraka ya conf, inatumiwa kuweka faili zote za usanidi ambazo husaidia tomcat kuanza.

Yaliyomo kwenye saraka ya conf inaonekana kama hapa chini.

$ 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. Katika hali hii, lililo muhimu kwangu ni faili ya server.xml. Kwa hivyo sitafanya maelezo ya kina kuhusu faili au saraka nyingine.

Server.xml ni faili ya usanidi ambayo inamwambia tomcat ni mlango gani wa kuianzisha, ni saraka gani ya maudhui ya kupeleka na usanidi mwingi zaidi kuu na msingi.

Kimsingi inaonekana kama hapa chini baada ya kufungua faili.

$ vim server.xml

Hatua ya 3: Kupeleka Programu za Wavuti katika Apache Tomcat

5. Sasa tutapeleka programu mpya ya wavuti katika Apache tomcat, kwanza pata mahali ambapo lebo ya huduma imefungwa na uingize chini ya mistari baada ya lebo ya huduma iliyofungwa ya kwanza.

<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>

Kama unavyoona, nimebadilisha mlango wa kiunganishi hadi 7070 katika ingizo jipya lililoingizwa kwani tomcat chaguo-msingi huanza na bandari 8080. Baada ya kusanidi hii kabisa kutakuwa na seva mbili za wavuti zinazoendesha chini ya bandari 8080 na 7070.

6. Baada ya kuhifadhi mabadiliko yaliyofanywa kwa server.xml, tengeneza saraka katika apache inayoitwa webapps2 ndani ya apache main.

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

Ukiona server.xml ingizo jipya ambalo nimetoa, unapaswa kuona kwamba jina la huduma, msingi wa programu na injini imeitwa webapps2. Ndiyo sababu niliunda saraka inayoitwa webapps2. Unaweza kuunda moja unavyotaka, lakini hakikisha unafanya mabadiliko kwenye ingizo inavyohitajika.

7. Ili kuhakikisha seva ya pili ya wavuti iko na inafanya kazi, nilinakili yaliyomo kwenye saraka ya wavuti kwenye saraka ya webapps2.

$ cp -r webapps/* webapps2/

8. Sasa sehemu ya kusisimua. Tutaanzisha seva na kuona ikiwa inafanya kazi. Nenda kwa bin saraka na utekeleze hati ya startup.sh. Unaweza kutazama kumbukumbu katika faili ya catalina.out iliyo katika saraka ya kumbukumbu.

$ 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. Ukirejelea kumbukumbu utaweza kuona kwamba webapps na webapps2 zimetumika na programu imeanzishwa bila tatizo lolote.

$ 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. Katika hali hii, IP ya seva niliyotumia ni 172.16.1.39 na unaweza kuona ningeweza kuanzisha seva mbili za wavuti ndani ya chombo kimoja cha tomcat.

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

Natumai nyote mtapata nakala hii kuwa muhimu na ya kufurahisha. Endelea kuwasiliana na TecMint na ujisikie huru kuwasiliana nami kwa maswali yoyote kuhusu makala haya.