[Apache,Perl, Mac OS X] Apache met modProxyPerlHTML

Pagina: 1
Acties:

  • Daxter
  • Registratie: Januari 2004
  • Niet online
Ik probeer op m'n mac mini die als servertje dienst doet apache aan de gang te krijgen en een reverse proxy aan de gang te krijgen. Dit lukt allemaal prima maar de pagina's die uit geserveerd worden door de server achter de proxy bevatten volledige links die niet werken als ze worden teruggestuurd naar de opvrager (de andere server draait op de localhost:8080 en bevat dus links waar dat ook in staat).

Dit is als het goed is op te lossen met mod_proxy_html of met de perl module ModProxyPerlHtml. Met beide loop ik helaas tegen problemen aan en na een middag googlen en proberen ben ik door de idee"en heen.

Als ik de mod_proxy_html module installeer vertelt apache me bij het opstarten dat er in de binary van mod_proxy_html een verkeerde architectuur zit (ik denk dat hij 32 bit aantreft en 64 bit wil hebben). Helaas geeft de maker van de module op z'n site niet bijzonder veel uitleg over het gebruik en de binary versies van de modules zijn niet beschikbaar (gratis dan).

Een alternatief wat me eigenlijk nog beter lijkt dan de mod_proxy_html module is was ModProxyPerlHtml deze geeft helaas de volgende fout als ik het pakket en alle vereisten geinstalleerd heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Sat Mar 28 19:46:33 2009] [error] Can't load '/Library/Perl/5.8.8/darwin-thread
-multi-2level/auto/Compress/Raw/Zlib/Zlib.bundle' for module Compress::Raw::Zlib
: dlopen(/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Compress/Raw/Zlib/Z
lib.bundle, 1): no suitable image found.  Did find:\n\t/Library/Perl/5.8.8/darwi
n-thread-multi-2level/auto/Compress/Raw/Zlib/Zlib.bundle: no matching architectu
re in universal wrapper at /System/Library/Perl/5.8.8/darwin-thread-multi-2level
/DynaLoader.pm line 230.\n at /Library/Perl/5.8.8/IO/Uncompress/Adapter/Inflate.
pm line 8\nCompilation failed in require at /Library/Perl/5.8.8/IO/Uncompress/Ad
apter/Inflate.pm line 8.\nBEGIN failed--compilation aborted at /Library/Perl/5.8
.8/IO/Uncompress/Adapter/Inflate.pm line 8.\nCompilation failed in require at /L
ibrary/Perl/5.8.8/IO/Uncompress/AnyInflate.pm line 11.\nBEGIN failed--compilatio
n aborted at /Library/Perl/5.8.8/IO/Uncompress/AnyInflate.pm line 11.\nCompilati
on failed in require at /Library/Perl/5.8.8/Apache2/ModProxyPerlHtml.pm line 104
.\nBEGIN failed--compilation aborted at /Library/Perl/5.8.8/Apache2/ModProxyPerl
Html.pm line 104.\nCompilation failed in require at (eval 2) line 3.\n
failed to load Apache2::ModProxyPerlHtml package

Ik vermoed ook hier weer een conflict tussen de architecturen maar weet niet hoe ik dit moet oplossen.

Mijn apache versie:
code:
1
2
3
4
5
6
7
8
9
10
$ httpd -V
Server version: Apache/2.2.9 (Unix)
Server built:   Sep 19 2008 10:58:54
Server's Module Magic Number: 20051115:15
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)


En mijn perl versie:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$ perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
  Platform:
    osname=darwin, osvers=9.0, archname=darwin-thread-multi-2level
    uname='darwin b04.apple.com 9.0 darwin kernel version 9.3.0: tue aug 12 17:18:07 pdt 2008; root:xnu-1228.5.90~13release_i386 i386 '
    config_args='-ds -e -Dprefix=/usr -Dccflags=-g  -pipe  -Dldflags=-Dman3ext=3pm -Duseithreads -Duseshrplib'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=define use64bitall=define uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include',
    optimize='-O3',
    cppflags='-no-cpp-precomp -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include'
    ccversion='', gccversion='4.0.1 (Apple Inc. build 5465)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc -mmacosx-version-min=10.5.6', ldflags ='-arch i386 -arch ppc -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib
    libs=-ldbm -ldl -lm -lutil -lc
    perllibs=-ldl -lm -lutil -lc
    libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libperl.dylib
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-arch i386 -arch ppc -bundle -undefined dynamic_lookup -L/usr/local/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
                        PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES
                        USE_PERLIO USE_REENTRANT_API
  Locally applied patches:
    fix for regcomp CVE-2007-5116 security vulnerability
    fix for double-free CVE-2008-1927 security vulnerability
  Built under darwin
  Compiled at Jan 13 2009 10:02:17


En voor de volledigheid het resultaat van file `which app`:

code:
1
2
3
4
5
6
$ file `which httpd`
/usr/sbin/httpd: Mach-O universal binary with 4 architectures
/usr/sbin/httpd (for architecture ppc7400): Mach-O executable ppc
/usr/sbin/httpd (for architecture ppc64):   Mach-O 64-bit executable ppc64
/usr/sbin/httpd (for architecture i386):    Mach-O executable i386
/usr/sbin/httpd (for architecture x86_64):  Mach-O 64-bit executable x86_64


code:
1
2
3
4
$ file `which perl`
/usr/bin/perl: Mach-O universal binary with 2 architectures
/usr/bin/perl (for architecture ppc7400):   Mach-O executable ppc
/usr/bin/perl (for architecture i386):  Mach-O executable i386


Weet iemand hoe ik 1 van de 2 (het liefst de perl versie, maar met de andere ben ik ook heel gelukkig) aan de gang kan krijgen, of is het hem/haar zelf gelukt?

Site mod proxy html

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 27-01 22:14

Ventieldopje

I'm not your pal, mate!

Compiler: cc='cc', ccflags ='-arch i386
Je 64bit webserver met 64bit perl module kan niet uitgevoert worden met een 32bit perl.

Wat je zou moeten doen is de 64bit perl versie er naast installeren en het pad naar PERL goed zetten (wss. in het httpd.conf) en anders zou je Perl 32bits moeten vervangen door de 64bits variant.

www.maartendeboer.net


  • Daxter
  • Registratie: Januari 2004
  • Niet online
Phas0r schreef op maandag 30 maart 2009 @ 16:01:
[...]
Je 64bit webserver met 64bit perl module kan niet uitgevoert worden met een 32bit perl.

Wat je zou moeten doen is de 64bit perl versie er naast installeren en het pad naar PERL goed zetten (wss. in het httpd.conf) en anders zou je Perl 32bits moeten vervangen door de 64bits variant.
Ik was al bang dat het zoiets zou zijn, jammer dat het standaard niet compatible is. Maar dan ga ik dit van het weekend proberen, dank voor je reactie! In het geval dat ik perl 32 zou moeten vervangen moet ik me dan nog zorgen maken dat er andere dingen zijn in OS X die dan stoppen met werken (ik heb zelf nooit iets met perl gedaan, ik weet niet in hoeverre os x het gebruikt)?

[ Voor 16% gewijzigd door Daxter op 30-03-2009 19:11 ]