Adventures in Linux Documentation

In the Linux world, there are multiple paths toward providing a solution. There are various “brands” of Linux distributions (“distros”) that seem to have a little different way of doing things. Likewise, when you download programs written for Linux there are often multiple programs providing similar capabilities (some better than others). Documentation with configuration details can lead in different directions based on who wrote them. Sometimes the Linux world gives you enough rope to hang yourself.

I’ve been setting up a test environment to get web server functionality that I’ll use to create web sites offline as I described in X-AMPP Based Web Sites. Since then I’ve downloaded Drupal 6 from the Drupal download site and prepared to install in my test server environment.

A couple of weeks earlier I set up my first Drupal environment with the online Internet service provider that will be hosting my live web sites. This ISP provides a button to launch the Drupal setup process and everything went smoothly.

The X-AMP configuration created a web hosting area under /opt/lampp/htdocs directory. Since I’m wanting to set up multiple virtual domains I added a “www” folder named htdocs/www under that directory as a placeholder for each virtual domain. For example I have set up htdocs/www/mystudysource.dom for that particular web site. My first instinct was to download and extract Dripal into this domain’s directory. I realized this was wrong and placed the extracted files onto my desktop area instead. Then I created a “drupal6” folder and proceeded to copy the extracted contents into my mystudysource.dom/drupal6 directory using an ftp program.

XAMPP Control Panel

XAMPP Control Panel

I started the XAMPP control panel, pushing the Start XAMPP button and was up and running as far as having a web server but I still needed to copy the files into my domain’s area. Since one of the components started is ProFTPD (an ftp server program) I’m able to use a program like Mozilla’s FileZilla to transfer these files. With the drupal files in the mystudygroup.dom/drupal6 directory I’m ready to start configuration.

Setting up Drupal on my development environment didn’t go as smoothly. I got a list of warnings and errors but not the configuration screen I expected. Doing the same thing over and over produced similar results with some slight variations. I suspect I have some kind of mis-configuration causing access errors so, its back to reading the documentation to see what I missed.

Over the last few days I’ve been reading a lot more documentation, both online and from books I already have. It’s interesting how a variety of sources can take you off in different directions. Reading the documentation is similar to looking at an old weathered stone that has many cracks running in different directions. I’ve seen a wide range of documentation from topics that are well formated and easy to follow to the extreme opposite with a pathetic mashup of email comments appearing as a solid block of text characters with no formatting at all. I’m sure one of these documentation fissures will lead me in the right direction.

About SomeoneKnows
(c) 2010 Vince Thompson

X-AMP Based Web Sites

I’ve been developing web sites since 1996 and was the architect of Paul Mueller’s plate heat exchanger design program brought online in 2000. So far the web sites I’ve built have used Microsoft’s Internet Information Server (IIS).

I’m working on some new web sites running on Linux and using the Apache web server. In particular they are using Apache, MySql database and PHP which refer to using the “AMP” designation. There’s WAMP for a Windows version, LAMP versions for Linux applications, and XAMPP. I ended up using the XAMPP project from ApacheFriends as described in this Ubuntu Forums thread. I went to the XAMPP area on SourceForge to download the latest version. This placed the LAMP applications in my /opt/lampp directory.

Virtual Domains

I am creating multiple web sites and want a separate development environment on my laptop for each web domain. Next I edit the /etc/hosts file to define local ip addresses for each of my web sites. Localhost is already defined at 127.0.0.1, then I’m adding the name of my computer, gtdev1, so it points to 127.0.0.1 also. I will be working on the following web sites: GeometricTechnology.com, MyStudySource.com, DIYRoboticsLab.com, UnBiasedSewing.com, LabyWiinth.com, and MakeKC.com.

I’m hard coding IP locations mapped to my computer. If I were to use the “.com” designation it would hijack any attempts to go to the live Internet web sites from my computer. To prevent confusion I’m changing the names slightly using a “.dom” designation instead. I use .dom to represent domain. I edit the /etc/hosts file adding the lines mapped to IP addresses 127.0.0.1.

127.0.0.1    localhost
127.0.1.1    gtdev1
127.0.1.1    GeometricTechnology.dom
127.0.1.1    MyStudySource.dom
127.0.1.1    DIYRoboticsLab.dom
127.0.1.1    UnBiasedSewing.dom
127.0.1.1    labywiinth.dom
127.0.1.1    MakeKC.dom

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Now, for instance, when I type http://MyStudySource.dom into the web browser it serves up the default page from my laptop. This lets me work with each unique local web domain. The next thing I need to do is provide a separate folder for each domain instead of the default localhost location.

I created a folder called under /opt/lampp/htdocs/ called www with folders inside for each of the domains, for instance /opt/lampp/htdocs/www/geometrictechnology.dom.

Next I edit the /opt/lampp/etc/extra/httpd-vhosts.conf file to identify folders for each of the local domains.

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn’t need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/&gt;
# for further details before you try to setup virtual hosts.
#
# You may use the command line option ‘-S’ to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

<VirtualHost *:80>
DocumentRoot htdocs/xampp
ServerName localhost
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@geometrictechnology.dom
DocumentRoot htdocs/www/geometrictechnology.dom
ServerName geometrictechnology.dom
ErrorLog logs/geometrictechnology.dom-error_log
CustomLog logs/geometrictechnology.dom-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@mystudysource.dom
DocumentRoot htdocs/www/mystudysource.dom
ServerName mystudysource.dom
ErrorLog logs/mystudysource.dom-error_log
CustomLog logs/mystudysource.dom-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@diyroboticslab.dom
DocumentRoot htdocs/www/diyroboticslab.dom
ServerName diyroboticslab.dom
ErrorLog logs/diyroboticslab.dom-error_log
CustomLog logs/diyroboticslab.dom-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@labywiinth.dom
DocumentRoot htdocs/www/labywiinth.dom
ServerName labywiinth.dom
ErrorLog logs/labywiinth.dom-error_log
CustomLog logs/labywiinth.dom-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@unbiasedsewing.dom
DocumentRoot htdocs/www/unbiasedsewing.dom
ServerName unbiasedsewing.dom
ErrorLog logs/unbiasedsewing.dom-error_log
CustomLog logs/unbiasedsewing.dom-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@makekc.dom
DocumentRoot htdocs/www/makekc.dom
ServerName makekc.dom
ErrorLog logs/makekc.dom-error_log
CustomLog logs/makekc.dom-access_log common
</VirtualHost>

To enable the http-vhosts.config settings check the httpd.config again to verify the following Include statements are un commented.

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

# XAMPP
Include etc/extra/httpd-xampp.conf

# Various default settings
Include etc/extra/httpd-default.conf

After making these changes stop and restart Apache so it will find the changes.

Under the /opt/lampp/htdocs/www/ folder I have a folder for each of the domains I want to use. Inside each of the domain folders I have a file named index.html. This file simply has the paragraph tag

<p> Hello World </p>

Actually, I customized the message in each to know which folder the web page was served from. Now when I type my local domain name into a browser is serves up my Hello World or equivalent example from each domain’s directory.

About SomeoneKnows

(c) 2010 Vince Thompson

Laptop Rebuild

I got a new 500 GB hard drive over the Christmas season and have installed it in my laptop computer. I considered going with Linux only but finally gave in and set aside a portion for Windows. I’m hoping some of the mythical stimulus money finally lands on a project I’m in line to work on that requires using a Windows only program.

Before installing the new drive I spent a few days archiving files to DVD. I’m getting ready to rebuild a server too so getting files from both computers took extra time.

Hard Drive Partitions

Hard Drive Partitions

This is how I partitioned my disk drive:

When I installed Windows Vista from the restore CD, this put two partitions on the disk.

  • /dev/sda1 – Toshiba System Volume with 1.6 GB NTFS
  • /dev/sda2 – SQ0046… Reduced to 60 GB NTFS Area for Windows OS and other programs

After getting Window installed I placed the Ubuntu 9.10 in the CD drive and rebooted. The installation procedure needs to know about how the disk drive will be used. I added the following partitions:

/dev/sda3 Remaining 439 GB partitioned as follows

  • /dev/sda5 – 32 GB Filesystem formatted as FAT32 mounted as /shared (I’m using this when my project files are supported by both Win and Linux OS)
  • /dev/sda6 – 4GB set up as Linux swap space
  • /dev/sda7 – Remaining 403 GB as Linux Ext4 file system mounted as /

About SomeoneKnows

(c) 2010 Vince Thompson