Updated: 2017-02. Ubuntu 16.04 LTS. Apache 2.4.18 and PHP 7.0.13.


Summary: Let the hacker beware (Disclaimer)


Step 1: Installing Apache2 and php

In a terminal (Dashboard serach "Terminal"), type everything after "$"

me@myhost$ sudo apt-get install apache2 php

You will be told you're getting some extra software packages. The software php is not necessary, but at some point it will probably be useful to you if you are developing your own website. You can also use Synaptic Package Manager to install the software (from Ubuntu Software Center).


Possible Error / Gotcha if Any Reinstalls Done

Subtitled "Don't do what I have done". If you have a problem and decide to reinstall apache... just using "mark for reinstallation" in Synaptic or "reinstall" on the command line did NOT get me a fresh /etc/apache2 setup. Make sure you check the timestamp on the files in the /etc/apache2 directory to confirm you have a new installation. If not, delete the directory before reinstalling again.

Step 2: Activating the User's public_html Directory with userdir


me@myhost$ mkdir public_html


There are canned Debian script for Enabling modules. It creates shortcuts from the "mods-enabled" to the "mods-available" without having to worry about typos. The name stands for Apache2 Enable Module. To disable a module, use a2dismod.

me@myhost$ sudo a2enmod userdir
me@myhost$ sudo service apache2 restart


Step 3: Virtual Hosts + Domains for PRIVATE LAN DEVELOPMENT SERVER





[The rest of the IPv6 stuff is not shown]



# Localhost has fixed IP (, so the entry is not needed   localhost
# KB Section
# samsung chair lapcom lapfarmdens table tree com farmdens shrub

[The rest of the IPv6 stuff is not shown]

WARNING: Like I said at the top, these notes are for usage on a PRIVATE LAN, i.e., NOT the internet. If you try to use these notes on the internet, then you are an idiot and I cannot help you. The main thing to remember is that for your development machine and/or LAN, your /etc/hosts file is your DNS.

Part B - Create Apache Virtual Directory FILES: This will be a physical text file in the "sites-available" section. It has as its bare minimum requirements, the values of ServerName and DocumentRoot in it. Lots more can go in, but this is enough to get started.

# Contents of text file in /etc/apache2/sites-available
<VirtualHost *:80>
ServerName com
DocumentRoot /home/USER_NAME/public_html/com


<VirtualHost *:80>
ServerName farmdens
DocumentRoot /home/USER_NAME/public_html/com/farmdens

Follow this pattern for all of your virtual hosts (fake local domains). NOTE: NEW FOR Apache2 2.4.7 all of these text files MUST have the extension ".conf" or it will not work.

Part C - Make Apache Virtual Directories Available: The Debian-based recommended method for this is again an Apache script to enable virtual sites called "a2ensite". It works in the same was described above as a2endmod. Disable a virtual host with "a2dissite".

me@myhost$ sudo a2ensite com.conf
me@myhost$ sudo a2ensite farmdens.conf
me@myhost$ sudo service apache2 restart

REMINDER: The most common mistake I make is to create a text file in "sites-available" and execute the "a2ensite" command without editing the /etc/hosts file. Remember you need to add the ServerName for each new vitural host in the /etc/hosts file (see above).


I have gotten "stuck" on this step a number of times, thinking it had not worked when it really was done. If you don't get your local site, you need to clear the cache of your browser and maybe make it stop sending you to a search engine or domain containing your words. Here are two settings I need to change in Firefox in the about:config window:

  • browser.urlbar.autofill = OFF
  • keyword.fixup.alternate-enabled = OFF

NOTES: Apache official docs - Cryptic for beginner, as it's hard to tell where the text in all their boxes actually goes. They also will not be specifying Debian-specific scripts. Ubuntu Apache2 README File - Found in file:///usr/share/doc/apache2. Ubuntu's default Archive Manager for the compressed README.Debian.gz file WILL uncompress it, as long as you do it in a folder you own, not the existing one.

Step 4:  Configure Clients Computers If Needed