Thank you for the changes you suggested. First problem is, not all the webapps have Https enabled, so I have to use port-number 80. Can you suggest me an alternative configuration. I have changed it to port 8080 and given a proxyPort=80 as follows :
< <Connector port="8080" proxyPort="80" protocol="org.apache.coyote.http11.Http11NioProtocol" compression="force" compressionMinSize="1024" connectionTimeout="20000" maxPostSize="5242880" URIEncoding="utf-8" compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"/> --> -<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxPostSize="5242880" SSLEnabled="true" maxThreads="200" compr$ compressionMinSize="1024" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="my-keystore.jks" keystorePass="pass" URIEncoding="utf-8" compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"/> <Connector port="8010" protocol="AJP/1.3" redirectPort="80" URIEncoding="utf-8" compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat"> // Multiple webapp declarations </Engine> My sites-enabled file looks like this : <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName www.domain-shop.com DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> <VirtualHost *:80> ServerName www.domain_tomcat.de ServerAlias domain_tomcat.de ProxyRequests off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / ajp://localhost:8010/ ProxyPassReverse / ajp://localhost:8010/ <Location / > Order allow,deny Allow from all </Location> </VirtualHost> workers.properties looks like : worker.list = worker_app1 worker.worker_app1.type = lb worker.worker_app1.balance_workers = app1_instance1 worker.worker_app1.sticky_session = true worker.worker_app1.sticky_session_force = false worker.worker_app1.method = busyness worker.app1_instance1.type = ajp13 worker.app1_instance1.host = 127.0.0.1 worker.app1_instance1.port = 8010 worker.app1_instance1.host = localhost worker.app1_instance1.lbfactor = 1 worker.app1_instance1.socket_timeout = 40 worker.app1_instance1.socket_keepalive = true worker.app1_instance1.reply_timeout = 30000 uriworkermap.properties looks like : # Proxy everything to backend: /|/* = worker_app1; jk.conf in modules-enabled <IfModule jk_module> JkWorkersFile /etc/apache2/workrs.properties JkLogFile /var/log/apache2/mod_jk.log JkLogLevel notice JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " JkOptions +ForwardURIProxy JkMountFile /etc/apache2/uriworkermap.properties </IfModule> After this, when I try to open domain_tomcat.de, I get : The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. So, what am I missing. Kindly let me know. Thanks a lot. :-) On Mon, Dec 7, 2015 at 3:48 PM, Frederik Nosi <frederik.n...@postecom.it> wrote: > (Yes, it's me who replied on serverfault.com, on this one: > http://serverfault.com/questions/740534/apache-webserver-tomcat-runing-multiple-tomcat-webapps-and-apache-webserver > ), > On 12/07/2015 11:26 AM, Kernel freak wrote: > > Hello friends, > > I am working on some server side changes in which I have the webapps or > website hosted by Apache server is called by the URL. So if url > iswww.domain-one.com, then the specific webapp or website must be served. > > I have partial success in these regards as I have already configured Apache > Tomcat to host multiple webapps, and call them based on URL. It is working. > > Now on to the 2nd stage of problem, where I have hosted a CMS on Apache > server, and would like to call it with a URL, *but also keep Apache tomcat > running in parallel*, and this is the main problem I am dealing with. > > This may seem like a Apache server issue, but it's both, as I want to run > Apache web-server and Apache tomcat simultaneously with Virtual hosting. I > just hope there might be people here who know both servers. > > I tried mod_jk without any luck. Here are the changes I made to tomcat and > apache server. > > Tomcat changes : server.xml : > > <Connector port="80" > protocol="org.apache.coyote.http11.Http11NioProtocol" > compression="force" compressionMinSize="1024" > connectionTimeout="20000" maxPostSize="5242880" > URIEncoding="utf-8" > compressableMimeType="text/html,text/xml,text/plain,text/css,text/ > javascript,application/x-javascript,application/javascript"/> > > > > You're using port 80 on your server for tomcat, that's why apache fails to > start, because port 80 is in use, see later. > > > <Connector port="443" > protocol="org.apache.coyote.http11.Http11NioProtocol" > maxPostSize="5242880" SSLEnabled="true" maxThreads="200" compre$ > compressionMinSize="1024" scheme="https" secure="true" > clientAuth="false" sslProtocol="TLS" > keystoreFile="keystorefile" keystorePass="PASSWORD" > URIEncoding="utf-8" > compressableMimeType="text/html,text/xml,text/plain,text/css,text/ > javascript,application/x-javascript,application/javascript"/> > > > > <Host name="localhost" appBase="webapps" unpackWARs="true" > autoDeploy="true"/> > <Host name="domain-first.com" autoDeploy="true" > unpackWARs="true" appBase="tooltank_webapps"> > <Alias>www.domain-first.com</Alias> > <Context path=""/> > </Host> > > <Host name="domain-second.com" autoDeploy="true" > unpackWARs="true" appBase="aupair_webapps"> > <Alias>www.domain-second.com</Alias> > <Context path=""/> > > > </Host> > <Connector port="8010" protocol="AJP/1.3" redirectPort="443" > URIEncoding="utf-8" > compressableMimeType="text/html,text/xml,text/plain,text/css,text/ > javascript,application/x-javascript,application/javascript" > /> > > > > Installed mod_jk with following command : > > > apt-get install libapache2-mod-jk > > Created file workers.properties in /etc/apache2/ > > > # Define 1 real worker using ajp13 > worker.list=worker > # Set properties for worker (ajp13) > worker.worker.type=ajp13 > worker.worker.host=localhost > worker.worker.port=8010 > > > > I use a load balanced worker per application, this way you can add other > instances of the same app when needed, example: > > # Define Load balancer: > > worker.list = worker_app1 > > # Configure load balancer with only one worker, app1_instance1 > > worker.worker_app1.type = lb > worker.worker_app1.balance_workers = app1_instance1 > worker.worker_app1.sticky_session = true > worker.worker_app1.sticky_session_force = false > worker.worker_app1.method = busyness > > # Define worker: > > worker.app1_instance1.type = ajp13 > worker.app1_instance1.host = 127.0.0.1 > worker.app1_instance1.port = 8010 > worker.app1_instance1.host = localhost > worker.app1_instance1.lbfactor = 1 > worker.app1_instance1.socket_timeout = 40 > worker.app1_instance1.socket_keepalive = true > worker.app1_instance1.reply_timeout = 30000 > > > Instructed jk.conf to load this file : > > > JkWorkersFile /etc/apache2/workers.properties > > > I would use a uriworkermap.properties too, where you can specify which > path should be reverse proxied from mod_jk, from your serverfault config > snippet: > > <IfModule jk_module> > > JkWorkersFile /etc/apache2/workers.properties > JkLogLevel INFO > JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories > > </IfModule> > > > > === I would change it this way, correct paths if needed ===== > > <IfModule jk_module> > JkWorkersFile /etc/apache2/workers.properties > JkLogFile /var/log/apache2/mod_jk.log > JkLogLevel notice > JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " > JkOptions +ForwardURIProxy > JkMountFile /etc/apache2/uriworkermap.properties > </IfModule> > > ===== then on /etc/apache2/uriworkermap.properties ======= > > # Proxy everything to backend: > /|/* = worker_app1; > > > > You'll have to have a virtual host per domain though. > > > > Finally edited 000-default in sites-enabled to add : > > > JkMount /home/user/tomcat_directory/* worker1 > > Then restarted Apache2, and I got this error : > > > [....] Restarting web server: apache2(98)Address already in use: > make_sock: could not bind to address [::]:80 > (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 > no listening sockets available, shutting down > Unable to open logs > Action 'start' failed. > The Apache error log may have more information. > failed! > > > I understand that Tomcat is running on 80, but how do I then configure > the servers so they can run simultaneously. > > Kindly let me know.. > > Regards, > > Akshay S. > > > >