Sometimes, it is useful to replicate the online site in a local machine for development purposes. In this article we will see, how to configure Apache to serve the clones of the online sites.
Creating sites.conf
In this step, we will create sites.conf. The sites.conf contains the config options for all the sites you want to develop in your local machine.
First , we should find <apache> location and decide what will be the <sites> location:
- <apache> is the, location, where Apache Server is installed.
Example : C:/Program Files/apache
- <sites> is the location, where sites.conf, the content and the logs of your sites are located.
Example : C:/sites
Now, follow these steps:
- Open <apache>/conf/httpd.conf config file and add the following line in its end.
Include "<sites>/sites.conf"
- Create the newly included file <sites>/sites.conf
Adding a site
In this step, we will add the new site.
First, you should know <site-domain> and generate a unique <site-name>:
- <site-domain> - The domain, where the site is located.
Example : www.demo.com , s1.demo.com
- <site-name> - A unique name, which identifies the site. A simple strategy to generate this name:
www.name.extension use name.
Example for www.demo.com, use of the demo.
subdomain.name.extension uses the name_subdomain.
Example for s1.demo.com use demo_s1.
Now, follow these steps:
- create a new <sites>/<site-name> directory, create the following sub directories inside:
- www - This directory will contain the actual content of the site that should be served by apache.
- log - This directory will contain the logs related to the site.
- Add the config snippet, given below, to the <sites>/sites.conf,
- <VirtualHost 127.0.0.1:80> ServerName
- <site-domain> ErrorLog "
- <sites>/
- <site-name>/log/error.log" TransferLog "
- <sites>/
- <site-name>/log/transfer.log" DocumentRoot "
- <sites>/
- <site-name>/www"
- <Directory "<sites>/<site-name>/www"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory>
- </VirtualHost>
- Add a new mappings of IP addresses to the <site-domain> in the hosts file. This file is usually located in C:\Windows\System32\drivers\etc,
127.0.0.1 <site-domain>
- Start/Restart apache
Example: Suppose we want to develop www.demo.com , s1.demo.com , s2.demo.com on our local machine.
- We decide that our sites directory will be C:/sites.
- We create the following directory structure:
- We edit sites.conf, as shown below:
- <VirtualHost 127.0.0.1:80>
- ServerName www.demo.com
- DocumentRoot "C:/sites/demo/www"
- ErrorLog "C:/sites/demo/log/error.log"
- TransferLog "C:/sites/demo/log/transfer.log"
- <Directory "C:/sites/demo/www">
- Options Indexes FollowSymLinks Includes ExecCGI
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
-
- <VirtualHost 127.0.0.1:80>
- ServerName s1.demo.com
- DocumentRoot "C:/sites/demo_s1/www"
- ErrorLog "C:/sites/demo_s1/log/error.log"
- TransferLog "C:/sites/demo_s1/log/transfer.log"
- <Directory "C:/sites/demo_s1/www">
- Options Indexes FollowSymLinks Includes ExecCGI
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
-
- <VirtualHost 127.0.0.1:80>
- ServerName s2.demo.com
- DocumentRoot "C:/sites/demo_s2/www"
- ErrorLog "C:/sites/demo_s2/log/error.log"
- TransferLog "C:/sites/demo_s2/log/transfer.log"
- <Directory "C:/sites/demo_s2/www">
- Options Indexes FollowSymLinks Includes ExecCGI
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
- We include it in <apache>/conf/httpd.conf.
Include "C:/sites/sites.conf"
- We edit the hosts file.
127.0.0.1 www.demo.com
127.0.0.1 s1.demo.com
127.0.0.1 s2.demo.com
- We start/restart apache.
Now, when we access :
- http://www.demo.com , index.html under C:/sites/demo/www will be served
- http://s1.demo.com , index.html under C:/sites/demo_s1/www will be served
- http://s2.demo.com , index.html under C:/sites/demo_s2/www will be served
Read the article in my blog here, Clone online site in Apache.