Setup apache for a multi user shared hosting environment

Basic setup of a multi user hosting environment on Ubuntu or Debian.
This is a very simple, minimal and safe setup which allows users to have their own web sites hosted in a central web server. The main advantage of this method is that it is very secure.

 

  • The main features of this setup are the following:
  • Each user has his own home directory
  • Each user can have one or more websites hosted
  • Web server does not need extra configuration regarding users, groups etc.
  • Users are owners of their website(s) and can connect and modify their sites at will.
  • Users can only view the web directories that they own.
  • Simple and fast setup

 

 

Steps

    1. Login as root
sudo su -
    1. Create user with his own home dir
useradd -s /bin/bash -m -d /home/<username> <username>
    1. Assign a password to the user
passwd <username>
    1. Create virtual host’s directory and set permission to user and group.
mkdir -m o-rwx /var/vhosts/<site>
    1. Change ownership of vhost directory
chown -R <username>:<username> /var/vhosts/<site>
    1. Add apache user www-data to user’s group
usermod -a -G <username> www-data
      The statement above gives apache web server the required permissions in order to run effectively all of the user’s websites.

    1. Check the groups that the user www-data belongs to:
root# groups www-data
www-data : www-data <username> ...
    1. Create virtual host or virtual directory apache configration
      • Virtual directory setup
        Alias /<subsite> /var/vhosts/<site>
        <Directory /var/vhosts/<site>
                Options None
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
      • Virtual host setup. Let’s assume <site> is example.com. A sample config virtual host config could be similar to the configuration below:
        <VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/vhosts/example.com
        ServerName www.example.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/vhosts/example.com>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
        ErrorLog ${APACHE_LOG_DIR}/example.com.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

</VirtualHost>
    1. Reload/Restart apache
service apache2 reload
      In case reload doesn’t work (although it should) try restart:
service apache2 restart
  1. Ready!
Password Reset
Please enter your e-mail address. You will receive a new password via e-mail.

Power by

Download Free AZ | Free Wordpress Themes