Ron Savage wrote:
> Definitely use Apache::Reload. Here's a bit from my httpd.conf:
First, here is code that works, but requires me to restart/graceful Apache
whenever I make changes to my C::A derived module:
<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat conf/vhost.conf
# $Id: vhost.conf,v 1.1 2005/11/27 07:18:45 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
<VirtualHost 192.168.254.22>
ServerName hdwf.holgerdanske.com
ServerAdmin [EMAIL PROTECTED]
DocumentRoot /home/dpchrist/hdwf/htdocs
HostnameLookups off
UserDir disabled
Alias /images/ /home/dpchrist/hdwf/images/
</VirtualHost>
<Directory /home/dpchrist/hdwf>
AllowOverride All
</Directory>
<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat htdocs/.htaccess
# $Id: .htaccess,v 1.6 2005/11/28 03:15:06 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
DirectoryIndex index.pl
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
PerlSendHeader On
<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat htdocs/index.pl
#! /usr/bin/perl
#######################################################################
# $Id: index.pl,v 1.2 2005/11/28 00:05:17 dpchrist Exp $
#
# Perl instance script for hdwf.holgerdanske.com.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
#######################################################################
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use FindBin qw( $Bin );
use lib "$Bin/../modules";
use Hdwf;
my $app = Hdwf->new();
$app->run();
#######################################################################
<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat modules/Hdwf.pm
#######################################################################
# $Id: Hdwf.pm,v 1.8 2005/11/28 03:15:06 dpchrist Exp $
#
# hdwf.holgerdanske.com CGI::Application module.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
#######################################################################
# uses:
#----------------------------------------------------------------------
use warnings;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
package Hdwf;
use base 'CGI::Application';
#######################################################################
# overloaded CGI::Application methods:
#----------------------------------------------------------------------
sub setup {
my $self = shift;
$self->start_mode('home');
$self->mode_param('rm');
$self->run_modes(
'home' => 'home',
);
}
#######################################################################
# run modes:
#----------------------------------------------------------------------
sub home {
return
"hello, world!";
}
#######################################################################
# end of module:
#----------------------------------------------------------------------
1;
__END__
#######################################################################
Adding the Apache::Reload lines to vhosts.conf:
<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat conf/vhost.conf
# $Id: vhost.conf,v 1.1 2005/11/27 07:18:45 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
<VirtualHost 192.168.254.22>
ServerName hdwf.holgerdanske.com
ServerAdmin [EMAIL PROTECTED]
DocumentRoot /home/dpchrist/hdwf/htdocs
HostnameLookups off
UserDir disabled
Alias /images/ /home/dpchrist/hdwf/images/
</VirtualHost>
<Directory /home/dpchrist/hdwf>
AllowOverride All
PerlModule Apache::Reload
PerlInitHandler Apache::Reload
PerlSetVar ReloadAll Off
PerlSetVar ReloadModules "Hdwf Hdwf::*"
</Directory>
Doing a graceful restart of Apache and browsing to
http://hdwf.holgerdanske.com/, it works the first time, fails on refresh, works
on the second refresh, and then fails on all subsequent refreshes (tested
twenty). I have my server configured to start one thread, with a minimum and
maximum of one spare thread. Here's the error log:
[Sun Nov 27 19:40:12 2005] [notice] SIGUSR1 received. Doing graceful restart
[Sun Nov 27 19:40:13 2005] [notice] Apache/1.3.33 (Debian GNU/Linux) mod_perl/1.
29 configured -- resuming normal operations
[Sun Nov 27 19:40:13 2005] [notice] Accept mutex: sysvsem (Default: sysvsem)
[Sun Nov 27 19:40:41 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:04 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:14 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:28 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:29 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:30 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:31 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:32 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:33 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:34 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:34 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:35 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:39 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:43 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:44 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:45 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:46 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:47 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:48 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
/etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
It would appear that Apache::Reload is losing the Perl library path information
set by FindBin in the instance script.
Trying again, but this time putting the Apache::Reload stuff into .htaccess:
<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat htdocs/.htaccess
# $Id: .htaccess,v 1.6 2005/11/28 03:15:06 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
DirectoryIndex index.pl
SetHandler perl-script
PerlModule Apache::Reload
PerlInitHandler Apache::Reload
PerlSetVar ReloadAll Off
PerlSetVar ReloadModules "Hdwf Hdwf::*"
PerlHandler Apache::Registry
Options +ExecCGI
PerlSendHeader On
The results are identical to above.
Keeping Apache::Reload in .htaccess and adding "use Apache::Reload" to my C::A
derived module:
<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat modules/Hdwf.pm
#######################################################################
# $Id: Hdwf.pm,v 1.8 2005/11/28 03:15:06 dpchrist Exp $
#
# hdwf.holgerdanske.com CGI::Application module.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
#######################################################################
# uses:
#----------------------------------------------------------------------
use warnings;
use strict;
use Apache::Reload;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
package Hdwf;
use base 'CGI::Application';
#######################################################################
# overloaded CGI::Application methods:
#----------------------------------------------------------------------
sub setup {
my $self = shift;
$self->start_mode('home');
$self->mode_param('rm');
$self->run_modes(
'home' => 'home',
);
}
#######################################################################
# run modes:
#----------------------------------------------------------------------
sub home {
return
"hello, world!";
}
#######################################################################
# end of module:
#----------------------------------------------------------------------
1;
__END__
#######################################################################
The results are identical to above.
Any suggestions?
TIA,
David
---------------------------------------------------------------------
Web Archive: http://www.mail-archive.com/[email protected]/
http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]