Configure Apache and public_html on Ubuntu

I was trying to do this Today at work for my local webserver. but i couldnt find a definite guide on how this could be achieved on Ubuntu. After some trial and errors i was able to figure it out, and thought to share in case anybody out there is trying to implement this

First we installed apache with LAMP ( The linux webserver stack stands for Linux Apache MySQL PHP)

sudo tasksel

choose LAMP and press enter (remember to use the spacebar to select)

during the installation you would be asked for password for mysql root user

once installed

you then need to enable the mod_userdir, so your server’s Apache httpd server will respond to requests like

hence Apache will handle the contents of /home/[User Name]/public_html/

to enable the mod_userdir we run this command

sudo a2enmod userdir

next we run this

/etc/init.d/apache2 force-reload

once this is done we now edit apache.conf pointing to your public_html

gksudo gedit /etc/apache2/apache2.conf

and we add this at the end of the file

UserDir /home/*/public_html

save and close

don’t forget to create a public_html directory in your home directory

mkdir $HOME/public_html

now we restart Apache

sudo /etc/init.d/apache restart

Now any content you place inside the public_html directory can be view from a browser

Browse to http://localhost/~yourname/ and you will see your stuff.

hope this helps someone.

18 comments on “Configure Apache and public_html on Ubuntu

  1. I have a question:

    “…and we add this at the end of the file

    UserDir /home/*/public_html”

    Do I copy the exact same line? what I mean is if I have to insert the STAR between home/ and /PUblic html. Or do I have to replace it with something?


  2. I couldn’t figure out why this wasn’t working for me until I realized that I was using a windows machine logged into an ubuntu box elsewhere… duh, obviously http://localhost on this machine is not going to find anything.

    When I went to http://x.x.x.x/~user it was all working like a champ.


  3. one issue I ran into was that HTML files worked but PHP files did not.
    I Solved the issue by following the instructions in /etc/apache2/mods-enabled/php5.conf
    Basically you have to comment out some lines.

  4. Very nice, just went through your steps with Ubuntu 11.04 server, have a few notes/updates:

    a) need to run this command (“/etc/init.d/apache2 force-reload”) with a ‘sudo’:

    sudo /etc/init.d/apache2 force-reload

    b) this line won’t work on default install of Ubuntu 11.04, ‘gksudo’ and ‘gedit’ are not included by default, instead use:

    sudo vi /etc/apache2/apache2.conf

    (or other editor, if you don’t like ‘vi’ ;^)

    c) your final step ( ‘sudo /etc/init.d/apache restart’ ) refers to a directory that doesn’t exist:

    sudo /etc/init.d/apache2 restart

    d) I followed Alex’s suggestion about php5.conf to enable PHP processing of files from my new ‘public_html’ directory – they worked great.

    Thanks a ton, hope the above notes help you improve this great resource for others.


    1. I can not thank you enough for your feedback. I will definitely update my post with your observation and credit you. Kindly note that since last year I have migrated this blog to a self host blog at, all the previous post here has also been migrated. I noted that you subscribed to this blog. I would recommend that you subscribe to the new blog since this one has not and will no longer be updated. Thanks again for the feedback

Leave a Reply

Your email address will not be published. Required fields are marked *