Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 324
  • Last Modified:

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

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
Andrew Angell
Asked:
Andrew Angell
  • 3
1 Solution
 
Kerem ERSOYPresidentCommented:
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
 
Kerem ERSOYPresidentCommented:
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
 
Kerem ERSOYPresidentCommented:
> 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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

A proven path to a career in data science

At Springboard, we know how to get you a job in data science. With Springboard’s Data Science Career Track, you’ll master data science  with a curriculum built by industry experts. You’ll work on real projects, and get 1-on-1 mentorship from a data scientist.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now