Thursday, July 6, 2006

Apache virtual server on SuSe 9.2

Hello there!. We meet again. :)

I am in the process of tranferring my old server files and data to our new server. It is an IBM e-series (2 Xeon CPUs, 1 GB RAM, 2 HDDs, Hardware RAID capable, 2 power supplies). I have setup SuSe Linux Professional 9.2 on it for testing. After 2 days testing it, I decided to use it as the distro of choice for our new server. SuSe is an excellent distribution for servers (so do other distributions aimed for servers). This is the article on how I setup name-based apache virtual server for the server.

Setting up apache virtual server
What is apache virtual server? It is a concept where a server can have multiple names and multiple IPs. Each server name can have different content depends on folder they are assigned (See below). The configuration on some distros is different depends on what directive have been put in httpd.conf and other files.

Copy file /etc/apache2/vhosts.d/vhost.template to vhost.conf in the same directory. Put this in /etc/apache2/vhosts.d/vhost.conf :

ServerName www.mydomain.tld
ServerPath /mydomain
DocumentRoot /srv/www/web/domain
< /virtualhost>

ServerName www.mydomain2.tld
ServerPath /mydomain2
DocumentRoot /srv/www/web/domain2
< /virtualhost>

(please remove the leading **)

This is one server serves multiple domains or subdomains. To configure name-based virtual hosts, uncomment this line in /etc/apache2/listen.conf:

NameVirtualHost *:80

If you are using UTF-8 in your web pages, you should replace this line in /etc/apache2/mod_mime-defaults.conf:

AddDefaultCharset ISO-8859-1

with this line:

AddDefaultCharset Off

How does apache knows to differentiate each domain/subdomain ?

It looks at the HTTP header of clients' packets. If you type http://www.mydomain.tld, it will serve for domain www.mydomain.tld and the same for the other domain. You can have as many domain as you like.

To see the status of your bonding interface, issue this command :

~#cat /proc/net/bonding/bond0

The output is as below :

Ethernet Channel Bonding Driver: v2.6.0 (January 14, 2004)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:14:5e:69:75:2a

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:14:5e:69:75:2b

Instead of 2 servers for two purposes, I create name-based apache virtual server to serve for my domains and subdomains. This eliminates the need for more hardwares and cost. Furthermore, the server is capable enough to handle more that 1 domain and I think this is one of many ways to use the hardware effectively.


No comments: