Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make a public HTML folder in Ubuntu?

Simple question, but for some reason I couldn't find the exact answer on Google:

I have a fresh Ubuntu install on Slicehost, and would like to make a public directory in my home dir for a simple website containing a bunch of static HTML files. How do I do this? Is it just a matter of typing mkdir public_html and setting the permissions, or is there a cleaner way? (I remember in the past I've had issues where every time I copied a file into my public_html directory, I would have to manually set its permissions, which was quite frustrating.)

like image 626
RexE Avatar asked Feb 09 '09 00:02

RexE


People also ask

How do I make a public folder in HTML?

In FileZilla, right-click in the remote pane and select Create Directory. Name it 'public_html'. Secondly, drag your files from the local panel on the local pane to the remote pane to upload files to your public_html folder.

Where is HTML folder in Ubuntu?

On Ubuntu, the Apache web server stores its documents in /var/www/html , which is typically located on the root filesystem with rest of the operating system.

Where is public html folder?

public_html folder is located inside your File Manager in your cPanel.


3 Answers

Assuming you've already installed apache, do the following:

sudo a2enmod userdir sudo service apache2 reload 

The first command enables the userdir apache mod, which does exactly what you want. The second reloads apache configurations so that it starts using the new configuration.

To install apache2:

sudo apt-get install apache2 

Of course, you'll also need to make sure that the permissions on your public_html folder allow the www-data user to see the files in there -- 755 usually works well. To do this:

mkdir ~/public_html chmod -R 755 ~/public_html 

This will recursively (-R) go through your public_html and set the permissions to 755 (owner rwx, and both group and other r-x, r-x).

like image 152
rz. Avatar answered Oct 02 '22 20:10

rz.


The other answers are on the right track with mod_userdir, but using that will give your website the base URL http://www.yourdomain.com/~username/ - for instance, a file /home/username/public_html/index.html would be accessible as http://www.yourdomain.com/~username/index.html. If you want your files to be accessible under the domain root, as http://www.yourdomain.com/index.html for example, then you'll need to put the directive

DocumentRoot /home/username/public_html 

in the Apache configuration file.

like image 36
David Z Avatar answered Oct 02 '22 20:10

David Z


You need to use mod_userdir for Apache, otherwise you need to set up symlinks from /var/www/ or wherever.

Your permissions issue is because Apache does not have read access to your files. You need to allow read access to www-data (or whatever the user is; distro-specific).

like image 36
strager Avatar answered Oct 02 '22 20:10

strager