The purpose of Virtual-hosts is to use different domains or multiple websites being served/hosted from one single web-server e.g. Apache2 and also organize them by directory, this can be done via name-based or IP-based virtual hosts.
In this case I use name-based website on a single ip address.
For example we need one directory on the document root for all files don't mix up in the same folder, so that each host has its own directory to avoid confusion.
Our goal is to make a new host called site1.com - we wish to put all files at /var/www/site1/ and access it via http://www.site1.com or http://site1.com
We know the Document Root is in /var/www/ that is explicit defined in /etc/apache2/sites-enabled/default
Here are the commands to make a virtual-host just repeat to create new ones.
Virtual-host set-up configuration
sudo mkdir -p /var/www/site1/public_html
sudo chown -R $USER:$USER /var/www/site1/public_html
sudo chmod -R 755 /var/www/
sudo nano /var/www/site1/public_html/index.html
1.Inside index.html put this small text, use echo or edit file with nano:sudo chown -R $USER:$USER /var/www/site1/public_html
sudo chmod -R 755 /var/www/
sudo nano /var/www/site1/public_html/index.html
<html>
<head>
<title>www.site1.com</title>
</head>
<body>
<h1>
Success: You Have Set Up a Virtual Host</h1>
</body>
</html>
2.Now we create and add the real virtual-host and directory information entry to Apache2 configuration:<head>
<title>www.site1.com</title>
</head>
<body>
<h1>
Success: You Have Set Up a Virtual Host</h1>
</body>
</html>
sudo nano /etc/apache2/sites-available/site1
3.inside the file write:<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1/public_html
<Directory /var/www/site1/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error_site1
LogLevel warn
CustomLog /var/log/apache2/access_site1 combined
ServerSignature Off
</VirtualHost>
4.now we enable this site using a2ensite utility and reload Apache configuration:ServerAdmin webmaster@example.com
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1/public_html
<Directory /var/www/site1/public_html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error_site1
LogLevel warn
CustomLog /var/log/apache2/access_site1 combined
ServerSignature Off
</VirtualHost>
sudo a2ensite site1
sudo service apache2 reload
5.To review we created the directory for the website, we gave permissions to the directory, we created a simple index.html, and created virtual-host configuration file and enabled it with a2ensite.sudo service apache2 reload
6.To finish we also need some ip-hostname entry to /etc/hosts to recognize this domain, I call it domain aliased to ip-address because we set *:80 in the config file.
On the sites-available/site1 file as you see are important directives like ServerName, ServerAlias and DocumentRoot which give unique identity to the virtual-host.
nano /etc/hosts
7.Edit the file and add an entry at the last line of the file:127.0.0.1 site1.com www.site1.com
Useful configuration files location:
/etc/hosts - hosts file to define hostname ips and aliases/etc/php5/ - php5 configuration file is php.ini
/etc/phpmyadmin/ - phpmyadmin directory
/etc/apache2/ - apache2.conf configuration file
/etc/mysql - my.cnf mysql configuration file
Helpers to enable or disable virtual-hosts, modules
#They are activated by symlinking available configuration files from their# respective *-available/ counterparts. These should be managed by using our
# helpers a2enmod/a2dismod, a2ensite/a2dissite. See
# their respective man pages for detailed information.
# enable site
sudo a2ensite
# disable sitesudo a2dissite
# enable an apache2 modulesudo a2enmod
# e.g. a2enmod php4 will create the correct symlinks in mods-enabled to allow the module to be used. In this example it will link both php4.conf and php4.load for the user# disable an apache2 module
sudo a2dismod
# force reload the server configurationsudo service apache2 reload
# useful links for virtual-host information
http://httpd.apache.org/docs/2.2/vhosts/
http://httpd.apache.org/docs/2.2/vhosts/name-based.html
http://httpd.apache.org/docs/2.2/vhosts/examples.html
http://www.centos.org/docs/2/rhl-rg-en-7.2/s1-apache-config.html
No comments:
Post a Comment