How to Configure Apache Web Server on Linux
I’ve shown previously how to install a LAMP server in Ubuntu. If the purpose of your LAMP installation was to set up your own web development environment, then you may want to do some further configuration to your system. ThisApache howto is not intended to cover Apache configuration in depth. This is just some basic configuration to help you set up a web development environment in Linux. For more information, see theofficial Apache documentation.
Why Change the Apache Configuration?
By default, Apache is set up for your web site’s files to be in the /var/www directory. This is fine if you only want to work on one website and access it through http://localhost/. But what if you want to work on several websites at the same time? Well, one solution is to create different directories under/var/www like /var/www/site1 and then access it through http://localhost/site1/. I prefer a more elegant solution.
I prefer to build websites in a directory under my own ID. I can then configure the Apache http server to point to the site directories with URLs like http://site1/, http://site2/, etc.
Creating a Web Development Directory
Lets start off by creating a folder structure for the development environment. You can do this from your file manager. I prefer the terminal.
mkdir site1 site2[/code]
We now have a directory called webdev under our home directory. Within the webdev directory are two directories called site1 and site2.
Create Some Test Files
Now we're going to create some basic test files so that we know our Apache configuration worked. Again, I'm going to use the terminal to create these files, but feel free to use your favorite text editor.cd ~/webdev/site1
echo 'Site1 works!' > index.html
echo 'Site2 works!' > index.html
Enable the Sites in Apache
OK, we're now ready to do the actual Apache configuration. Go to /etc/apache2/sites-available.cd /etc/apache2/sites-available
As root, copy the default file as site1.sudo cp default site1
Repeat the process to create a site2 file.
As root, edit the site1 configuration file.sudo nano site1[/code]
Edit the file to look like this (the changes are in bold).ServerAdmin [email protected]
Options Indexes FollowSymLinks MultiViews
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Allow from all
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
Options Indexes MultiViews FollowSymLinks
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
Note: The line that changes AllowOverride None to AllowOverride All is required if you want to enable URL re-writes through a .htaccess file. You need this if you want to utilize pretty permalinks in WordPress.
You now need to enable your new site.sudo a2ensite site1
You should get a message telling you that you need to reload Apache to activate the new configuration. But first you need to edit your /etc/hosts file.sudo nano /etc/hosts
Edit the first line adding site1 to the end of the line so it looks something like this and save the file.127.0.0.1 localhost site1[/code]
You can now reload Apache.sudo /etc/init.d/apache2 reload
Site1 is now enabled. Check it by browsing to http://site1/. If everything worked right, you should see a web page that says "Site1 works!"
Repeat the procedure to enable site2, etc.
If you get an error like “apache2: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for localhost,” you can fix it with this command.echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn[/code]
Then, reload Apache to eliminate the error.sudo /etc/init.d/apache2 reload[/code][/code]
Joel G Mathew, known in tech circles by the pseudonym Droidzone, is an opensource and programming enthusiast.
His favorite pastime is grappling with GNU compilers, discovering newer Linux secrets, writing scripts, hacking roms, and programs (nothing illegal), reading, blogging. and testing out the latest gadgets.
When away from the tech world, Dr Joel G. Mathew is a practising ENT Surgeon, busy with surgeries and clinical practise.