mod_perl interactive debugging

mod_perl interactive debugging

am 27.05.2008 19:38:50 von Keenlearner

Hello, I am trying to debug my perl code under mod_perl and I had
followed all the instruction at this section
http://perl.apache.org/docs/1.0/guide/debug.html#Interactive _mod_perl_Debugging

I managed to see my perl debugging console prompted , but this prompt
is shown by the
tail -f /var/log/apache2.log

DB<1> ModPerl::RegistryCooker::default_handler(/usr/local/lib/perl /5.8.8/ModPerl/RegistryCooker.pm:172):
172: return ($rc == Apache2::Const::OK && $old_status != $new_status)
173: ? $new_status
174: : $rc;
DB<1>

I was thrilled for a while that it did appear, but then it's just an
output but not input. Where am I suppose to see and use the debugger ?
Thanks.

Re: mod_perl interactive debugging

am 27.05.2008 23:50:50 von Perrin Harkins

On Tue, May 27, 2008 at 1:38 PM, william wrote:
> Hello, I am trying to debug my perl code under mod_perl and I had
> followed all the instruction at this section
> http://perl.apache.org/docs/1.0/guide/debug.html#Interactive _mod_perl_Debugging
>
> I managed to see my perl debugging console prompted , but this prompt
> is shown by the
> tail -f /var/log/apache2.log

Did you actually start your server with httpd -X as shown in that documentation?

- Perrin

Re: mod_perl interactive debugging

am 28.05.2008 09:33:28 von Keenlearner

On Wed, May 28, 2008 at 5:50 AM, Perrin Harkins wrote:
> On Tue, May 27, 2008 at 1:38 PM, william wrote:
>> Hello, I am trying to debug my perl code under mod_perl and I had
>> followed all the instruction at this section
>> http://perl.apache.org/docs/1.0/guide/debug.html#Interactive _mod_perl_Debugging
>>
>> I managed to see my perl debugging console prompted , but this prompt
>> is shown by the
>> tail -f /var/log/apache2.log
>
> Did you actually start your server with httpd -X as shown in that documentation?
>
> - Perrin
>

Thanks for the reply, yes I did,
william@william-pc:~$ sudo apache2 -X -DPERLDB -k restart
[notice] Apache::DB initialized in child 10312

Do I have to use DDD to see the prompt ? Where would the debugger
prompt appear when I use the browser to request the file ? Thanks

Re: mod_perl interactive debugging

am 28.05.2008 19:30:44 von Perrin Harkins

On Wed, May 28, 2008 at 3:33 AM, william wrote:
> william@william-pc:~$ sudo apache2 -X -DPERLDB -k restart
> [notice] Apache::DB initialized in child 10312
>
> Do I have to use DDD to see the prompt ?

No, it should just be right there in your terminal. It seems to be
forking. Are you sure apache2 is the httpd executable and not some
script? By the way, if you want a reference that's written for using
the debugger with mod_perl 2, try this one:
http://www.perl.com/pub/a/2006/02/09/debug_mod_perl.html

- Perrin

Re: mod_perl interactive debugging

am 29.05.2008 07:22:23 von Keenlearner

On 5/29/08, Perrin Harkins wrote:
> On Wed, May 28, 2008 at 3:33 AM, william wrote:
> > william@william-pc:~$ sudo apache2 -X -DPERLDB -k restart
> > [notice] Apache::DB initialized in child 10312
> >
> > Do I have to use DDD to see the prompt ?
>
>
> No, it should just be right there in your terminal. It seems to be
> forking. Are you sure apache2 is the httpd executable and not some
> script? By the way, if you want a reference that's written for using
> the debugger with mod_perl 2, try this one:
> http://www.perl.com/pub/a/2006/02/09/debug_mod_perl.html
>
>
> - Perrin
>


Thanks for the link, I have just read that. It's still almost the same.

PerlModule ModPerl::RegistryPrefork

PerlFixupHandler Apache::DB

SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all


If I am using ModPerl::RegistryPrefork instead of ModPerl::Registry
would it matter ?


I put the following lines at the top of my startup.pl script
use APR::Pool (); #specific for mod_perl 2
use Apache::DB ();
Apache::DB->init();

When I put the immediate-above code in it's does
executed but my /var/log/apach2/errror.log does not show the debugging
process, so when I put in startup.pl script then only I will see the
debugging process

DB<1> ModPerl::RegistryCooker::error_check(/usr/local/lib/perl/5.8 .8/ModPerl/RegistryCooker.pm:698):
698: return Apache2::Const::SERVER_ERROR;
DB<1> ModPerl::RegistryCooker::convert_script_to_compiled_handler( /usr/local/lib/perl/5.8.8/ModPerl/RegistryCooker.pm:407):
407: return $rc unless $rc == Apache2::Const::OK;
DB<1> ModPerl::RegistryCooker::default_handler(/usr/local/lib/perl /5.8.8/ModPerl/RegistryCooker.pm:164):
164: return $rc unless $rc == Apache2::Const::OK;
DB<1> [Thu May 29 13:09:08 2008] [error] [client 127.0.0.1] File
does not exist: /var/www/favicon.ico, referer:
http://localhost/modperl/main.pl


> Are you sure apache2 is the httpd executable and not some
script?

How do I check that ?


Now it's weird, when I check the error.log , many lines of code are
executed repeatedly, does that shows that I am not really using single
process ? Here are a few of it. Thanks.

82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);



DB<1> File::Temp::CODE(0xabf9548)(/usr/share/perl/5.8/File/Temp.pm :132):
132: use 5.005;
DB<1> File::Temp::CODE(0xabf9548)(/usr/share/perl/5.8/File/Temp.pm :132):
132: use 5.005;
DB<1> File::Temp::CODE(0xabf9548)(/usr/share/perl/5.8/File/Temp.pm :132):
132: use 5.005;
DB<1> File::Temp::CODE(0xabf9554)(/usr/share/perl/5.8/File/Temp.pm :133):
133: use strict;
DB<1> File::Temp::CODE(0xabf9554)(/usr/share/perl/5.8/File/Temp.pm :133):
133: use strict;
DB<1> File::Temp::CODE(0xabf9554)(/usr/share/perl/5.8/File/Temp.pm :133):
133: use strict;
DB<1> File::Temp::CODE(0xabf9560)(/usr/share/perl/5.8/File/Temp.pm :134):
134: use Carp;
DB<1> File::Temp::CODE(0xabf9560)(/usr/share/perl/5.8/File/Temp.pm :134):
134: use Carp;
DB<1> File::Temp::CODE(0xabf9560)(/usr/share/perl/5.8/File/Temp.pm :134):
134: use Carp;

Re: mod_perl interactive debugging

am 29.05.2008 07:29:12 von Fred Moyer

william wrote:
> On 5/29/08, Perrin Harkins wrote:
>> On Wed, May 28, 2008 at 3:33 AM, william wrote:
> I put the following lines at the top of my startup.pl script
> use APR::Pool (); #specific for mod_perl 2
> use Apache::DB ();
> Apache::DB->init();

Can you show us the part of httpd.conf where you call startup.pl?

I always place my debugger calls before any other modules load, usually
right after mod_perl.so is loaded.

>
> When I put the immediate-above code in it's does
> executed but my /var/log/apach2/errror.log does not show the debugging
> process, so when I put in startup.pl script then only I will see the
> debugging process
>
> DB<1> ModPerl::RegistryCooker::error_check(/usr/local/lib/perl/5.8 .8/ModPerl/RegistryCooker.pm:698):
> 698: return Apache2::Const::SERVER_ERROR;
> DB<1> ModPerl::RegistryCooker::convert_script_to_compiled_handler( /usr/local/lib/perl/5.8.8/ModPerl/RegistryCooker.pm:407):
> 407: return $rc unless $rc == Apache2::Const::OK;
> DB<1> ModPerl::RegistryCooker::default_handler(/usr/local/lib/perl /5.8.8/ModPerl/RegistryCooker.pm:164):
> 164: return $rc unless $rc == Apache2::Const::OK;
> DB<1> [Thu May 29 13:09:08 2008] [error] [client 127.0.0.1] File
> does not exist: /var/www/favicon.ico, referer:
> http://localhost/modperl/main.pl
>
>
>> Are you sure apache2 is the httpd executable and not some
> script?
>
> How do I check that ?
>
>
> Now it's weird, when I check the error.log , many lines of code are
> executed repeatedly, does that shows that I am not really using single
> process ? Here are a few of it. Thanks.
>
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
> DB<1> WordNet::Tools::new(/usr/local/share/perl/5.8.8/WordNet/Tool s.pm:82):
> 82: $self->{compounds}->{$word} = 1 if ($word =~ /_/);
>
>
>
> DB<1> File::Temp::CODE(0xabf9548)(/usr/share/perl/5.8/File/Temp.pm :132):
> 132: use 5.005;
> DB<1> File::Temp::CODE(0xabf9548)(/usr/share/perl/5.8/File/Temp.pm :132):
> 132: use 5.005;
> DB<1> File::Temp::CODE(0xabf9548)(/usr/share/perl/5.8/File/Temp.pm :132):
> 132: use 5.005;
> DB<1> File::Temp::CODE(0xabf9554)(/usr/share/perl/5.8/File/Temp.pm :133):
> 133: use strict;
> DB<1> File::Temp::CODE(0xabf9554)(/usr/share/perl/5.8/File/Temp.pm :133):
> 133: use strict;
> DB<1> File::Temp::CODE(0xabf9554)(/usr/share/perl/5.8/File/Temp.pm :133):
> 133: use strict;
> DB<1> File::Temp::CODE(0xabf9560)(/usr/share/perl/5.8/File/Temp.pm :134):
> 134: use Carp;
> DB<1> File::Temp::CODE(0xabf9560)(/usr/share/perl/5.8/File/Temp.pm :134):
> 134: use Carp;
> DB<1> File::Temp::CODE(0xabf9560)(/usr/share/perl/5.8/File/Temp.pm :134):
> 134: use Carp;


--
Red Hot Penguin Consulting LLC
mod_perl/PostgreSQL consulting and implementation
http://www.redhotpenguin.com/

Re: mod_perl interactive debugging

am 29.05.2008 07:41:56 von Keenlearner

On 5/29/08, Fred Moyer wrote:
> william wrote:
>
> > On 5/29/08, Perrin Harkins wrote:
> >
> > > On Wed, May 28, 2008 at 3:33 AM, william wrote:
> > >
> > I put the following lines at the top of my startup.pl script
> > use APR::Pool (); #specific for mod_perl 2
> > use Apache::DB ();
> > Apache::DB->init();
> >
>
> Can you show us the part of httpd.conf where you call startup.pl?
>
> I always place my debugger calls before any other modules load, usually
> right after mod_perl.so is loaded.

Thanks for the prompt reply, here it is.

/etc/apache2/httpd.conf


Options +ExecCGI
AddHandler cgi-script cgi pl


ServerName localhost


# Alias /modperl/ /var/www/modperl/

#
#
# use APR::Pool ();
# use Apache::DB ();
# Apache::DB->init;

# warn "PERLDB executed";
#

#
# PerlFixupHandler Apache::DB
#

#



#The startup script
PerlRequire '/var/www/modperl/Apache2/startup.pl'


------------------------------------------------------------ ----------------------



/etc/apache2/sites-enabled/000-default

NameVirtualHost *

ServerAdmin webmaster@localhost
ServerName localhost
DocumentRoot /var/www/



Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all


Alias /modperl/ /var/www/modperl/

PerlModule ModPerl::RegistryPrefork

PerlFixupHandler Apache::DB
SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all


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
ServerSignature On

Alias /doc/ "/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




Re: mod_perl interactive debugging

am 31.05.2008 19:03:34 von Keenlearner

On 5/29/08, william wrote:
> On 5/29/08, Fred Moyer wrote:
> > william wrote:
> >
> > > On 5/29/08, Perrin Harkins wrote:
> > >
> > > > On Wed, May 28, 2008 at 3:33 AM, william wrote:
> > > >
> > > I put the following lines at the top of my startup.pl script
> > > use APR::Pool (); #specific for mod_perl 2
> > > use Apache::DB ();
> > > Apache::DB->init();
> > >
> >
> > Can you show us the part of httpd.conf where you call startup.pl?
> >
> > I always place my debugger calls before any other modules load, usually
> > right after mod_perl.so is loaded.
>
>
> Thanks for the prompt reply, here it is.
>
> /etc/apache2/httpd.conf
>
>
> Options +ExecCGI
> AddHandler cgi-script cgi pl
>

>
> ServerName localhost
>
>
> # Alias /modperl/ /var/www/modperl/
>
> #
> #
> # use APR::Pool ();
> # use Apache::DB ();
> # Apache::DB->init;
>
> # warn "PERLDB executed";
> #

> #
> # PerlFixupHandler Apache::DB
> #

> #

>
>
> #The startup script
> PerlRequire '/var/www/modperl/Apache2/startup.pl'
>
>
> ------------------------------------------------------------ ----------------------
>
>
>
> /etc/apache2/sites-enabled/000-default
>
> NameVirtualHost *
>
> ServerAdmin webmaster@localhost
> ServerName localhost
> DocumentRoot /var/www/
>
>
>
> Options Indexes FollowSymLinks MultiViews
> AllowOverride None
> Order allow,deny
> allow from all
>

>
> Alias /modperl/ /var/www/modperl/
>
>
> PerlModule ModPerl::RegistryPrefork
>
> PerlFixupHandler Apache::DB
> SetHandler perl-script
> PerlResponseHandler ModPerl::RegistryPrefork
> PerlOptions +ParseHeaders
> Options +ExecCGI
> Order allow,deny
> Allow from all
>

>
>
> 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
> ServerSignature On
>
> Alias /doc/ "/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
>

>
>

>
>
>


hello, I am still looking for solution. When command
sudo apache2 -X -k restart
The debugger would immediately startup at this shell ?

Thanks

Re: mod_perl interactive debugging

am 31.05.2008 19:08:38 von Fred Moyer

william wrote:
> On 5/29/08, william wrote:
>> On 5/29/08, Fred Moyer wrote:
>> > william wrote:
>> >
>> > > On 5/29/08, Perrin Harkins wrote:
>> > >
>> > > > On Wed, May 28, 2008 at 3:33 AM, william wrote:
>> > > >
>> > > I put the following lines at the top of my startup.pl script
>> > > use APR::Pool (); #specific for mod_perl 2
>> > > use Apache::DB ();
>> > > Apache::DB->init();
>> > >
>> >
>> > Can you show us the part of httpd.conf where you call startup.pl?
>> >
>> > I always place my debugger calls before any other modules load, usually
>> > right after mod_perl.so is loaded.
>>
>>
>> Thanks for the prompt reply, here it is.
>>
>> /etc/apache2/httpd.conf
>>
>>
>> Options +ExecCGI
>> AddHandler cgi-script cgi pl
>>

>>
>> ServerName localhost
>>
>>
>> # Alias /modperl/ /var/www/modperl/
>>
>> #
>> #
>> # use APR::Pool ();
>> # use Apache::DB ();
>> # Apache::DB->init;
>>
>> # warn "PERLDB executed";
>> #

>> #
>> # PerlFixupHandler Apache::DB
>> #

>> #

>>
>>
>> #The startup script
>> PerlRequire '/var/www/modperl/Apache2/startup.pl'
>>

I didn't see a LodModule directive in there anywhere - do you have a
line like 'LoadModule perl_module modules/mod_perl.so'?

It looked like you were using mod_perl2, so it is very likely that you
have that line in there somewhere (I don't know of anyone who has done a
static build with mp2.

> hello, I am still looking for solution. When command
> sudo apache2 -X -k restart
> The debugger would immediately startup at this shell ?

The debugger will start once the first request to the server is made.

Re: mod_perl interactive debugging

am 31.05.2008 19:19:56 von Keenlearner

On 6/1/08, Fred Moyer wrote:
> william wrote:
>
> > On 5/29/08, william wrote:
> >
> > > On 5/29/08, Fred Moyer wrote:
> > > > william wrote:
> > > >
> > > > > On 5/29/08, Perrin Harkins wrote:
> > > > >
> > > > > > On Wed, May 28, 2008 at 3:33 AM, william
> wrote:
> > > > > >
> > > > > I put the following lines at the top of my startup.pl script
> > > > > use APR::Pool (); #specific for mod_perl 2
> > > > > use Apache::DB ();
> > > > > Apache::DB->init();
> > > > >
> > > >
> > > > Can you show us the part of httpd.conf where you call startup.pl?
> > > >
> > > > I always place my debugger calls before any other modules load,
> usually
> > > > right after mod_perl.so is loaded.
> > >
> > >
> > > Thanks for the prompt reply, here it is.
> > >
> > > /etc/apache2/httpd.conf
> > >
> > >
> > > Options +ExecCGI
> > > AddHandler cgi-script cgi pl
> > >

> > >
> > > ServerName localhost
> > >
> > >
> > > # Alias /modperl/ /var/www/modperl/
> > >
> > > #
> > > #
> > > # use APR::Pool ();
> > > # use Apache::DB ();
> > > # Apache::DB->init;
> > >
> > > # warn "PERLDB executed";
> > > #

> > > #
> > > # PerlFixupHandler Apache::DB
> > > #

> > > #

> > >
> > >
> > > #The startup script
> > > PerlRequire '/var/www/modperl/Apache2/startup.pl'
> > >
> > >
> >
>
> I didn't see a LodModule directive in there anywhere - do you have a line
> like 'LoadModule perl_module modules/mod_perl.so'?
>
> It looked like you were using mod_perl2, so it is very likely that you have
> that line in there somewhere (I don't know of anyone who has done a static
> build with mp2.
>
>
> > hello, I am still looking for solution. When command
> > sudo apache2 -X -k restart
> > The debugger would immediately startup at this shell ?
> >
>
> The debugger will start once the first request to the server is made.
>
>

My apache configuration file is not just at the httpd.conf , I also
have the apache2.conf

I have this line in /etc/apache2/mods-enabled/perl.load
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so

Yes, I am using
mod_perl/2.0.4
Perl/v5.10.0

I am able to run my perl script under mod_perl, without any problem.

> The debugger will start once the first request to the server is made.

So the debugger would appear in which shell ?

I only get to see the debugging process in /var/log/apache2/error.log
, but not able to have interactive debugging feature.

Thanks.


apache2.conf
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.2/ for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# The configuration directives are grouped into three basic sections:
# 1. Directives that control the operation of the Apache server process as a
# whole (the 'global environment').
# 2. Directives that define the parameters of the 'main' or 'default' server,
# which responds to requests that aren't handled by a virtual host.
# These directives also provide default values for the settings
# of all virtual hosts.
# 3. Settings for virtual hosts, which allow Web requests to be sent to
# different IP addresses or hostnames and have them handled by the
# same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path. If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so
"/var/log/apache2/foo.log"
# with ServerRoot set to "" will be interpreted by the
# server as "//var/log/apache2/foo.log".
#

### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at );
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "/etc/apache2"

#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
#
#
LockFile /var/lock/apache2/accept.lock
#

#


#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile /var/run/apache2.pid

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0


# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0


# These need to be set in /etc/apache2/envvars
User www-data
Group www-data

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
#

AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#

Order allow,deny
Deny from all


#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value. If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain


#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a
# container, that host's errors will be logged there and not here.
#
ErrorLog /var/log/apache2/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

# Include all the user configurations:
Include /etc/apache2/httpd.conf

# Include ports listing
Include /etc/apache2/ports.conf

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into
%{X-Forwarded-For}i
#
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

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of: Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Full

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature On



#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# Putting this all together, we can internationalize error responses.
#
# We use Alias to redirect any /error/HTTP_.html.var response to
# our collection of by-error message multi-language collections. We use
# includes to substitute the appropriate text.
#
# You can modify the messages' appearance without changing any of the
# default HTTP_.html.var files by adding the line:
#
# Alias /error/include/ "/your/include/path/"
#
# which allows you to create your own set of files by starting with the
# /usr/share/apache2/error/include/ files and copying them to
/your/include/path/,
# even on a per-VirtualHost basis. The default include files will display
# your Apache version number and your ServerAdmin email address regardless
# of the setting of ServerSignature.
#
# The internationalized error documents require mod_alias, mod_include
# and mod_negotiation. To activate them, uncomment the following 30 lines.

# Alias /error/ "/usr/share/apache2/error/"
#
#
# AllowOverride None
# Options IncludesNoExec
# AddOutputFilter Includes html
# AddHandler type-map var
# Order allow,deny
# Allow from all
# LanguagePriority en cs de es fr it nl sv pt-br ro
# ForceLanguagePriority Prefer Fallback
#

#
# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
# ErrorDocument 410 /error/HTTP_GONE.html.var
# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
# ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var



# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.

# Include generic snippets of statements
Include /etc/apache2/conf.d/

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/


# Load the mod_perl
#LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so

Re: mod_perl interactive debugging

am 31.05.2008 21:52:10 von Keenlearner

On 6/1/08, william wrote:
> On 6/1/08, Fred Moyer wrote:
> > william wrote:
> >
> > > On 5/29/08, william wrote:
> > >
> > > > On 5/29/08, Fred Moyer wrote:
> > > > > william wrote:
> > > > >
> > > > > > On 5/29/08, Perrin Harkins wrote:
> > > > > >
> > > > > > > On Wed, May 28, 2008 at 3:33 AM, william
> > wrote:
> > > > > > >
> > > > > > I put the following lines at the top of my startup.pl script
> > > > > > use APR::Pool (); #specific for mod_perl 2
> > > > > > use Apache::DB ();
> > > > > > Apache::DB->init();
> > > > > >
> > > > >
> > > > > Can you show us the part of httpd.conf where you call startup.pl?
> > > > >
> > > > > I always place my debugger calls before any other modules load,
> > usually
> > > > > right after mod_perl.so is loaded.
> > > >
> > > >
> > > > Thanks for the prompt reply, here it is.
> > > >
> > > > /etc/apache2/httpd.conf
> > > >
> > > >
> > > > Options +ExecCGI
> > > > AddHandler cgi-script cgi pl
> > > >

> > > >
> > > > ServerName localhost
> > > >
> > > >
> > > > # Alias /modperl/ /var/www/modperl/
> > > >
> > > > #
> > > > #
> > > > # use APR::Pool ();
> > > > # use Apache::DB ();
> > > > # Apache::DB->init;
> > > >
> > > > # warn "PERLDB executed";
> > > > #

> > > > #
> > > > # PerlFixupHandler Apache::DB
> > > > #

> > > > #

> > > >
> > > >
> > > > #The startup script
> > > > PerlRequire '/var/www/modperl/Apache2/startup.pl'
> > > >
> > > >
> > >
> >
> > I didn't see a LodModule directive in there anywhere - do you have a line
> > like 'LoadModule perl_module modules/mod_perl.so'?
> >
> > It looked like you were using mod_perl2, so it is very likely that you have
> > that line in there somewhere (I don't know of anyone who has done a static
> > build with mp2.
> >
> >
> > > hello, I am still looking for solution. When command
> > > sudo apache2 -X -k restart
> > > The debugger would immediately startup at this shell ?
> > >
> >
> > The debugger will start once the first request to the server is made.
> >
> >
>
>
> My apache configuration file is not just at the httpd.conf , I also
> have the apache2.conf
>
> I have this line in /etc/apache2/mods-enabled/perl.load
> LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
>
> Yes, I am using
> mod_perl/2.0.4
> Perl/v5.10.0
>
> I am able to run my perl script under mod_perl, without any problem.
>
>
> > The debugger will start once the first request to the server is made.
>
>
> So the debugger would appear in which shell ?
>
> I only get to see the debugging process in /var/log/apache2/error.log
> , but not able to have interactive debugging feature.
>
> Thanks.
>
>
> apache2.conf
> #
> # Based upon the NCSA server configuration files originally by Rob McCool.
> #
> # This is the main Apache server configuration file. It contains the
> # configuration directives that give the server its instructions.
> # See http://httpd.apache.org/docs/2.2/ for detailed information about
> # the directives.
> #
> # Do NOT simply read the instructions in here without understanding
> # what they do. They're here only as hints or reminders. If you are unsure
> # consult the online docs. You have been warned.
> #
> # The configuration directives are grouped into three basic sections:
> # 1. Directives that control the operation of the Apache server process as a
> # whole (the 'global environment').
> # 2. Directives that define the parameters of the 'main' or 'default' server,
> # which responds to requests that aren't handled by a virtual host.
> # These directives also provide default values for the settings
> # of all virtual hosts.
> # 3. Settings for virtual hosts, which allow Web requests to be sent to
> # different IP addresses or hostnames and have them handled by the
> # same Apache server process.
> #
> # Configuration and logfile names: If the filenames you specify for many
> # of the server's control files begin with "/" (or "drive:/" for Win32), the
> # server will use that explicit path. If the filenames do *not* begin
> # with "/", the value of ServerRoot is prepended -- so
> "/var/log/apache2/foo.log"
> # with ServerRoot set to "" will be interpreted by the
> # server as "//var/log/apache2/foo.log".
> #
>
> ### Section 1: Global Environment
> #
> # The directives in this section affect the overall operation of Apache,
> # such as the number of concurrent requests it can handle or where it
> # can find its configuration files.
> #
>
> #
> # ServerRoot: The top of the directory tree under which the server's
> # configuration, error, and log files are kept.
> #
> # NOTE! If you intend to place this on an NFS (or otherwise network)
> # mounted filesystem then please read the LockFile documentation (available
> # at );
> # you will save yourself a lot of trouble.
> #
> # Do NOT add a slash at the end of the directory path.
> #
> ServerRoot "/etc/apache2"
>
> #
> # The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
> #
> #
> #
> LockFile /var/lock/apache2/accept.lock
> #

> #

>
> #
> # PidFile: The file in which the server should record its process
> # identification number when it starts.
> # This needs to be set in /etc/apache2/envvars
> #
> PidFile /var/run/apache2.pid
>
> #
> # Timeout: The number of seconds before receives and sends time out.
> #
> Timeout 300
>
> #
> # KeepAlive: Whether or not to allow persistent connections (more than
> # one request per connection). Set to "Off" to deactivate.
> #
> KeepAlive On
>
> #
> # MaxKeepAliveRequests: The maximum number of requests to allow
> # during a persistent connection. Set to 0 to allow an unlimited amount.
> # We recommend you leave this number high, for maximum performance.
> #
> MaxKeepAliveRequests 100
>
> #
> # KeepAliveTimeout: Number of seconds to wait for the next request from the
> # same client on the same connection.
> #
> KeepAliveTimeout 15
>
> ##
> ## Server-Pool Size Regulation (MPM specific)
> ##
>
> # prefork MPM
> # StartServers: number of server processes to start
> # MinSpareServers: minimum number of server processes which are kept spare
> # MaxSpareServers: maximum number of server processes which are kept spare
> # MaxClients: maximum number of server processes allowed to start
> # MaxRequestsPerChild: maximum number of requests a server process serves
>
> StartServers 5
> MinSpareServers 5
> MaxSpareServers 10
> MaxClients 150
> MaxRequestsPerChild 0
>

>
> # worker MPM
> # StartServers: initial number of server processes to start
> # MaxClients: maximum number of simultaneous client connections
> # MinSpareThreads: minimum number of worker threads which are kept spare
> # MaxSpareThreads: maximum number of worker threads which are kept spare
> # ThreadsPerChild: constant number of worker threads in each server process
> # MaxRequestsPerChild: maximum number of requests a server process serves
>
> StartServers 2
> MaxClients 150
> MinSpareThreads 25
> MaxSpareThreads 75
> ThreadsPerChild 25
> MaxRequestsPerChild 0
>

>
> # These need to be set in /etc/apache2/envvars
> User www-data
> Group www-data
>
> #
> # AccessFileName: The name of the file to look for in each directory
> # for additional configuration directives. See also the AllowOverride
> # directive.
> #
>
> AccessFileName .htaccess
>
> #
> # The following lines prevent .htaccess and .htpasswd files from being
> # viewed by Web clients.
> #
>
> Order allow,deny
> Deny from all
>

>
> #
> # DefaultType is the default MIME type the server will use for a document
> # if it cannot otherwise determine one, such as from filename extensions.
> # If your server contains mostly text or HTML documents, "text/plain" is
> # a good value. If most of your content is binary, such as applications
> # or images, you may want to use "application/octet-stream" instead to
> # keep browsers from trying to display binary files as though they are
> # text.
> #
> DefaultType text/plain
>
>
> #
> # HostnameLookups: Log the names of clients or just their IP addresses
> # e.g., www.apache.org (on) or 204.62.129.132 (off).
> # The default is off because it'd be overall better for the net if people
> # had to knowingly turn this feature on, since enabling it means that
> # each client request will result in AT LEAST one lookup request to the
> # nameserver.
> #
> HostnameLookups Off
>
> # ErrorLog: The location of the error log file.
> # If you do not specify an ErrorLog directive within a
> # container, error messages relating to that virtual host will be
> # logged here. If you *do* define an error logfile for a
> # container, that host's errors will be logged there and not here.
> #
>
> ErrorLog /var/log/apache2/error.log
>
> #
>
> # LogLevel: Control the number of messages logged to the error_log.
>
> # Possible values include: debug, info, notice, warn, error, crit,
> # alert, emerg.
> #
> LogLevel warn
>
>
> # Include module configuration:
> Include /etc/apache2/mods-enabled/*.load
> Include /etc/apache2/mods-enabled/*.conf
>
> # Include all the user configurations:
> Include /etc/apache2/httpd.conf
>
> # Include ports listing
> Include /etc/apache2/ports.conf
>
> #
> # The following directives define some format nicknames for use with
> # a CustomLog directive (see below).
> # If you are behind a reverse proxy, you might want to change %h into
> %{X-Forwarded-For}i
> #
> 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
>
> #
> # ServerTokens
> # This directive configures what you return as the Server HTTP response
> # Header. The default is 'Full' which sends information about the OS-Type
> # and compiled in modules.
> # Set to one of: Full | OS | Minor | Minimal | Major | Prod
> # where Full conveys the most information, and Prod the least.
> #
> ServerTokens Full
>
> #
> # Optionally add a line containing the server version and virtual host
> # name to server-generated pages (internal error documents, FTP directory
> # listings, mod_status and mod_info output etc., but not CGI generated
> # documents or custom error documents).
> # Set to "EMail" to also include a mailto: link to the ServerAdmin.
> # Set to one of: On | Off | EMail
> #
> ServerSignature On
>
>
>
> #
> # Customizable error responses come in three flavors:
> # 1) plain text 2) local redirects 3) external redirects
> #
> # Some examples:
> #ErrorDocument 500 "The server made a boo boo."
> #ErrorDocument 404 /missing.html
> #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
> #ErrorDocument 402 http://www.example.com/subscription_info.html
> #
>
> #
> # Putting this all together, we can internationalize error responses.
> #
> # We use Alias to redirect any /error/HTTP_.html.var response to
> # our collection of by-error message multi-language collections. We use
> # includes to substitute the appropriate text.
> #
> # You can modify the messages' appearance without changing any of the
> # default HTTP_.html.var files by adding the line:
> #
> # Alias /error/include/ "/your/include/path/"
> #
> # which allows you to create your own set of files by starting with the
> # /usr/share/apache2/error/include/ files and copying them to
> /your/include/path/,
> # even on a per-VirtualHost basis. The default include files will display
> # your Apache version number and your ServerAdmin email address regardless
> # of the setting of ServerSignature.
> #
> # The internationalized error documents require mod_alias, mod_include
> # and mod_negotiation. To activate them, uncomment the following 30 lines.
>
> # Alias /error/ "/usr/share/apache2/error/"
> #
> #
> # AllowOverride None
> # Options IncludesNoExec
> # AddOutputFilter Includes html
> # AddHandler type-map var
> # Order allow,deny
> # Allow from all
> # LanguagePriority en cs de es fr it nl sv pt-br ro
> # ForceLanguagePriority Prefer Fallback
> #

> #
> # ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
> # ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
> # ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
> # ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
> # ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
> # ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
> # ErrorDocument 410 /error/HTTP_GONE.html.var
> # ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
> # ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
> # ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
> # ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
> # ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
> # ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
> # ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
> # ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
> # ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
> # ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
>
>
>
> # Include of directories ignores editors' and dpkg's backup files,
> # see README.Debian for details.
>
> # Include generic snippets of statements
> Include /etc/apache2/conf.d/
>
> # Include the virtual host configurations:
> Include /etc/apache2/sites-enabled/
>
>
> # Load the mod_perl
> #LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
>


I am almost discouraged, but finally it works, I don't why I need to
call Apache::DB->handler first, then disable it, and it works.
Also maybe I am using ModPerl::RegistryPrefork instead of ModPerl::Registry

Thanks

Fwd: mod_perl interactive debugging

am 01.06.2008 19:30:33 von Keenlearner

---------- Forwarded message ----------
From: william
Date: Jun 1, 2008 6:11 PM
Subject: Re: mod_perl interactive debugging
To: Fred Moyer


On 6/1/08, william wrote:
> On 6/1/08, william wrote:
> > On 6/1/08, Fred Moyer wrote:
> > > william wrote:
> > >
> > > > On 5/29/08, william wrote:
> > > >
> > > > > On 5/29/08, Fred Moyer wrote:
> > > > > > william wrote:
> > > > > >
> > > > > > > On 5/29/08, Perrin Harkins wrote:
> > > > > > >
> > > > > > > > On Wed, May 28, 2008 at 3:33 AM, william
> > > wrote:
> > > > > > > >
> > > > > > > I put the following lines at the top of my startup.pl script
> > > > > > > use APR::Pool (); #specific for mod_perl 2
> > > > > > > use Apache::DB ();
> > > > > > > Apache::DB->init();
> > > > > > >
> > > > > >
> > > > > > Can you show us the part of httpd.conf where you call
startup.pl?
> > > > > >
> > > > > > I always place my debugger calls before any other modules load,
> > > usually
> > > > > > right after mod_perl.so is loaded.
> > > > >
> > > > >
> > > > > Thanks for the prompt reply, here it is.
> > > > >
> > > > > /etc/apache2/httpd.conf
> > > > >
> > > > >
> > > > > Options +ExecCGI
> > > > > AddHandler cgi-script cgi pl
> > > > >

> > > > >
> > > > > ServerName localhost
> > > > >
> > > > >
> > > > > # Alias /modperl/ /var/www/modperl/
> > > > >
> > > > > #
> > > > > #
> > > > > # use APR::Pool ();
> > > > > # use Apache::DB ();
> > > > > # Apache::DB->init;
> > > > >
> > > > > # warn "PERLDB executed";
> > > > > #

> > > > > #
> > > > > # PerlFixupHandler Apache::DB
> > > > > #

> > > > > #

> > > > >
> > > > >
> > > > > #The startup script
> > > > > PerlRequire '/var/www/modperl/Apache2/startup.pl'
> > > > >
> > > > >
> > > >
> > >
> > > I didn't see a LodModule directive in there anywhere - do
you have a line
> > > like 'LoadModule perl_module modules/mod_perl.so'?
> > >
> > > It looked like you were using mod_perl2, so it is very
likely that you have
> > > that line in there somewhere (I don't know of anyone who has
done a static
> > > build with mp2.
> > >
> > >
> > > > hello, I am still looking for solution. When command
> > > > sudo apache2 -X -k restart
> > > > The debugger would immediately startup at this shell ?
> > > >
> > >
> > > The debugger will start once the first request to the server is made.
> > >
> > >
> >
> >
> > My apache configuration file is not just at the httpd.conf , I also
> > have the apache2.conf
> >
> > I have this line in /etc/apache2/mods-enabled/perl.load
> > LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
> >
> > Yes, I am using
> > mod_perl/2.0.4
> > Perl/v5.10.0
> >
> > I am able to run my perl script under mod_perl, without any problem.
> >
> >
> > > The debugger will start once the first request to the server is made.
> >
> >
> > So the debugger would appear in which shell ?
> >
> > I only get to see the debugging process in /var/log/apache2/error.log
> > , but not able to have interactive debugging feature.
> >
> > Thanks.
> >
> >
> > apache2.conf
> > #
> > # Based upon the NCSA server configuration files originally by
Rob McCool.
> > #
> > # This is the main Apache server configuration file. It contains the
> > # configuration directives that give the server its instructions.
> > # See http://httpd.apache.org/docs/2.2/ for detailed information about
> > # the directives.
> > #
> > # Do NOT simply read the instructions in here without understanding
> > # what they do. They're here only as hints or reminders. If
you are unsure
> > # consult the online docs. You have been warned.
> > #
> > # The configuration directives are grouped into three basic sections:
> > # 1. Directives that control the operation of the Apache
server process as a
> > # whole (the 'global environment').
> > # 2. Directives that define the parameters of the 'main' or
'default' server,
> > # which responds to requests that aren't handled by a virtual host.
> > # These directives also provide default values for the settings
> > # of all virtual hosts.
> > # 3. Settings for virtual hosts, which allow Web requests to be sent to
> > # different IP addresses or hostnames and have them handled by the
> > # same Apache server process.
> > #
> > # Configuration and logfile names: If the filenames you specify for many
> > # of the server's control files begin with "/" (or "drive:/"
for Win32), the
> > # server will use that explicit path. If the filenames do *not* begin
> > # with "/", the value of ServerRoot is prepended -- so
> > "/var/log/apache2/foo.log"
> > # with ServerRoot set to "" will be interpreted by the
> > # server as "//var/log/apache2/foo.log".
> > #
> >
> > ### Section 1: Global Environment
> > #
> > # The directives in this section affect the overall operation of Apache,
> > # such as the number of concurrent requests it can handle or where it
> > # can find its configuration files.
> > #
> >
> > #
> > # ServerRoot: The top of the directory tree under which the server's
> > # configuration, error, and log files are kept.
> > #
> > # NOTE! If you intend to place this on an NFS (or otherwise network)
> > # mounted filesystem then please read the LockFile
documentation (available
> > # at );
> > # you will save yourself a lot of trouble.
> > #
> > # Do NOT add a slash at the end of the directory path.
> > #
> > ServerRoot "/etc/apache2"
> >
> > #
> > # The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
> > #
> > #
> > #
> > LockFile /var/lock/apache2/accept.lock
> > #

> > #

> >
> > #
> > # PidFile: The file in which the server should record its process
> > # identification number when it starts.
> > # This needs to be set in /etc/apache2/envvars
> > #
> > PidFile /var/run/apache2.pid
> >
> > #
> > # Timeout: The number of seconds before receives and sends time out.
> > #
> > Timeout 300
> >
> > #
> > # KeepAlive: Whether or not to allow persistent connections (more than
> > # one request per connection). Set to "Off" to deactivate.
> > #
> > KeepAlive On
> >
> > #
> > # MaxKeepAliveRequests: The maximum number of requests to allow
> > # during a persistent connection. Set to 0 to allow an unlimited amount.
> > # We recommend you leave this number high, for maximum performance.
> > #
> > MaxKeepAliveRequests 100
> >
> > #
> > # KeepAliveTimeout: Number of seconds to wait for the next
request from the
> > # same client on the same connection.
> > #
> > KeepAliveTimeout 15
> >
> > ##
> > ## Server-Pool Size Regulation (MPM specific)
> > ##
> >
> > # prefork MPM
> > # StartServers: number of server processes to start
> > # MinSpareServers: minimum number of server processes which are
kept spare
> > # MaxSpareServers: maximum number of server processes which are
kept spare
> > # MaxClients: maximum number of server processes allowed to start
> > # MaxRequestsPerChild: maximum number of requests a server process serves
> >
> > StartServers 5
> > MinSpareServers 5
> > MaxSpareServers 10
> > MaxClients 150
> > MaxRequestsPerChild 0
> >

> >
> > # worker MPM
> > # StartServers: initial number of server processes to start
> > # MaxClients: maximum number of simultaneous client connections
> > # MinSpareThreads: minimum number of worker threads which are kept spare
> > # MaxSpareThreads: maximum number of worker threads which are kept spare
> > # ThreadsPerChild: constant number of worker threads in each
server process
> > # MaxRequestsPerChild: maximum number of requests a server process serves
> >
> > StartServers 2
> > MaxClients 150
> > MinSpareThreads 25
> > MaxSpareThreads 75
> > ThreadsPerChild 25
> > MaxRequestsPerChild 0
> >

> >
> > # These need to be set in /etc/apache2/envvars
> > User www-data
> > Group www-data
> >
> > #
> > # AccessFileName: The name of the file to look for in each directory
> > # for additional configuration directives. See also the AllowOverride
> > # directive.
> > #
> >
> > AccessFileName .htaccess
> >
> > #
> > # The following lines prevent .htaccess and .htpasswd files from being
> > # viewed by Web clients.
> > #
> >
> > Order allow,deny
> > Deny from all
> >

> >
> > #
> > # DefaultType is the default MIME type the server will use for a document
> > # if it cannot otherwise determine one, such as from filename extensions.
> > # If your server contains mostly text or HTML documents, "text/plain" is
> > # a good value. If most of your content is binary, such as applications
> > # or images, you may want to use "application/octet-stream" instead to
> > # keep browsers from trying to display binary files as though they are
> > # text.
> > #
> > DefaultType text/plain
> >
> >
> > #
> > # HostnameLookups: Log the names of clients or just their IP addresses
> > # e.g., www.apache.org (on) or 204.62.129.132 (off).
> > # The default is off because it'd be overall better for the net if people
> > # had to knowingly turn this feature on, since enabling it means that
> > # each client request will result in AT LEAST one lookup request to the
> > # nameserver.
> > #
> > HostnameLookups Off
> >
> > # ErrorLog: The location of the error log file.
> > # If you do not specify an ErrorLog directive within a
> > # container, error messages relating to that virtual host will be
> > # logged here. If you *do* define an error logfile for a
> > # container, that host's errors will be logged there and not here.
> > #
> >
> > ErrorLog /var/log/apache2/error.log
> >
> > #
> >
> > # LogLevel: Control the number of messages logged to the error_log.
> >
> > # Possible values include: debug, info, notice, warn, error, crit,
> > # alert, emerg.
> > #
> > LogLevel warn
> >
> >
> > # Include module configuration:
> > Include /etc/apache2/mods-enabled/*.load
> > Include /etc/apache2/mods-enabled/*.conf
> >
> > # Include all the user configurations:
> > Include /etc/apache2/httpd.conf
> >
> > # Include ports listing
> > Include /etc/apache2/ports.conf
> >
> > #
> > # The following directives define some format nicknames for use with
> > # a CustomLog directive (see below).
> > # If you are behind a reverse proxy, you might want to change %h into
> > %{X-Forwarded-For}i
> > #
> > 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
> >
> > #
> > # ServerTokens
> > # This directive configures what you return as the Server HTTP response
> > # Header. The default is 'Full' which sends information about the OS-Type
> > # and compiled in modules.
> > # Set to one of: Full | OS | Minor | Minimal | Major | Prod
> > # where Full conveys the most information, and Prod the least.
> > #
> > ServerTokens Full
> >
> > #
> > # Optionally add a line containing the server version and virtual host
> > # name to server-generated pages (internal error documents, FTP directory
> > # listings, mod_status and mod_info output etc., but not CGI generated
> > # documents or custom error documents).
> > # Set to "EMail" to also include a mailto: link to the ServerAdmin.
> > # Set to one of: On | Off | EMail
> > #
> > ServerSignature On
> >
> >
> >
> > #
> > # Customizable error responses come in three flavors:
> > # 1) plain text 2) local redirects 3) external redirects
> > #
> > # Some examples:
> > #ErrorDocument 500 "The server made a boo boo."
> > #ErrorDocument 404 /missing.html
> > #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
> > #ErrorDocument 402 http://www.example.com/subscription_info.html
> > #
> >
> > #
> > # Putting this all together, we can internationalize error responses.
> > #
> > # We use Alias to redirect any /error/HTTP_.html.var response to
> > # our collection of by-error message multi-language collections. We use
> > # includes to substitute the appropriate text.
> > #
> > # You can modify the messages' appearance without changing any of the
> > # default HTTP_.html.var files by adding the line:
> > #
> > # Alias /error/include/ "/your/include/path/"
> > #
> > # which allows you to create your own set of files by starting with the
> > # /usr/share/apache2/error/include/ files and copying them to
> > /your/include/path/,
> > # even on a per-VirtualHost basis. The default include files
will display
> > # your Apache version number and your ServerAdmin email address
regardless
> > # of the setting of ServerSignature.
> > #
> > # The internationalized error documents require mod_alias, mod_include
> > # and mod_negotiation. To activate them, uncomment the
following 30 lines.
> >
> > # Alias /error/ "/usr/share/apache2/error/"
> > #
> > #
> > # AllowOverride None
> > # Options IncludesNoExec
> > # AddOutputFilter Includes html
> > # AddHandler type-map var
> > # Order allow,deny
> > # Allow from all
> > # LanguagePriority en cs de es fr it nl sv pt-br ro
> > # ForceLanguagePriority Prefer Fallback
> > #

> > #
> > # ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
> > # ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
> > # ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
> > # ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
> > # ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
> > # ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
> > # ErrorDocument 410 /error/HTTP_GONE.html.var
> > # ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
> > # ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
> > # ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
> > # ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
> > # ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
> > # ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
> > # ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
> > # ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
> > # ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
> > # ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
> >
> >
> >
> > # Include of directories ignores editors' and dpkg's backup files,
> > # see README.Debian for details.
> >
> > # Include generic snippets of statements
> > Include /etc/apache2/conf.d/
> >
> > # Include the virtual host configurations:
> > Include /etc/apache2/sites-enabled/
> >
> >
> > # Load the mod_perl
> > #LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
> >
>
>
>
> I am almost discouraged, but finally it works, I don't why I need to
> call Apache::DB->handler first, then disable it, and it works.
> Also maybe I am using ModPerl::RegistryPrefork instead of ModPerl::Registry
>
> Thanks
>



Hello, my debugger is working fine now under mod_perl, I can exit from
debugger just
like normal 'q' command. But then the apache is still in debugging
mode and single process. So I have to press CTRL+Z to get out to the
normal shell prompt. But whenever I do that my apache would longer to
start again. I didn't see any text being logged in the log file.

How can I have a proper exit from the debugger as well as the apache
to start a normal server ? Thanks


william

Re: Fwd: mod_perl interactive debugging

am 03.06.2008 19:23:48 von Frank Wiles

On Mon, 2 Jun 2008 01:30:33 +0800
william wrote:

> Hello, my debugger is working fine now under mod_perl, I can exit from
> debugger just
> like normal 'q' command. But then the apache is still in debugging
> mode and single process. So I have to press CTRL+Z to get out to the
> normal shell prompt. But whenever I do that my apache would longer to
> start again. I didn't see any text being logged in the log file.
>
> How can I have a proper exit from the debugger as well as the apache
> to start a normal server ? Thanks

Hi William,

You should be able to hit Ctrl+C which will cause the Apache child
to exit and then you can restart it without debugging and not in
single process mode.

Hope that helps.

-------------------------------------------------------
Frank Wiles, Revolution Systems, LLC.
Personal : frank@wiles.org http://www.wiles.org
Work : frank@revsys.com http://www.revsys.com

Re: Fwd: mod_perl interactive debugging

am 06.06.2008 13:26:07 von Keenlearner

On 6/4/08, Frank Wiles wrote:
> On Mon, 2 Jun 2008 01:30:33 +0800
>
> william wrote:
>
>
> > Hello, my debugger is working fine now under mod_perl, I can exit from
> > debugger just
> > like normal 'q' command. But then the apache is still in debugging
> > mode and single process. So I have to press CTRL+Z to get out to the
> > normal shell prompt. But whenever I do that my apache would longer to
> > start again. I didn't see any text being logged in the log file.
> >
> > How can I have a proper exit from the debugger as well as the apache
> > to start a normal server ? Thanks
>
>
> Hi William,
>
> You should be able to hit Ctrl+C which will cause the Apache child
> to exit and then you can restart it without debugging and not in
> single process mode.
>
> Hope that helps.
>
> -------------------------------------------------------
>
> Frank Wiles, Revolution Systems, LLC.
> Personal : frank@wiles.org http://www.wiles.org
> Work : frank@revsys.com http://www.revsys.com
>
>


I have not tried out yet, but that might help. Thank you very much.

William