Good YouTube : http://www.youtube.com/watch?v=Njx1V4ZW_g0
Good YouTube w/LoadBalance : http://www.youtube.com/watch?v=yNuuoQLw0tA
This is a compact step-by-step guide for installing Tomcat with Apache and mod_jk on a Ubuntu 10.10 system considering following components
Apache 2, MySQL 5, PHP 5, PhpMyAdmin, Sun Java JDK 1.6, Tomcat 6.0, Tomcat-Admin, mod_jk
Important note: This is just the first version of this guide. It does not consider any previous configured or installed components
…Greyed out indicates should try, not tested…
http://java.qbytesworld.com/post/-Ubuntu-Server-Setup-.aspx
Server setup would allow for skipping steps:
-
1 as we do not want MySQL on the same server and Apache2 is in setup (needs cleaned up)
-
2 as we do not care about PHP (and already skipping)
-
4 as we have it in the Setup
1 LAMP – Apache, MySQL, PHP (Add Tomcat)
$ sudo tasksel
Remember your MySQL password.
Now create a test page
$ sudo nano /var/www/info.php
and insert following code
phpinfo();
?>
Restart Apache
and check if everything went fine
2 PHPMyAdmin
Install via apt-get
Choose Apache, and insert credentials
Now create a soft-link to make phpmyadmin-sources available in /var/www
Now open a browser and see if it’s working
http://[MY_IP]/phpmyadmin
(use the credentials you defined shortly before)
3 JAVA
Due Sun’s java is not provided by the repository anymore, we have to add it manually:
$ sudo add-apt-repository ppa:sun-java-community-team/sun-java6
$ sudo apt-get install sun-java6-jdk
Usually this should already be everything what we have to do. Try it by typing
4 TOMCAT – Commons and Admin/Manager
Install both tomcat-common and tomcat-admin via apt-get
$ sudo apt-get install tomcat6-admin
For accessing the Tomcat-admin we need to add our own manager-user
And add the new user
<user username="admin" password="my_secret" roles="admin,manager"/>
Finally restart Tomcat
$ sudo /etc/init.d/tomcat6 restart
Try if it works
http://[MY_IP]:8080/manager/html
5 Mod JK
Install via apt-get
Now create our own workers.properties file for Apache.
Open or create
and paste:
#workers.java_home=/usr/lib/jvm/java-6-sun
workers.java_home=/usr/lib/jvm/default-java
ps=/
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.default.lbfactor=1
and add following lines
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile /var/log/apache2/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
</IfModule>
Finally configure which URLs Apache should pass through the Tomcat
JkMount /examples* worker1
JkMount /manager* worker1
JkMount /sample* worker1
(If you want to pass all requests to the Apache (instead of individual ones), just remove the line
DocumentRoot /var/www
and add following JkMounts:
JkMount / worker1
JkMount /* worker1)
Serve some Java JSP Site called QBW-Web-Parent.com
$ sudo nano /etc/apache2/sites-available/QBW-Web-Parent.com
<VirtualHost *:80>
DocumentRoot /var/lib/tomcat6/webapps/QBW-Web-Parent
ServerName QBW-Web-Parent.com
JkMount /*.jsp worker1
JkMount /* worker1
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/lib/tomcat6/webapps/QBW-Web-Parent
ServerName QBW-Web-Parent.com
JkMount /*.jsp worker1
JkMount /* worker1
SSLEngine On
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
=====================================================
And last but not least, we have to enable the redirect port 8443 on Tomcat
And uncomment / insert / update that following line is present
Then scroll down and find:
</Host></Engine>
AFTER the ending </Host> tag, and BEFORE the ending </Engine> tag, insert the following:
<!– QBW-Web-Parent.com –><Host
name="QBW-Web-Parent.com"
appBase="webapps/QBW-Web-Parent"
unpackWARs="true"
autoDeploy="true">
path=""
docBase=""
debug="1"
reloadable="true"/>
className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="tomcat_access_"
suffix=".log"
pattern="common"
resolveHosts="false"/>
</Host>
Now we only have to restart first the Tomcat and then the Apache
$ sudo /etc/init.d/apache2 restart
Et voila, now it should work as expected.
http://www.javathinking.com/2007/10/tomcat-with-apache2-virtual-hosts/
http://www.debuntu.org/2006/02/22/7-virtual-hosting-using-apache-2
http://www.tequilafish.com/2007/08/02/apache-virtualhost-on-ubuntu/
6 Setup a new virtual host in Apache2
Create the folders for our new virtual host:
mkdir /var/www/server1.example.com
mkdir /var/www/server1.example.com/htdocs
mkdir /var/www/server1.example.com/logs
Then create a new site in Apache2:
vi /etc/apache2/sites-available/server1.example.com
Then add:
<VirtualHost *:80>JkMount /* defaultServerName server1.example.comServerAdmin webmaster@server1.example.comDocumentRoot /var/www/server1.example.com/htdocsErrorLog /var/www/server1.example.com/logs/error.logCustomLog /var/www/server1.example.com/logs/access.log combined<Directory /var/www/server1.example.com/htdocs>Options -Indexes</Directory></VirtualHost>
Note: JkMount can be setup in different ways.
JkMount /* will use tomcat for all files
JkMount /*.jsp only for .jsp files
JkMount /folder/* for tomcat files in a specific directory
Enable the new virtual host we created, by running:
a2ensite server1.example.com
6 Setup a new virtual host in Tomcat6
Open up the configuration file for Tomcat6:
vi /etc/tomcat6/server.xml
Find the following lines:
<!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />-->
And uncomment the connector port, like this:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Then scroll down and find:
</Host></Engine>
AFTER the ending </Host> tag, and BEFORE the ending </Engine> tag, insert the following:
<!-- server1.example.com -->
<Host
name="server1.example.com"
appBase="/var/www/server1.example.com"
unpackWARs="true"
autoDeploy="true">
<Context
path=""
docBase="htdocs"
debug="0"
reloadable="true"/>
<Valve
className="org.apache.catalina.valves.AccessLogValve"
directory="/var/www/server1.example.com/logs"
prefix="tomcat_access_"
suffix=".log"
pattern="common"
resolveHosts="false"/>
</Host>
Make sure you replace server1.example.com with your details in all the places.
Now lets create a Catalina folder for our new domain:
mkdir /etc/tomcat6/Catalina/server1.example.com
And copy the original context files to new domain:
cp /etc/tomcat6/Catalina/localhost/* /etc/tomcat6/Catalina/server1.example.com/
But remove the ROOT.xml file, because we don't need that one on our new domain:
rm -f /etc/tomcat6/Catalina/server1.example.com/ROOT.xml
4.5 Create a test file and test our new setup
Create a new test.jsp file for our new virtual host:
vi /var/www/server1.example.com/htdocs/test.jsp
and add:
<html><head><title>Hello World</title></head><body><h1>Hello World</h1>Today is: <%= new java.util.Date().toString() %></body></html>
Save and exit the file.
Finally restart the services, so that the new configuration will load:
/etc/init.d/apache2 stop
/etc/init.d/tomcat6 restart
/etc/init.d/apache2 start
Then use your browser to visit http://server1.example.com/test.jsp and verify that you get the test page we just created.
You should also be able to visit http://server1.example.com/examples which is now also available on our virtual host (/docs, /manager/html and /host-manager/html should also work):
SSL on Apache2
http://java.qbytesworld.com/post/apache-tomcat-ubuntu-1104.aspx
References:
- Apache Tomcat: Official Site; http://tomcat.apache.org/
- Apache Tomcat: Wiki; http://en.wikipedia.org/wiki/Apache_Tomcat
- Apache Tomcat Connector: mod-jk; http://tomcat.apache.org/connectors-doc/index.html
- Ubuntu: Adding Launchpad PPA Repositories; https://help.ubuntu.com/community/Repositories/CommandLine#Adding Launchpad PPA Repositories
- Ubuntu: Java; https://help.ubuntu.com/community/Java
- Ubuntu: Sun Java; https://wiki.ubuntu.com/LucidLynx/ReleaseNotes#Sun Java moved to the Partner repository
- Ubuntu: Apache Tomcat; https://help.ubuntu.com/10.04/serverguide/C/tomcat.html
Paths:
Apache2 configuration
/etc/apache2/workers.properties
/etc/apache2/conf.d/mod_jk.conf
/etc/apache2/sites-available/server1.example.com
/var/www/server1.example.com/htdocs/
Tomca6 configuration
/etc/tomcat6/tomcat-users.xml
/etc/tomcat6/server.xml
/etc/tomcat6/Catalina/server1.example.com/
Tomca6 webapp path
/var/lib/tomcat6/webapps/QBW-Web-Parent
Tomca6 Cache
/var/cache/tomcat6/Catalina/localhost
Restart Apache2 and Tomcat6
/etc/init.d/apache2 stop
/etc/init.d/tomcat6 restart
/etc/init.d/apache2 start
Information via: http://blog.cwill-dev.com/2011/04/07/installing-apache2-and-tomcat6-with-mod_jk-on-ubuntu-10-10/