Solved

Question about Apache and virtual hosts on a local development server...???

Posted on 2009-05-15
3
316 Views
Last Modified: 2013-12-16
I´ve got Ubuntu 9 installed in a VM with lamp + phpmyadmin installed and working great.  I´d like to figure out how to configure virtual hosts now so I can setup my clients with their own testing servers from this.

What I´m reading seems pretty straight forward except I´m confused about how to browse different sites locally.  For example, I´ve included my /etc/apache2/available-sites/default file as it is now.  I left the default settings and then just added a new virtual host for a new web site.

So the way I understand it now is that I´d update DNS for beta-sandbox.angelleye.com to point to this server now and because of the virtual host config it would correctly point it to /home/angelleye/www.  

What about local browsing, though?  I´m hitting my server using 192.168.1.136.  beta-sandbox.angelleye.com will mean nothing to the other computers on my network.  Is there some way I add that to my local machines DNS only??

I´ve got Windows and Mac machines on this network that will need to reach this test server and call up each site accordingly.  Any information on how I can do this would be greatly appreciated.  Thanks!


<VirtualHost *:80>
	ServerAdmin webmaster@localhost
 
	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
 
	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>
 
	ErrorLog /var/log/apache2/error.log
 
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
 
	CustomLog /var/log/apache2/access.log combined
 
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
 
</VirtualHost>
 
<VirtualHost *:80>
	ServerAdmin webmaster@localhost
 
	DocumentRoot	/home/angelley/www
	ServerName	beta-sandbox.angelleye.com
 
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /home/angelley/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
 
	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>
 
	ErrorLog /var/log/apache2/error.log
 
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
 
	CustomLog /var/log/apache2/access.log combined
 
</VirtualHost>

Open in new window

0
Comment
Question by:Andrew Angell
  • 3
3 Comments
 
LVL 30

Expert Comment

by:Kerem ERSOY
ID: 24393289
Hi,

Apache works this way:

As an example say you have 2 domains that you want to have websites such as:
 
www.domain.com
w3.anotherdomain.com

- You just edit your DNS sones and add records like this:

domain.com DNS zone file:

www     IN    A    x.x.x.x

danotherdomain.com DNS zone file:

w3         IN     A  x.x.x.x

So that bothe www.domain.com and w3.domain.com will point to your Apache server's IP address.

Then you'll have your Apache configuration and you'll tell your apache that
- You'll have 2 virtual servers called:

www.doamian.com and w3.danotherdomain.com.
- You'll tell apache wihc folder contains website files for each of them

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot    /home/angelley/www
        ServerName      www.domain.com
 
        <Directory /home/angelley/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog /var/log/apache2/www-domain-com-error.log
 
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
 
        CustomLog /var/log/apache2/www-domain-com-access.log combined
 
</VirtualHost>
 
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot    /home/angelley/w3
        ServerName      w3.anotherdomain.com
 
        <Directory /home/angelley/w3/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/w3/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog /var/log/apache2/w3-anotherdomain-com-error.log
 
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
 
        CustomLog /var/log/apache2/w3-antoherdomain-com-access.log combined
 
</VirtualHost>

Open in new window

0
 
LVL 30

Expert Comment

by:Kerem ERSOY
ID: 24393306
You can omit /cgi-bin alias. If you do cgi-bin will point  to a subfolder called cgi-bin under the home directory.

You can omit <Directory ... Directives. then System defaults wiill kick in.

You'd like to give a special name denoting your site to the logfiles so that you can follow each viertualhost from their unique filenames.

There was a mistake in my example above  the directory optin was /usr/lib/cgi-bin instead of /usr/lib/w3/cgi-bin


The corrected snippet as follows:

        ScriptAlias /cgi-bin/ /usr/lib/w3/cgi-bin/
        <Directory "/usr/lib/w3/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

Open in new window

0
 
LVL 30

Accepted Solution

by:
Kerem ERSOY earned 500 total points
ID: 24393353
> What about local browsing, though?  I´m hitting my server using 192.168.1.136.  
> beta-sandbox.angelleye.com will mean nothing to the other computers on my network.  Is there some
> way I add that to my local machines DNS only??

You can do 2 things:
- Either you can edit your /etc/hosts in linux or C:\WINDOWS\system32\drivers\etc
add your sites called:

191.168.1.136             beta-sandbox.angelleye.com

So that when you type http://beta-sandbox.angelleye.com you'll get your page.

Don't forget that Apache does virtualhosting  matching the original request hostpart with virtualserver names it is configured for not IP address basis. So if it can match the hostname part of the incoming request then it serves is from the configured directory.

Another option ais t1 setup an internal DNS so that you'll serve your pages from there.  
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Domino Website - Redirection 12 76
setup wamp server for first time 2 70
cannot rename datastore 3 45
Cpanel file manager 8 23
Setting up Secure Ubuntu server on VMware 1.      Insert the Ubuntu Server distribution CD or attach the ISO of the CD which is in the “Datastore”. Note that it is important to install the x64 edition on servers, not the X86 editions. 2.      Power on th…
If you've heard about htaccess and it sounds like it does what you want, but you're not sure how it works... well, you're in the right place. Read on. Some Basics #1. It's a file and its filename is .htaccess (yes, with a dot in the front). #…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question