Friday, October 14, 2011

Hosting multiple websites with Apache2

There are many different ways you can configure Apache to host multiple sites, ranging from the simple to the complex. Here we're only going to cover the basics with the use of the NameVirtualHost directive. The advantage of this approach is that you don't need to hard-wire any IP addresses, and it will just worktm. The only thing you need is for your domain names to resolve to the IP address of your webserver.

For example if you have an Apache server running upon the IP address 192.168.1.1 and you wish to host the three sites example.com, example.net, and example.org you'll need to make sure that these names resolve to the IP address of your server.

(This might mean that you need example.com and www.example.com to resolve to the same address. However that is a choice you'll need to make for yourself).

Since we'll be hosting multiple websites on the same host it makes a lot of sense to be very clear on the location of each sites files upon the filesystem. The way I suggest you manage this is to create a completely seperate document root, cgi-bin directory, and logfile directory for each host. You can place these beneath the standard Debian prefix of /var/www or you may use a completely different root - I use /home/www.

If you've not already done create the directories to contain your content, etc, as follows:
root@sumant:~# mkdir /home/www

root@sumant:~# mkdir /home/www/www.example.com
root@sumant:~# mkdir /home/www/www.example.com/htdocs
root@sumant:~# mkdir /home/www/www.example.com/cgi-bin
root@sumant:~# mkdir /home/www/www.example.com/logs

root@sumant:~# mkdir /home/www/www.example.net
root@sumant:~# mkdir /home/www/www.example.net/htdocs
root@sumant:~# mkdir /home/www/www.example.net/logs
root@sumant:~# mkdir /home/www/www.example.net/cgi-bin

root@sumant:~# mkdir /home/www/www.example.org
root@sumant:~# mkdir /home/www/www.example.org/htdocs
root@sumant:~# mkdir /home/www/www.example.org/logs
root@sumant:~# mkdir /home/www/www.example.org/cgi-bin

Here we've setup three different directory trees, one for each site. If you wanted to have identical content it might make sense to only create one, and then use symbolic links instead.

The next thing to do is to enable virtual hosts in your Apache configuration. The simplest way to do this is to create a file called /etc/apache2/conf.d/virtual.conf and include the following content in it:
#
#  We're running multiple virtual hosts.
#
NameVirtualHost *

(When Apache starts up it reads the contents of all files included in /etc/apache2/conf.d, and files you create here won't get trashed on package upgrades.)

Once we've done this we can create the individual host configuration files. The Apache2 setup you'll find on Debian GNU/Linux includes two directories for locating your site configuration files:
/etc/apache2/sites-available

This contains configuration files for sites which are available but not necessarily enabled.
/etc/apache2/sites-enabled

This directory contains site files which are enabled.

As with the conf.d directory each configuration file in the sites-enabled directory is loaded when the server starts - whilst the files in sites-available are completely ignored.

You are expected to create your host configuration files in /etc/apache2/sites-available, then create a symbolic link to those files in the sites-enabled directory - this will cause them to be actually loaded/read.

Rather than actually messing around with symbolic links the Debian package includes two utility commands a2ensite and a2dissite which will do the necessary work for you as we will demonstrate shortly.

Lets start with a real example. Create /etc/apache2/sites-available/www.example.com with the following contents:
#
#  Example.com (/etc/apache2/sites-available/www.example.com)
#
<VirtualHost *>
ServerAdmin webmaster@example.com
ServerName  www.example.com
ServerAlias example.com

# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /home/www/www.example.com/htdocs/

# CGI Directory
ScriptAlias /cgi-bin/ /home/www/www.example.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>


# Logfiles
ErrorLog  /home/www/www.example.com/logs/error.log
CustomLog /home/www/www.example.com/logs/access.log combined
</VirtualHost>

Next create the file www.example.net:
#
#  Example.net (/etc/apache2/sites-available/www.example.net)
#
<VirtualHost *>
ServerAdmin webmaster@example.net
ServerName  www.example.net
ServerAlias example.net

# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /home/www/www.example.net/htdocs/

# CGI Directory
ScriptAlias /cgi-bin/ /home/www/www.example.net/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>


# Logfiles
ErrorLog  /home/www/www.example.net/logs/error.log
CustomLog /home/www/www.example.net/logs/access.log combined
</VirtualHost>

Finally create the file www.example.org:
#
#  Example.org (/etc/apache2/sites-available/www.example.org)
#
<VirtualHost *>
ServerAdmin webmaster@example.org
ServerName  www.example.org
ServerAlias example.org

# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /home/www/www.example.org/htdocs/

# CGI Directory
ScriptAlias /cgi-bin/ /home/www/www.example.org/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>


# Logfiles
ErrorLog  /home/www/www.example.org/logs/error.log
CustomLog /home/www/www.example.org/logs/access.log combined
</VirtualHost>

Now we've got:

Three directories which can be used to contain our content.
Three directories which can be used to contain our logfiles.
Three directories which can be used to contain our dynamic CGI scripts.
Three configuration files which are being ignored by Apache.

To enable the sites simply run:
root@sumant:~# a2ensite www.example.com
Site www.example.com installed; run /etc/init.d/apache2 reload to enable.

root@sumant:~# a2ensite www.example.net
Site www.example.net installed; run /etc/init.d/apache2 reload to enable.

root@sumant:~# a2ensite www.example.org
Site www.example.org installed; run /etc/init.d/apache2 reload to enable.

This will now create the symbolic links so that /etc/apache2/sites-enabled/www.example.org, etc, now exist and will be read.

Once we've finished our setup we can restart, or reload, the webserver as the output above instructed us to do with:
root@sumant:~# /etc/init.d/apache2 reload
Reloading web server config...done.
root@sumant:~#

Now Your server is ready Go & test it.

DNS Server setup using Bind DNS on Ubuntu Server

To Setup Bind server we need to install Bind Package using
sudo apt-get install bind9

Configure the main Bind files. Usually, if you install Bind from the source code, you will have to edit the file named.conf. However, Ubuntu provides you with a pre-configured Bind, so we will edit another file:
sudo vi /etc/bind/named.conf.local

Add  this code there
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};

Now, let's add the zone definition files (replace example.com with your domain name so create a zone definition file as
sudo vi /etc/bind/example.com.db

Add this code there
;
; BIND data file for local loopback interface
;
$TTL    3600
@    IN    SOA    example.com. admin.example.com. (
11
604800
86400
2419200
604800 )
;
@       IN      NS      ns1.example.com.
@       IN      A       192.168.0.1
ns1     IN      A       192.168.0.1
ns2     IN      A       192.168.0.1
www     IN      A       192.168.0.1

Save it and Restart bind Server :
sudo /etc/init.d/bind9 restart

Now Our name server is ready as
ns1.example.com
ns2.example.com

if it asks for IP address just provide the IP address of your server in oue case 192.168.0.1

Now its Done.

Wednesday, October 12, 2011

Disable and Remove Windows Genuine Advantage Notifications

When you log on to a non-genuine copy of Windows XP, the following notification error message“This copy of Windows is not genuine” will pop-up on the logon process:



And the nicely said “You may be a victim of software counterfeiting” message on the bottom right corner of log-in screen:



Microsoft allows Windows faithfuls to have 2 options: Get Genuine or Resolve Later. Click on Resolve Later will temporarily bypass the notification and let you login into and use Windows nagged with notification icon and messages, which will randomly appear as balloon notification message with an icon in the notification area (system tray).



Clicking on the balloon notification or the notification area icon will lead you to the Windows Genuine Advantage Validation Failure Web page that contains the specifics of the validation failure and the steps that you can take to make the operating system genuine.

To get rid of the WGA notifications that intends to remind you that your Windows is not validated, you can buy a validly licensed copy of genuine Microsoft Windows.

Here you can follows these steps to get rid of it.

  1. Lauch Windows Task Manager.

  2. End wgatray.exe process in Task Manager.

  3. Restart Windows XP in Safe Mode.

  4. Delete WgaTray.exe from c:\Windows\System32.

  5. Delete WgaTray.exe from c:\Windows\System32\dllcache.

  6. Lauch RegEdit.

  7. Browse to the following location:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

  8. Delete the folder ‘WgaLogon’ and all its contents

  9. Reboot Windows XP.

How to login to an expired Windows



Microsoft has a neat little way to prevent software piracy of their Windows operating system. "Windows Genuine Advantage"[edit: I stand corrected, it has nothing to do with WGA] with its "Product Activation" requirement. Essentially, even with a valid product key, you still need to activate your Windows to ensure that only one computer is using that specific product key. If you can't activate your Windows, there being many reasons for this, you are left with a 30 day grace period to change your product key to one that is fully valid or get in contact with Microsoft and plea your case.

Once your grace period is up, Windows refuses to let you login anymore. You cannot access your files. You cannot go on the Internet. You cannot do anything, except the thrill of trying to activate Windows.


Well, luckily for me I do not have to worry about this issues, as my Windows is valid and activated. However, for those who do not and have been so unfortunate enough to have their Windows expire on them, I present to you a bit of relief. How to gain access to your files on an expired Windows, with even enough functionality to surf the web, talk on MSN Messenger, and load up most of your applications. It doesn't give you full functionality of Windows, but it will be enough to get the job done until you can find the time to activate your Windows. Best of all though, it's all very simple and easy to do!!!

First, turn on your computer and wait until you get to the Windows login screen.



Next, click to login as usual. You should get an error from Windows telling you that your Windows has expired and is asking whether you would like to activate Windows now. Click Yes.



 

A "Let's activate Windows" window will appear. Let's minimize it. DO NOT close it.

Now, hold down the Windows Key on your keyboard while you also press the "U" key. This will open up the Narrator program to help assist those with poor vision. It is this program that will help us login to our Windows.

Click the little computer icon in the top left hand side of the Narrator window. A drop down menu should appear. The last option in this menu is named "About Narrator...". Click it. This should open up another window called "About Narrator".

In this window, there should be the text "Microsoft Web site". Click it, as it is a link and will open up your Internet Explorer, taking you to the Microsoft Accessibility website. Howrah! Internet access!

As if Internet was not enough, in the address bar of Internet Explorer, type "c:\". This should display all your hard drive contents on drive "C". From there you can load navigate your way around your computer, loading specific programs, and most whatever else.

On a side note, certain programs cannot be opened while Windows is still not activated. You will also not have a Task Bar at the bottom of your screen, as trying to open it will just result in it shutting itself down a few moments later. MSN Messenger works though, as well as most other non-Windows-based components.