Solved

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

Posted on 2009-05-15
3
312 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

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Over the last ten+ years I have seen Linux configuration tools come and go. In the early days there was the tried-and-true, all-powerful linuxconf that many thought would remain the one and only Linux configuration tool until the end of times. Well,…
The purpose of this article is to demonstrate how we can use conditional statements using Python.
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Connecting to an Amazon Linux EC2 Instance from Windows Using PuTTY.

707 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now