RE: Virtual Hosts [mostly solved]
* Not having to modify server.xml directly. According to the Tomcat docs, you shouldn't modify this file. I think you may have misconstrued something in the docs. There's nothing wrong with modifying server.xml; for example, production environments must change it and web.xml to remove development-oriented attributes. Certainly you should not place Context elements in server.xml, since that requires a Tomcat restart to modify webapp attributes. Ok, that makes sense. I got the feeling after a while that I was trying to be too strict about that idea and it's nice to have somebody else mention that. * Tomcat's server.xml file has a host declaration for each webapp and a declaration for localhost (though that is not necessary) Host name=localhost appBase=webapps / I would remove the Host entry for localhost, since, as someone else pointed out, its appBase points to a parent directory of the other Hosts, and this is at best bad practice and confusing, even if not necessarily causing errors. Good idea. I have no good reason for leaving it there other than the fact that it was there previously. * Being able to include the manager app for each host that I define. I don't have a problem doing this. All I did was place a copy of manager.xml is each conf/Catalina/[host] directory, and all apps deploy properly under each of their hosts. Did you change something in manager.xml? I was able to get this to work as well. For some reason, when I manually created the conf/Catalina/[host] directory and placed the manager.xml file in there before I restarted tomcat, I was getting odd problems in not being able to deploy my app. When I placed the manager.xml file in there after I had the app up and running, I had no problems with the manager app conflicting with my other app. Thanks again for everybody's help on this -- I feel like I've finally made progress on this issue and have a better understanding for how things work. Josh - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Virtual Hosts [mostly solved]
With the help of several people on this list, I've been able to get my server configured [mostly] the way I wanted it configured. Here's my solution, hopefully it will be helpful to others Goals: * One instance of Tomcat running behind Apache * Multiple VirtualHosts, each pointing to its own Tomcat webapp * The ability to hot-deploy an app without affecting the other apps * Minimal or no modifications required to server.xml for additional hosts * A solution that is maintainable and is not a hack Solution: * Apache with mod_jk * Each domain has a .conf file at /etc/httpd/conf.d/vhosts * The conf file routes .do and .jsp files to tomcat using mod_jk JkMount /*.do router JkMount /*.jsp router * The VirtualHost declaration has the DocumentRoot set to the path of the webapp * Tomcat's server.xml file has a host declaration for each webapp and a declaration for localhost (though that is not necessary) Host name=localhost appBase=webapps / Host name=foo.mydomain.com appBase=webapps/foo / Host name=bar.mydomain.com appBase=webapps/bar / Host name=eggs.mydomain.com appBase=webapps/eggs / * Deploy a war file named ROOT.war to the correct appBase for each application. This file must be named ROOT.war * GOTCHA: I tried to also include the manager webapp for each of the hosts by adding the manager.xml file to $CATALINA_HOME/conf/Catalina/foo.mydomain.com/ as described here http://webtuitive.com/samples/virtual-hosting-howto.jsp but by having a context defined in this location, I was not able to deploy my applications using Automatic Application Deployment as defined in the Tomcat docs. I'm not sure why this doesn't work but by removing the manager.xml file, I am able to hot-deploy my apps. This is working well for me, and that in itself makes me happy. The only things I'd like to improve upon are: * Not having to modify server.xml directly. According to the Tomcat docs, you shouldn't modify this file. I'm not sure how to avoid this. * Being able to include the manager app for each host that I define. I was using ant's tomcat tasks to tie into the manager for deploying my apps, but now I have to scp the war file into the directory. This isn't the worst thing that could happen, but it seems like there is a solution out there for this. Anyway, thanks to everybody who helped out on this. Josh Gormley -Original Message- From: Mikolaj Rydzewski [mailto:[EMAIL PROTECTED] Sent: Thursday, December 28, 2006 9:34 AM To: Tomcat Users List Subject: Re: Virtual Hosts Gormley, Josh wrote: As a side question, is this possible to do without modifying the server.xml file every time I want to add a new host? I've read that it's bad practice to modify the server.xml file much like it's bad practice to modify the httpd.conf file in Apache. In Apache, I have a vhost directory with .conf files for each host -- is there a similar method to do this with Tomcat? There is a host-manager webapp which comes with Tomcat to allow adding vhosts on the fly (I haven't used it, however). You will need user with admin role in tomcat-users.xml to access it. -- Mikolaj Rydzewski [EMAIL PROTECTED] - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Virtual Hosts [mostly solved]
You may find that the default host loads all of the web applications. In order to solve this, make sure that each of the contexts are not some subdirectory of another context. Host name=localhost appBase=vhosts/local / Host name=foo.mydomain.com appBase=vhosts/foo / Host name=bar.mydomain.com appBase=vhosts/bar / Host name=eggs.mydomain.com appBase=vhosts/eggs / You can use an absolute path to place this structure outside of your Tomcat installation. For large structures I think this is nice, because then you can upgrade Tomcat without disturbing your applications. Cutover would involve installing a parallel Tomcat, modifying server.xml. shutting down the old version, and starting up the new version. If the new version failed, recovery is just shutting down the new version and starting up the old version. If you want a one-stop place for all of your web applications, please ignore this comment. For a root context, I usually set up an application.xml file in conf/Catalina/hostname/ with the appropriate path= in the Context element, or a context.xml file in the web application's META-INF directory with the same context information. Once you separate each of the virtual hosts so that subdirectories don't overlap, I think you will find that multiple manager applications work. The manager application will then be specific to the virtual host, and you'll have to access that manager application by going to the specific virtual host (ie, http://hostname:8080/manager/html) HTH /mde/ . . . . . just my two cents --- Gormley, Josh [EMAIL PROTECTED] wrote: With the help of several people on this list, I've been able to get my server configured [mostly] the way I wanted it configured. Here's my solution, hopefully it will be helpful to others Goals: * One instance of Tomcat running behind Apache * Multiple VirtualHosts, each pointing to its own Tomcat webapp * The ability to hot-deploy an app without affecting the other apps * Minimal or no modifications required to server.xml for additional hosts * A solution that is maintainable and is not a hack Solution: * Apache with mod_jk * Each domain has a .conf file at /etc/httpd/conf.d/vhosts * The conf file routes .do and .jsp files to tomcat using mod_jk JkMount /*.do router JkMount /*.jsp router * The VirtualHost declaration has the DocumentRoot set to the path of the webapp * Tomcat's server.xml file has a host declaration for each webapp and a declaration for localhost (though that is not necessary) Host name=localhost appBase=webapps / Host name=foo.mydomain.com appBase=webapps/foo / Host name=bar.mydomain.com appBase=webapps/bar / Host name=eggs.mydomain.com appBase=webapps/eggs / * Deploy a war file named ROOT.war to the correct appBase for each application. This file must be named ROOT.war * GOTCHA: I tried to also include the manager webapp for each of the hosts by adding the manager.xml file to $CATALINA_HOME/conf/Catalina/foo.mydomain.com/ as described here http://webtuitive.com/samples/virtual-hosting-howto.jsp but by having a context defined in this location, I was not able to deploy my applications using Automatic Application Deployment as defined in the Tomcat docs. I'm not sure why this doesn't work but by removing the manager.xml file, I am able to hot-deploy my apps. This is working well for me, and that in itself makes me happy. The only things I'd like to improve upon are: * Not having to modify server.xml directly. According to the Tomcat docs, you shouldn't modify this file. I'm not sure how to avoid this. * Being able to include the manager app for each host that I define. I was using ant's tomcat tasks to tie into the manager for deploying my apps, but now I have to scp the war file into the directory. This isn't the worst thing that could happen, but it seems like there is a solution out there for this. Anyway, thanks to everybody who helped out on this. Josh Gormley -Original Message- From: Mikolaj Rydzewski [mailto:[EMAIL PROTECTED] Sent: Thursday, December 28, 2006 9:34 AM To: Tomcat Users List Subject: Re: Virtual Hosts Gormley, Josh wrote: As a side question, is this possible to do without modifying the server.xml file every time I want to add a new host? I've read that it's bad practice to modify the server.xml file much like it's bad practice to modify the httpd.conf file in Apache. In Apache, I have a vhost directory with .conf files for each host -- is there a similar method to do this with Tomcat? There is a host-manager webapp which comes with Tomcat to allow adding vhosts on the fly (I haven't used it, however). You will need user with admin role in tomcat-users.xml to access it. -- Mikolaj Rydzewski [EMAIL
RE: Virtual Hosts [mostly solved]
From: Mark Eggers [mailto:[EMAIL PROTECTED] Subject: RE: Virtual Hosts [mostly solved] For a root context, I usually set up an application.xml file in conf/Catalina/hostname/ with the appropriate path= in the Context element That's incorrect for all recent versions of Tomcat. You must not use a path attribute unless the Context element is in server.xml, which is strongly discouraged. For the default app, place the Context element with an appropriate docBase in a file named ROOT.xml inside each conf/Catalina/[host] directory. - Chuck THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers. - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Virtual Hosts [mostly solved]
From: Gormley, Josh [mailto:[EMAIL PROTECTED] Subject: RE: Virtual Hosts [mostly solved] * Not having to modify server.xml directly. According to the Tomcat docs, you shouldn't modify this file. I think you may have misconstrued something in the docs. There's nothing wrong with modifying server.xml; for example, production environments must change it and web.xml to remove development-oriented attributes. Certainly you should not place Context elements in server.xml, since that requires a Tomcat restart to modify webapp attributes. * Tomcat's server.xml file has a host declaration for each webapp and a declaration for localhost (though that is not necessary) Host name=localhost appBase=webapps / I would remove the Host entry for localhost, since, as someone else pointed out, its appBase points to a parent directory of the other Hosts, and this is at best bad practice and confusing, even if not necessarily causing errors. * Being able to include the manager app for each host that I define. I don't have a problem doing this. All I did was place a copy of manager.xml is each conf/Catalina/[host] directory, and all apps deploy properly under each of their hosts. Did you change something in manager.xml? - Chuck THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY MATERIAL and is thus for use only by the intended recipient. If you received this in error, please contact the sender and delete the e-mail and its attachments from all computers. - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]