[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [users@httpd] Re: cgi-bin stopped working in apache ?! please help SOLVED



Zach Uram wrote:
On Tue, Sep 9, 2008 at 3:54 PM, André Warnier <aw@ice-sa.com> wrote:
Just a guess :

1) the new entry you have added to /etc/apache2/sites-available (and
sites-enabled) is called e.g. "darcs", which for some reason precedes
"default" in the directory.
2) in the apache.conf, there is something like
Include /etc/apache2/sites-enabled/*
3) so now, when Apache starts, it "includes" the configuration of your new
Virtual Host *before* it includes the "default" Virtual Host.
4) as a result, the default virtual host is no longer "default", but
"darcs", and nothing works anymore like before.
(It is the new default because it is now the first defined virtual host in
your setup)


Check :
rename /etc/apache2/sites-available/darcs to
/etc/apache2/sites-available/xxx (and the same for sites-enabled), and
restart Apache.  Does it work again ?

Am I close ?

André

Hi André,

I figured it out before I read your message but yes that seems to be
what happened. I have removed the other terms from
/etc/apache2/sites-available/darcs in ServerAlias so it now has:

<VirtualHost *:80>
       ServerName darcs.jesujuva.org
       ServerAlias darcs.jesujuva.org
       DocumentRoot /var/www/darcs
</VirtualHost>

I restarted apache and it works. Someone had recommended I add those
terms to ServerAlias and that is what screwed me up. This was the
first time I setup a virtual host so I must be careful what *advice* I
apply :-) BTW by ServerName it is the subdomain (ie.
http://darcs.jesujuva.org) and then what is the difference exactly
between that and ServerAlias?

In your above configuration, the ServerAlias is totally unnecessary, since it is the same as the ServerName. You would only need ServerAlias if that same virtual server could/should be accessed using different (valid DNS) hostnames, like
ServerName darcs.jesujuva.org
ServerAlias www.darcs-jesujuva.org
ServerAlias www1.jesujuva.org
etc..
(all of these names in DNS pointing to the same IP address of your server).

Apart from the related tip from Kris about the various virtual server config files in /etc/apache2/sites-available and /etc/apache2/sites-enabled, here is what I do to insure that virtual servers are "included" in the correct order :


# Include the "Generic" site definitions
Include /etc/apache2/sites-enabled/.Generic

NameVirtualHost *:80

# Include the "default server" site definitions
Include /etc/apache2/sites-enabled/.default

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/[^.#]*

The first 2 includes each include a specific file, which I name with a starting dot (.)
(To make sure of the order in which those files are included)

The final include then includes all the other files (through links in /etc/apache2/sites-enabled/), whose names do not start with a dot (because usually, apart from the default server, it does not matter in which order the virtual hosts are defined).


Since you are new to Virtual Hosts, let me give you some more information/tips :

1) Everything you put in the Apache configuration file prior to the "NameVirtualHost" line, are parameters that act as default values for *all* your Virtual Hosts (including the default Virtual Host). So whenever a Virtual Host "needs" a parameter value, and it is not explicitly defined in his own <VirtualHost> section, it will use the default parameter value as defined before the "NameVirtualHost" line.

After the "NameVirtualHost" line, what you define is individual "personalities" of your webserver, one personality per <VirtualHost> section. Any configuration parameter defined there, overrides the default specified in the main section above.

2) A VirtualHost is not a separate webserver. All Apache "children" are identical, and are able to "take the personality" of any of the Virtual Hosts, depending on the request that comes in. When a request comes in, it is always first given to the "main" Apache process. That one looks which "Apache child" is currently available, and passes the request to that one for processing. The "main" Apache process does not handle requests. It just gets all the requests, and passes them to children for processing. It also is the one who decides how many children run, when to start or kill one, etc..

The selected Apache child then looks at the "Host:" header line of the request to see to which VirtualHost the request "wants to talk", and it then "takes the personality" of that specific VirtualHost to process the request. If the child does not find a "Host:" line, or if the name given in the "Host:" line does not match any of the ServerName or ServerAlias directives in any of the <VirtualHost> sections, then the child takes the personality of the default VirtualHost to answer the request. The default VirtualHost has nothing special, it just happens to be the first <VirtualHost> section that Apache encounters when it loads its configuration file.

I just felt like telling you the above because I have the impression that a misunderstanding of the above is the source of 90% of the problems encountered by people unfamiliar with Virtual Hosting in general. I hope it helps you.


André


Reply to: