28 September 2010

Manual Apache HTTPd 2.2 installation on Ubuntu Linux

1. get sources
wget http://mirror.ox.ac.uk/sites/rsync.apache.org//httpd/httpd-2.2.16.tar.gz

2. extract sources
tar xzfv httpd-2.2.16.tar.gz 

3. Configure various aspects of apache (you can choose where apache shall be installed and run from. These paths will be written and compiled into the binaries so this step is important).
more on this at: 

I don't want to change the default configurations so I just run:

4. To build apache:

5. To install(copy the files to the right places)
sudo make install

since I didn't configure the installation path, the default value (/usr/local/apache2) was used to install apache in.

6. Start the Apache server program

To test the server, first I go to the correct directory:
cd /usr/local/apache2/bin

then run the following command:
sudo ./apachectl -k start

7. Associate Apache webserver with a domain name
I get the following error:
httpd: Could not reliably determine the server's fully qualified domain name, using for ServerName

The reason for this error is that a domain name is not associated with this web server so to overcome this problem, I need to edit httpd.conf:
vi /user/local/apache2/conf/httpd.conf

change the line 
#ServerName www.example.com:80

To something like (assuming you own the domain radep.com and it points at this machine):
ServerName radep.com:80

8. Restart server
then restart the server(assuming you are in /user/local/apache2/bin):
sudo ./apachectl -k restart

9. Test it from your browser
Now you can use your browser to visit radep.com
lynx radep.com

you should see the text "It works!" which is the text that is contained in the file /usr/local/apache2/htdocs/index.html

If you need to go deeper into this process check out:

or just ask me.

22 September 2010

Manually Installing Tomcat 7 on Ubuntu

Installing Tomcat 7 on Ubuntu 9.10
I prefer the manual process of installing and upgrading software on a live server as it is less likely to break things and the reversal process is easier as well. So that's the way I choose to go;

To find out which version of Ubuntu you have run the following command:
more /etc/lsb-release

On my machine the output is:

If you want to find the kernel details run (uname -a).
To find the linux distro you can also run (cat /etc/issue).

Install Java
To check if Java is installed run:

dpkg --get-selections | grep sun-java

which should output:
sun-java6-bin                                   install
sun-java6-jdk                                   install
sun-java6-jre                                   install

running the command (java -version) should give you the following output assuming the "java" executable is on your $PATH variable.

java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)

If you don't have Java installed the easiest way is run this command (sudo apt-get install sun-java6-jdk)

Tomcat 7 Installation
Download Tomcat
It's recommended to use your web browser to download Tomcat but if you know exactly which version you want and you know the url then wget would suffice.

wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.2-beta/bin/apache-tomcat-7.0.2.tar.gz

Verify download
Calculate the md5 checksum using the command (md5sum apache-tomcat-7.0.2.tar.gz) it should output:

43b5ba6aec55dd9a30957e035d0aac5f apache-tomcat-7.0.2.tar.gz

The above is just to make sure your download wasn't corrupted.

Extract Tomcat 7.0.2 Beta
To extract the content of the archive run the following command (tar xvzf apache-tomcat-7.0.2.tar.gz)

Move the tomcat folder to a location which it will sit and serve webapps. I moved it to /usr/local/tomcat, but am not sure what the best place is, maybe someone could let me know?

sudo mv apache-tomcat-7.0.2 /usr/local/tomcat/

Set JAVA_HOME variable

To check if the $JAVA_HOME environment variable has been set or not run the following command (echo $JAVA_HOME) which should output:


Tomcat requires setting the JAVA_HOME variable. You can set it in .bashrc or startup.sh. Again not sure what the best place is.

To place it in your .bashrc file.

vi ~/.bashrc

Add the following line:

export JAVA_HOME=/usr/lib/jvm/java-6-sun

Logout of the shell for the change to take effect.

Startup Tomcat 7.0.2 Beta
Start tomcat by executing "startup.sh" script in the tomcat/bin folder.

Automatic Starting at boot
For a live server you need to make tomcat automatically start at boot up just in case you need to restart the server; Add a start/stop script to init.d script startup directory.

sudo vi /etc/init.d/tomcat

Paste in the following:

# Tomcat auto-start
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid

export JAVA_HOME=/usr/lib/jvm/java-6-sun

case $1 in
sh /usr/local/tomcat/bin/startup.sh
sh /usr/local/tomcat/bin/shutdown.sh
sh /usr/local/tomcat/bin/shutdown.sh
sh /usr/local/tomcat/bin/startup.sh
exit 0

Make the script executable:

sudo chmod 755 /etc/init.d/tomcat

Link the start/stop script to the startup folders with a symbolic link.

sudo ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat
sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat

You might also want to put some symbolic links in rc0 and rc6 directories.

Or alternatively let ubuntu create the symbolic links automatically by running this command:

sudo update-rc.d tomcat defaults

which outputs:
update-rc.d: warning: /etc/init.d/tomcat missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/tomcat ...
   /etc/rc0.d/K20tomcat -> ../init.d/tomcat
   /etc/rc1.d/K20tomcat -> ../init.d/tomcat
   /etc/rc6.d/K20tomcat -> ../init.d/tomcat
   /etc/rc2.d/S20tomcat -> ../init.d/tomcat
   /etc/rc3.d/S20tomcat -> ../init.d/tomcat
   /etc/rc4.d/S20tomcat -> ../init.d/tomcat
   /etc/rc5.d/S20tomcat -> ../init.d/tomcat

The difference is that it makes sure tomcat start at each run level however in practical terms if runlevel 2 is reached tomcat will start so run level 3,4 and 5 will be ignored as tomcat would already be running from when run level 2 was reached. The nice thing about this automatic install of symbolic links is that it is easy to add/remove them. Also they add the "stop" script at run level 0 and 6 which should be done!