Building apache and mod_perl, was: Re: Fwd: Re: [bndfc-web-tech] Burngreave Development Server

Alan Dawson aland at burngreave.net
Wed Jul 28 00:11:33 BST 2004


Quoting Chris Croome <chris at webarchitects.co.uk>:

> Hi
> 
> On Fri 23-Jul-2004 at 01:04:29PM +0100, Chris Croome wrote:
> > 
> > Bruno has written a MKDoc / apache 1.3 install doc -- is it on the
> > web somewhere?
> 
> Hmm, there doesn't seem to be, 


There are some reasonable instructions in the mkdoc tarball.

I have a nicely functioning server and a semi fuctioning mkdoc installation.

The style sheet is only applied inconsistently.. in that I have to refresh the
browser several times before it looks ok.  Also there are many 500 server
errors.

users_error_log says
"SOFTWARE_ERROR

$VAR1 = {
          'SCRIPT_NAME' => '',
          'MKD__CACHE_DIR' =>
'/var/www/mkdoc/mkdoc-1.6.26/messenger-dev.aph/cache',
          'PATH_INFO' => '/need-to-sleep/.admin.content',
          'REQUEST_METHOD' => 'GET',
          'HTTP_ACCEPT' =>
'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1',
          'SCRIPT_FILENAME' => '/var/www/mkdoc/mkdoc-1.6.26/cgi/mkdoc.cgi',
          'SERVER_SOFTWARE' => 'Apache/1.3.29 (Debian GNU/Linux) mod_perl/1.29',
          'MKD__PLUGIN_LIST' => '/var/www/mkdoc/mkdoc-1.6.26/conf/users.conf',
          'AUTH_TYPE' => 'Basic',
          'QUERY_STRING' => '',
          'REMOTE_PORT' => '33148',
          'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6)
Gecko/20040114',
          'SERVER_SIGNATURE' => '<ADDRESS>Apache/1.3.29 Server at
users.messenger-dev.aph Port 80</ADDRESS>
',
          'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5',
          'SITE_DIR' => '/var/www/mkdoc/mkdoc-1.6.26/messenger-dev.aph',
          'HTTP_KEEP_ALIVE' => '300',
          'PERL5LIB' => '/var/www/mkdoc/mkdoc-1.6.26',
          'PATH' => '/bin:/usr/bin:/sbin:/usr/sbin',
          'GATEWAY_INTERFACE' => 'CGI-Perl/1.1',
          'MKDOC_DIR' => '/var/www/mkdoc/mkdoc-1.6.26',
          'DOCUMENT_ROOT' => '/var/www',
          'PATH_TRANSLATED' =>
'/var/www/mkdoc/mkdoc-1.6.26/cgi/mkdoc.cgi/need-to-sleep/.admin.content',
          'SERVER_NAME' => 'users.messenger-dev.aph',
          'HTTP_REFERER' => 'http://users.messenger-dev.aph/.admin.new',
          'SERVER_ADMIN' => 'admin at messenger-dev.aph',
          'PERL_SEND_HEADER' => 'On',
          'HTTP_ACCEPT_ENCODING' => 'gzip,deflate',
          'HTTP_CONNECTION' => 'keep-alive',
          'USER_DOMAIN' => 'http://users.messenger-dev.aph/',
          'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
          'REMOTE_USER' => 'aland',
          'SERVER_PORT' => '80',
          'PUBLIC_DOMAIN' => 'http://www.messenger-dev.aph/',
          'REMOTE_ADDR' => '10.10.2.66',
          'SERVER_PROTOCOL' => 'HTTP/1.1',
          'MKD__TIDY' => '/var/www/mkdoc/mkdoc-1.6.26/tools/whitelist.sh',
          'REQUEST_URI' => '/need-to-sleep/.admin.content',
          'SERVER_ADDR' => '10.10.2.66',
          'HTTP_HOST' => 'users.messenger-dev.aph',
          'MOD_PERL' => 'mod_perl/1.29'
        };


[PETAL ERROR] Can't locate object method "type" via package "flo::editor::Html"
at /var/www/mkdoc/mkdoc-1.6.26/flo/Editor.pm line 53.
. Debug info written in /tmp/petal_debug.838.1090997417.lcuxlhevap. at
/usr/local/share/perl/5.8.3/Petal.pm line 473.


[Wed Jul 28 07:50:17 2004] [error] Undefined subroutine
&MKDoc::Handler::Authenticate::handler called.\n
"

the debug info is

"messenger-dev:~# cat /tmp/petal_debug.838.1090997417.lcuxlhevap
Error: Can't locate object method "type" via package "flo::editor::Html" at
/var/www/mkdoc/mkdoc-1.6.26/flo/Editor.pm line 53.


Petal object dump:
==================
$VAR1 = bless( {
                 'language' => 'en',
                 'file' => 'admin/content/en.html'
               }, 'Petal' );


Stack trace:
============
 at /usr/local/share/perl/5.8.3/Petal.pm line 373
       
Petal::process('Petal=HASH(0x9761668)','self','flo::plugin::Admin::Content=HASH(0x976081c)','__input__','XML','__output__','XHTML')
called at /var/www/mkdoc/mkdoc-1.6.26/flo/Plugin.pm line 606
       
flo::Plugin::render('flo::plugin::Admin::Content=HASH(0x976081c)','self','flo::plugin::Admin::Content=HASH(0x976081c)','__input__','XML','__output__','XHTML')
called at /var/www/mkdoc/mkdoc-1.6.26/flo/Plugin.pm line 557
       
flo::Plugin::render_http('flo::plugin::Admin::Content=HASH(0x976081c)','self','flo::plugin::Admin::Content=HASH(0x976081c)','__input__','XML','__output__','XHTML')
called at ../flo/plugin/Admin/Content.pm line 67
       
flo::plugin::Admin::Content::http_get('flo::plugin::Admin::Content=HASH(0x976081c)')
called at /var/www/mkdoc/mkdoc-1.6.26/flo/Plugin.pm line 206
        flo::Plugin::run('flo::plugin::Admin::Content=HASH(0x976081c)') called
at /var/www/mkdoc/mkdoc-1.6.26/flo/Plugin.pm line 166
        flo::Plugin::main('flo::plugin::Admin::Content') called at
/var/www/mkdoc/mkdoc-1.6.26/MKDoc.pm line 82
        MKDoc::main() called at /var/www/mkdoc/mkdoc-1.6.26/MKDoc.pm line 50
        MKDoc::process('MKDoc') called at
/var/www/mkdoc/mkdoc-1.6.26/cgi/mkdoc.cgi line 16
        eval {...} called at /var/www/mkdoc/mkdoc-1.6.26/cgi/mkdoc.cgi line 16
       
Apache::ROOTusers_2emessenger_2ddev_2eaph::handler('Apache=SCALAR(0x97b6248)')
called at /usr/lib/perl5/Apache/Registry.pm line 149
        eval {...} called at /usr/lib/perl5/Apache/Registry.pm line 149
        Apache::Registry::handler('Apache=SCALAR(0x97b6248)') called at
/dev/null line 0
        eval {...} called at /dev/null line 0


Template perl code dump:
========================
  1. $VAR1 = sub {
  2.     my $hash = shift;
  3.     my $res = "";
  4.     local $^W = 0;
  5.     $res .= "\<\!DOCTYPE\ html\ PUBLIC\
  6. \ \ \"\-\/\/W3C\/\/DTD\ XHTML\ 1\.0\ Transitional\/\/EN\"\
  7. \ \ \"http\:\/\/www\.w3\.org\/TR\/xhtml1\/DTD\/xhtml1\-transitional\.dtd\"\
  8. \>\
  9. \
 10. ";
 11.     $res .= do {
 12.         my $res = $hash->get_encoded ('set: uri                  
self/uri');
 13.         (defined $res) ? $res : "";
 14.     };
 15.     $res .= "";
 16.     $res .= do {
 17.         my $res = $hash->get_encoded ('set: title                
string:Modify the Content of ${self/title}');
 18.         (defined $res) ? $res : "";
 19.     };
 20.     $res .= "";
 21.     $res .= do {
 22.         my $res = $hash->get_encoded ('set: dir                  
self/direction');
 23.         (defined $res) ? $res : "";
 24.     };
 25.     $res .= "";
 26.     $res .= do {
 27.         my $res = $hash->get_encoded ('set: align                
self/align');
 28.         (defined $res) ? $res : "";
 29.     };
 30.     $res .= "";
 31.     $res .= do {
 32.         my $res = $hash->get_encoded ('set: document_uri         
self/parent/uri');
 33.         (defined $res) ? $res : "";
 34.     };
 35.     $res .= "";
 36.     $res .= do {
 37.         my $res = $hash->get_encoded ('set: document_title       
self/parent/title');
 38.         (defined $res) ? $res : "";
 39.     };
 40.     $res .= "";
 41.     $res .= do {
 42.         my $res = $hash->get_encoded ('set: document_lang        
self/parent/lang');
 43.         (defined $res) ? $res : "";
 44.     };
 45.     $res .= "\<html\ xmlns\=\"http\:\/\/www\.w3\.org\/1999\/xhtml\"\ ";
 46.     {
 47.         my $value = $hash->get_encoded ('lang');
 48.         if (defined($value)) {
 49.             $res .= "lang=\"$value\""
 50.         }
 51.     }
 52.     $res .= "\ ";
 53.     {
 54.         my $value = $hash->get_encoded ('lang');
 55.         if (defined($value)) {
 56.             $res .= "xml:lang=\"$value\""
 57.         }
 58.     }
 59.     $res .= "\ ";
 60.     {
 61.         my $value = $hash->get_encoded ('dir');
 62.         if (defined($value)) {
 63.             $res .= "dir=\"$value\""
 64.         }
 65.     }
 66.     $res .= "\>\
 67. \
 68. \
 69. ";
 70.     $res .= do {
 71.         do {
 72.             my $new_hash = $hash->new();
 73.             $new_hash->{__included_from__} = 'admin/content/en.html';
 74.             my $res = eval { Petal->new (file => '/fragments/head_admin/',
lang => 'en')->process ($new_hash) };
 75.             $res = "<!--\n$@\n-->" if (defined $@ and $@);
 76.             $res;
 77.         } || '';
 78.     };
 79.     $res .= "\
 80. \ \ \
 81. \ \ \<body\ ";
 82.     {
 83.         my $value = $hash->get_encoded ('lang');
 84.         if (defined($value)) {
 85.             $res .= "lang=\"$value\""
 86.         }
 87.     }
 88.     $res .= "\ ";
 89.     {
 90.         my $value = $hash->get_encoded ('lang');
 91.         if (defined($value)) {
 92.             $res .= "xml:lang=\"$value\""
 93.         }
 94.     }
 95.     $res .= "\ ";
 96.     {
 97.         my $value = $hash->get_encoded ('dir');
 98.         if (defined($value)) {
 99.             $res .= "dir=\"$value\""
100.         }
101.     }
102.     $res .= "\>\
103. \
104. \ \ \ \ ";
105.     $res .= do {
106.         do {
107.             my $new_hash = $hash->new();
108.             $new_hash->{__included_from__} = 'admin/content/en.html';
109.             my $res = eval { Petal->new (file => '/fragments/admin/', lang
=> 'en')->process ($new_hash) };
110.             $res = "<!--\n$@\n-->" if (defined $@ and $@);
111.             $res;
112.         } || '';
113.     };
114.     $res .= "\
115. \
116. \ \ \ \ \<div\ class\=\"admin\-content\"\>\
117. \ \ \ \ \ \ \<h1\ ";
118.     {
119.         my $value = $hash->get_encoded ('align');
120.         if (defined($value)) {
121.             $res .= "align=\"$value\""
122.         }
123.     }
124.     $res .= "\ lang\=\"en\"\ xml\:lang\=\"en\"\ dir\=\"ltr\"\>";
125.     $res .= do {
126.         my $res = $hash->get_encoded ('title');
127.         (defined $res) ? $res : "";
128.     };
129.     $res .= "\<\/h1\>\
130. \
131. \
132. \ \ \ \ \ \ \<form\ accept\-charset\=\"UTF\-8\"\
enctype\=\"multipart\/form\-data\"\ ";
133.     {
134.         my $value = $hash->get_encoded ('self/uri');
135.         if (defined($value)) {
136.             $res .= "action=\"$value\""
137.         }
138.     }
139.     $res .= "\ method\=\"post\"\>\
140. \ \ \ \ \ \ \ \ \<p\ ";
141.     {
142.         my $value = $hash->get_encoded ('align');
143.         if (defined($value)) {
144.             $res .= "align=\"$value\""
145.         }
146.     }
147.     $res .= "\ lang\=\"en\"\ class\=\"en\"\ xml\:lang\=\"en\"\
dir\=\"ltr\"\>\
148. \ \ \ \ \
149. \ \ \ \ \ \ \ \ \ \ \ Edit\ and\ add\ components\ as\ required\ and\ then\
150. \ \ \ \ \ \ \ \ \ \ \<input\ value\=\"Save\ Changes\"\ name\=\"submit_ok\"\
title\=\"Make\ these\ modifications\ to\ the\ content\ of\ ";
151.     $res .= do {
152.         my $res = $hash->get_encoded ('self/title');
153.         (defined $res) ? $res : "";
154.     };
155.     $res .= "\"\ type\=\"submit\"\ \/\>\
156. \ \ \ \ \ \ \ \ \ \ \ \.\
157. \ \ \ \ \ \ \ \ \<\/p\>\
158. \ \ \ \ \
159. \ \ \ \ \ \ \ \ ";
160.     $res .= do {
161.         do {
162.             my $new_hash = $hash->new();
163.             $new_hash->{__included_from__} = 'admin/content/en.html';
164.             my $res = eval { Petal->new (file => '/error/', lang =>
'en')->process ($new_hash) };
165.             $res = "<!--\n$@\n-->" if (defined $@ and $@);
166.             $res;
167.         } || '';
168.     };
169.     $res .= "\
170. \ \ \ \ \
171. \ \ \ \ \ \ \ \ ";
172.     $res .= do {
173.         my $res = $hash->get_encoded ('structure self/editor/edit');
174.         (defined $res) ? $res : "";
175.     };
176.     $res .= "\
177. \ \ \ \ \
178. \ \ \ \ \ \ \ \ \<p\ ";
179.     {
180.         my $value = $hash->get_encoded ('align');
181.         if (defined($value)) {
182.             $res .= "align=\"$value\""
183.         }
184.     }
185.     $res .= "\>\
186. \ \ \ \ \
187. \ \ \ \ \ \ \ \ \ \ \<input\ value\=\"Save\ Changes\"\ name\=\"submit_ok\"\
title\=\"Make\ these\ modifications\ to\ the\ content\ of\ ";
188.     $res .= do {
189.         my $res = $hash->get_encoded ('self/title');
190.         (defined $res) ? $res : "";
191.     };
192.     $res .= "\"\ type\=\"submit\"\ \/\>\
193. \ \ \ \ \
194. \ \ \ \ \ \ \ \ \<\/p\>\
195. \ \ \ \ \ \ \ \ \<input\ ";
196.     {
197.         my $value = $hash->get_encoded ('self/editor/count');
198.         if (defined($value)) {
199.             $res .= "value=\"$value\""
200.         }
201.     }
202.     $res .= "\ name\=\"component_count\"\ type\=\"hidden\"\ \/\>\
203. \ \ \ \ \ \ \<\/form\>\
204. \ \ \ \ \<\/div\>\
205. \ \ \<\/body\>\
206. \<\/html\>";
207.     return $res;
208. };messenger-dev:~#

"


I'm running Debian Sarge, Apache 1.3.29, Mkdoc 1.3.26.

Apache Modules.conf looks like
"messenger-dev:~# cat /etc/apache/modules.conf
# Autogenerated file - do not edit!
# This file is maintained by the apache package.
# To update it, run the command:
#    /usr/sbin/modules-config apache
ClearModuleList
AddModule mod_so.c
AddModule mod_macro.c
LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so
LoadModule env_module /usr/lib/apache/1.3/mod_env.so
LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so
LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so
LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so
LoadModule status_module /usr/lib/apache/1.3/mod_status.so
LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so
LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so
LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so
LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule access_module /usr/lib/apache/1.3/mod_access.so
LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
LoadModule anon_auth_module /usr/lib/apache/1.3/mod_auth_anon.so
LoadModule dbm_auth_module /usr/lib/apache/1.3/mod_auth_dbm.so
LoadModule db_auth_module /usr/lib/apache/1.3/mod_auth_db.so
LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so
LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so
LoadModule sys_auth_module /usr/lib/apache/1.3/mod_auth_sys.so
LoadModule perl_module /usr/lib/apache/1.3/mod_perl.so
LoadModule cookie_auth_module /usr/lib/apache/1.3/mod_auth_cookie.so
LoadModule inst_auth_module /usr/lib/apache/1.3/mod_auth_inst.so
LoadModule plain_auth_module /usr/lib/apache/1.3/mod_auth_plain.so
"

The following perl modules are installed.. fresh from CPAN so they should be
current.. (except for Date::Manip  which I could only find 5.42a, and
Image::Magick which was downloaded and installed manually.
"messenger-dev:~# cat /root/downloads/mkdoc/mkdoc-1.6.26/MODULES.TXT
# -----------------------------------------------------------------------------
# Required Perl Modules
# -----------------------------------------------------------------------------
#
# In order for MKDoc to work properly, you need to install the following
# list of modules on your server.
#
# -----------------------------------------------------------------------------

# Basic stuff
        CGI                     2.93
        Encode                  1.97

# Text, HTML & XML processing:
        XML::Parser
        XML::RSS                0.97
        Petal                   0.93
        MKDoc::Text::Structured 0.3

# Unicode related:
        Text::Unidecode         0.04
        Unicode::String         2.06
        Unicode::Normalize      0.17

# Database related:
        DBI
        DBD::mysql

# Mail related:
        Mail::IMAPClient        2.2.0
        MIME::Base64

# Time & Date manipulation:
        Date::Manip             v5.52
        Time::ParseDate

# Image manipulation:
        Image::Magick           v5.48

# Cache management
        Cache::Cache            1.01

# HTML Tidy extension
        MKDoc::XML               0.69
        Getopt::Declare

# Ecommerce
        Digest::MD5
        Petal::Mail
        MKDoc::Control_List
        Geography::Countries

#
# Note
# ----
# Makefile.PL processes this file to build a list of required modules.
# Any un-commented line will be parsed for module names.
# If a module is optional, enclose it in square braces like [this].
#     -- The MKDoc Development Team
#
"
-- 
"The long revolution is creating small federated microsocieties, true guerilla  
 cells practising and fighting for this self-management. Effective radicality  
 authorises all variations and guarantees every freedom. "  
  
 
 



More information about the bndfc-web-tech mailing list