modperl_vhost_mystery_problems

This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.



Subject: Trouble setting up mod_perl and name-based virtual hosts
From: Joe Brenner <doom@kzsu.stanford.edu>
Date: Mon, 02 Oct 2000 16:43:30 -0700

I've run into problems adding virtual hosts to a machine 
where I've already got mod_perl working, but I'm having 
some trouble pinning it down, because apache just seems to
die silently without giving me any hints in the error_log.  

It definitely does have something to do with an interaction
with mod_perl though, because if I comment out "AddModule
mod_perl.c" I can at least get apache to restart (though I
guess whether the vhosts are working is another question).

Does anyone out there have some sucessful examples of
httpd.conf files for mod_perl+vhost sites that they can
point me at?  (Sorry if the answer to this one is out there
somewhere, but I've been looking and having found it.)

Here's my entire httpd.conf file, if anyone wants see it 
(I'm running a RedHat 6.1 linux system, using perl 5.05, 
mod_perl 1.21, and apache 1.3.9):


ServerType standalone

ServerRoot "/etc/httpd"

LockFile /var/lock/httpd.lock

PidFile /var/run/httpd.pid

ScoreBoardFile /var/run/httpd.scoreboard


Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

MinSpareServers 5
MaxSpareServers 20

StartServers 8

MaxClients 150

MaxRequestsPerChild 100

LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule env_module         modules/mod_env.so
LoadModule config_log_module  modules/mod_log_config.so
LoadModule agent_log_module   modules/mod_log_agent.so
LoadModule referer_log_module modules/mod_log_referer.so
LoadModule mime_module        modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule status_module      modules/mod_status.so
LoadModule info_module        modules/mod_info.so
LoadModule includes_module    modules/mod_include.so
LoadModule autoindex_module   modules/mod_autoindex.so
LoadModule dir_module         modules/mod_dir.so
LoadModule cgi_module         modules/mod_cgi.so
LoadModule asis_module        modules/mod_asis.so
LoadModule imap_module        modules/mod_imap.so
LoadModule action_module      modules/mod_actions.so
LoadModule userdir_module     modules/mod_userdir.so
LoadModule alias_module       modules/mod_alias.so
LoadModule rewrite_module     modules/mod_rewrite.so
LoadModule access_module      modules/mod_access.so
LoadModule auth_module        modules/mod_auth.so
LoadModule anon_auth_module   modules/mod_auth_anon.so
LoadModule db_auth_module     modules/mod_auth_db.so
LoadModule digest_module      modules/mod_digest.so
LoadModule proxy_module       modules/libproxy.so
LoadModule expires_module     modules/mod_expires.so
LoadModule headers_module     modules/mod_headers.so
LoadModule usertrack_module   modules/mod_usertrack.so
LoadModule setenvif_module    modules/mod_setenvif.so

LoadModule perl_module        modules/libperl.so

ClearModuleList
AddModule mod_vhost_alias.c
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_log_agent.c
AddModule mod_log_referer.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_userdir.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_proxy.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_so.c
AddModule mod_setenvif.c

AddModule mod_perl.c

Port 80

User nobody
Group nobody

# ServerAdmin webmaster@polymuse.com
ServerAdmin doom@kzsu.stanford.edu

ServerName www.polymuse.com

DocumentRoot "/home/httpd/html"

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>


<Directory "/home/httpd/html">

    Options Indexes Includes FollowSymLinks

    AllowOverride None

    Order allow,deny
    Allow from all
</Directory>

UserDir public_html


DirectoryIndex index.html index.htm index.shtml index.cgi

AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>


UseCanonicalName On

TypesConfig /etc/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>
    MIMEMagicFile share/magic
</IfModule>

HostnameLookups Off


### Now also below inside the polymuse vhost... not good?
### Doesn't matter? 
ErrorLog /var/log/httpd/error_log

LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# CustomLog /var/log/httpd/access_log common



ServerSignature On

Alias /icons/ "/home/httpd/icons/"

<Directory "/home/httpd/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"

<Directory "/home/httpd/cgi-bin">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>



IndexOptions FancyIndexing

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress
x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon /icons/unknown.gif


ReadmeName README
HeaderName HEADER

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it

LanguagePriority en fr de

AddType application/x-tar .tgz

AddType text/html .shtml
AddHandler server-parsed .shtml

AddHandler imap-file map


BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0
force-response-1.0

BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0


Alias /doc/ /usr/doc/
<Location /doc>
   order deny,allow
   deny from all
   allow from localhost
   Options Indexes FollowSymLinks
</Location>

NameVirtualHost 216.59.5.124

<VirtualHost www.polymuse.com>

   ServerAdmin webmaster@polymuse.com
   DocumentRoot "/home/httpd/html"
   ServerName www.polymuse.com
   ErrorLog /var/log/httpd/error_log
   CustomLog /var/log/httpd/access_log common

   <IfModule mod_perl.c>
      Alias /modperl/ /etc/httpd/lib/modperl/
      <Location /modperl>
          SetHandler perl-script
          PerlHandler Apache::Registry
          Options ExecCGI
      </Location>
   
      Alias /common /home/httpd/common/
      <Location /common>
          SetHandler perl-script
          PerlHandler Apache::Registry
          Options ExecCGI
          DirectoryIndex common.pl
      </Location>
   
      Alias /color/ /home/httpd/color/
      <Location /color>
          SetHandler perl-script
          PerlHandler Apache::Registry
          Options ExecCGI
          DirectoryIndex color.pl
      </Location>
   
   
      PerlRequire         conf/startup.pl
      PerlFreshRestart    On
      PerlTaintCheck      On
   
      <Location /hello/world>
         SetHandler   perl-script
         PerlHandler  Apache::Hello
     </Location>
   
     <Location /perl-status>
        SetHandler perl-script
        PerlHandler Apache::Status
        order deny,allow
        #deny from all
        #allow from
     </Location>
   
   </IfModule>

</VirtualHost>

<VirtualHost www.thejademonkey.com>
   ServerAdmin doom@kzsu.stanford.edu
   DocumentRoot "/home/html/jade"
   ServerName www.thejademonkey.com
   ErrorLog /var/log/httpd/jade/error_log

   CustomLog /var/log/httpd/jade/access_log common

</VirtualHost>

===

Subject: Re: Trouble setting up mod_perl and name-based virtual hosts
From: "Kyle Dawkins" <kyle@centralparksoftware.com>
Date: Mon, 2 Oct 2000 23:36:55 -0400

Joe

Your problem is with the RPMs that you're using (I bet). I am guessing
you're using the pre-built ones that come with RH6.1, right?  Don't be
fooled... these are buggy.  You solution is extremely simple and will only
take a short time if you follow the instructions:

1. Use "rpm -e" to remove mod_perl and mod_php, then remove apache.
2. DOWNLOAD THE SOURCES for Apache 1.3.12 and mod_perl 1.24
3. Build them from the source tarballs.  You probably want to enable
   "EVERYTHING" when you build mod_perl.  Make sure you build a new apache
   executable with mod_perl statically linked in.  This
   apache executable takes a bit more RAM but it's faster and way
   more stable.
4. To make sure that your new httpd has mod_perl built in, execute
   httpd -l
   and it should list its modules.  If mod_perl appears, you're golden.
5. Remove all the LoadModule and AddModule stuff from your httpd.conf,
   restart apache, and if it doesn't work, I'd be very surprised...

I had the same problem as you (although it was LinuxPPC2000). As did many
others in the past (do a search for "SIGSEGV" or "core dump" or
"segmentation fault" in the mailing list archives...), and it's a bummer of
a bug because it doesn't bite you until you try something slightly difficult
(uhhhhh, like "PerlModule Apache::DBI") and it explodes.

===

Subject: Re: Trouble setting up mod_perl and name-based virtual hosts 
From: Joe Brenner <doom@kzsu.stanford.edu>
Date: Mon, 02 Oct 2000 21:42:56 -0700

Kyle Dawkins" <kyle@centralparksoftware.com> wrote:

> "Joe Brenner" <doom@kzsu.stanford.edu> wrote:
> 
> > I've run into problems adding virtual hosts to a machine
> > where I've already got mod_perl working, but I'm having
> > some trouble pinning it down, because apache just seems to
> > die silently without giving me any hints in the error_log.
> >
> > It definitely does have something to do with an interaction
> > with mod_perl though, because if I comment out "AddModule
> > mod_perl.c" I can at least get apache to restart (though I
> > guess whether the vhosts are working is another question).
> >
> > Does anyone out there have some sucessful examples of
> > httpd.conf files for mod_perl+vhost sites that they can
> > point me at?  (Sorry if the answer to this one is out there
> > somewhere, but I've been looking and having found it.)

> > (I'm running a RedHat 6.1 linux system, using perl 5.05,
> > mod_perl 1.21, and apache 1.3.9):

> Your problem is with the RPMs that you're using (I bet). I am guessing
> you're using the pre-built ones that come with RH6.1, right?  Don't be
> fooled... these are buggy.  

Well, you're quite right that I've been trying to stick to
the rpms.  In many cases they're the ones that came with RH
6.1, in other cases I downloaded newer ones...  I guess I'll
have to think about just building from source.  Doesn't seem
like it can hurt.

(It occurs to me that I'm also using mod_perl as a DSO... 
it seemed to me like that was working fine, I wondered 
a bit why some people thought it was a bad idea.  Maybe 
I've found out why...?)

> You solution is extremely simple and will only
> take a short time if you follow the instructions:
> 
> 1. Use "rpm -e" to remove mod_perl and mod_php, then remove apache.
> 2. DOWNLOAD THE SOURCES for Apache 1.3.12 and mod_perl 1.24
> 3. Build them from the source tarballs.  You probably want to enable
>    "EVERYTHING" when you build mod_perl.  Make sure you build a new apache
>    executable with mod_perl statically linked in.  This
>    apache executable takes a bit more RAM but it's faster and way
>    more stable.
> 4. To make sure that your new httpd has mod_perl built in, execute
>    httpd -l
>    and it should list its modules.  If mod_perl appears, you're golden.
> 5. Remove all the LoadModule and AddModule stuff from your httpd.conf,
>    restart apache, and if it doesn't work, I'd be very surprised...
> 
> I had the same problem as you (although it was
> LinuxPPC2000). 

Oh yeah, I'm just running i386 stuff on a oldish Pentium.  
It's a bad habit to fall into, not to mention that...

> As did many others in the past (do a search for "SIGSEGV"
> or "core dump" or "segmentation fault" in the mailing list
> archives...), and it's a bummer of a bug because it
> doesn't bite you until you try something slightly
> difficult (uhhhhh, like "PerlModule Apache::DBI") and it
> explodes.

===


the rest of The Pile (a partial mailing list archive)

doom@kzsu.stanford.edu