Configuring an Ubuntu 10.x Based Web Server

From Techotopia
Jump to: navigation, search
PreviousTable of ContentsNext
Displaying Ubuntu 10.x Applications Remotely (X11 Forwarding)Sharing Ubuntu 10.x Folders with Remote Linux and UNIX Systems


Purchase and download the fully updated Ubuntu 11.04 version of this eBook in PDF & ePub formats for only $12.99
PDF/ePub version contains 39 chapters and over 250 pages.

Buy eBook

It is surprising the number of people who now host their own web sites. Some reasons for this are that doing so is now relatively easy and many people now have high speed internet connections. In addition, Linux provides a free, enterprise level operating system with everything needed to host a web server for free (with the exception of the hardware of course).

In this chapter we will explain how to configure an Ubuntu system to act as a web server.




Requirements for Configuring a Web Server

To set up your own web site you need a computer, an operating system, a web server, a domain name, a name server and an IP address.

The computer can be any system capable of running Linux. In terms of an operating system, we will assume you are using Ubuntu. Ubuntu supports the Apache web server which can easily be installed once Ubuntu is up and running. A domain name can be registered with any domain name registration service.

If your ISP provides static IP addresses then you will need to associate your domain with your static IP address. This is achieved using a name server. Some domain registration services will provide this service for you. If yours does not, you can create an account at http://www.zoneedit.com and use their name servers to point your domain name at your static IP address.

If you do not have a static IP address (i.e. your ISP provides you with a dynamic address which changes frequently) then you can use one of a number of free services that map your dynamic IP address to your domain name. One such service is provided by http://www.dnsExit.com.

Once you have your domain name and your name server configured the next step is to install and configure your web server.

Installing the Apache Web Server on Ubuntu

The standard web server on Linux is Apache. The web server is the technology that receives requests from web browsers and serves up the requested web pages to those browsers.

The desktop version of Ubuntu does not install the Apache web server by default. The first step in setting up a web server, therefore, is to install Apache. This can be performed either from the command-line or using the Ubuntu Software Center. To use the software center, click on the Applications menu and select Ubuntu Software Center. Use the Search box to search for apache2. After the search completes, the Apache HTTP Server metapackage should be listed in the results panel. Select the item and click on the corresponding Install button to begin the installation.

To install Apache from the command-line start a terminal window (Applications -> Accessories -> Terminal) and run the following command at the command prompt:

sudo apt-get install apache2

The installation process will not only install, but also start up the web server.


Testing the Web Server

Once the installation is complete the next step is to verify the web server is up and running. To do this fire up the web browser by clicking on the Firefox logo in the top desktop panel and enter 127.0.0.1 in the address bar (127.0.0.1 is the loop-back network address which tells the system to connect to the local machine). The browser should load a page that reads It works!.

Congratulations, you have now installed the web server and served up what will hopefully be the first of many web pages.

Configuring the Apache Web Server for Your Domain

The next step in setting up your web server is to configure it for your domain name. This is performed in the /etc/apache2 directory. To configure the web server open a terminal window and change directory to /etc/apache2. In this directory you will find two sub-directories, sites-available and sites-enabled. Change directory into sites-available. In this directory you will find a default file which may be used as a template for your own site.

Copy the default file to a new file with a name which matches your domain name. For example:

sudo cp default myexample.com

Edit your myexample.com file using your favorite editor using the sudo command to ensure you have write permission to the file. The top of the file will appear as follows:

<VirtualHost *>
        ServerAdmin [email protected]

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
        </Directory>

If you are using an older version of Ubuntu, the file on your system may have a NameVirtualHost line at the top of the file. If so, comment it out by prefixing it with a '#' character:

#NameVirtualHost *

The reason for this is that this directive is already specified in the sites-enabled/000-default file.

NameVirtualHost 68.206.209.234

If the above line is not commented out the following warning will appear when the Apache server is restarted:

[warn] NameVirtualHost *:0 has no VirtualHosts

The ServerAdmin directive defines an administrative email address for people wishing to contact the web master for your site. Change this to an appropriate email address where you can be contacted:

ServerAdmin [email protected]

Next the ServerName and ServerAlias directives need to be defined so that the web server knows which virtual host this configuration file refers to:

ServerName myexample.com
ServerAlias www.myexample.com

In the next stage we need to define where the web site files are going to be located using the DocumentRoot directive. The tradition is to use /var/www/domain-name:

DocumentRoot /var/www/myexample.com

Having completed the changes we now need a copy of the /etc/apache2/sites-available/myexample.com configuration file in /etc/apache2/sites-enabled. We do this by creating a symbolic link from the file in sites-available:

cd /etc/apache2/sites-enabled
ln -s /etc/apache2/sites-available/myexample.com .

Next, create the /var/www/myexample.com directory and place an index.html file in it. For example:

<html>
<title>Sample Web Page</title>
<body>
Welcome to MyExample.com
</body>
</html>

The last step is to restart the Apache web server to make sure it picks up our new settings:

sudo /etc/init.d/apache2 restart

Web Server and Firewall Issues

If your Ubuntu system is configured to use a firewall, you will need to ensure that HTTP traffic on port 80 is permitted in order for external system to be able to access your web server. Refer to the Ubuntu 10.x Firewall Basics and Using Firestarter to Configure an Ubuntu 10.x Firewall chapters of this book for details on configuring Ubuntu Firewalls.

If the Ubuntu system running your web server sits on a network protected by a firewall (either another computer running a firewall, or a router or wireless base station containing built in firewall protection) you will need to configure the firewall to forward port 80 to your web server system. The mechanism for performing this differs between firewalls and devices so check your documentation to find out how to configure port forwarding.

Once everything is configured it should be possible to enter the domain name of your web site into a browser anywhere in the world and access your web server.

Purchase and download the fully updated Ubuntu 11.04 version of this eBook in PDF & ePub formats for only $12.99
PDF/ePub version contains 39 chapters and over 250 pages.

Buy eBook



PreviousTable of ContentsNext
Displaying Ubuntu 10.x Applications Remotely (X11 Forwarding)Sharing Ubuntu 10.x Folders with Remote Linux and UNIX Systems