Frage

Ich habe mit perlbrew mehreren Versionen von Perl auf einem Linux Fedora verwalten Notizbuch. Ich habe es mit großem Nutzen verwendet Skripte Befehlszeilen meist laufen mit App :: cmd .

Ich möchte jetzt zu laufen Web-Anwendungen geschrieben bewegen CGI :: Anwendung mit mit verschiedenen perls in meinem $HOME installiert. Ich bin vertraut mit Perl Web-Anwendungen in $HOMEs läuft Apache user_dir oder das Erstellen von virtuellen Hosts verwenden, aber ich bin nicht in der Lage mit einem sauberen Weg, dies zu integrieren zu kommen und die perlbrew verwaltet perls. Insbesondere brauche ich Hilfe für das Verständnis und die Suche nach Antworten auf diese Fragen:

  1. Wie installiere mod_perl unter perlbrew?
  2. Unter der Annahme, dies erfolgt ist, wie konfiguriere ich meine Virtual so, dass es die richtige perl aufgreift, die aktuelle ist?
  3. Falls dies nicht möglich ist, (was ich bezweifle) kann ich zumindest mit lokalen Installationen Vanille CGI laufen ?

Vielen Dank für Ihre Aufmerksamkeit.

War es hilfreich?

Lösung

Ich glaube nicht, das ist eine gute Verwendung für perlbrew, die bewegt sich um Symlinks unter einem eigenen Verzeichnis. Der Trick ist, Schalten der Mod_perl Modul herum. Denken Sie daran, mod_perl wird binär inkompatibel zwischen Hauptversionen von Perl sein, und dass Sie haben es gegen Apache zu kompilieren für jede Version von Perl (und Apache) Sie verwenden möchten.

perlbrew wirklich tut, zwei große Dinge für Sie:

  • Installiert Perl, die einfach leicht auf eigene Faust zu tun.
  • Schaltet um Symlinks so perl ist, was Version Sie wollen.

Wenn Sie an diesem letzten aufgeben, perlbrew tut nicht wirklich so viel für Sie. Ich glaube nicht, das Symlink zeichnen sich durch besonders wertvoll ist.

Ich denke, perlbrew ist in Ordnung für das, was es ist, aber wenn Sie tun Dinge außerhalb ihres begrenzten Umfang zu starten, ist es Zeit, nicht zu verwenden. Es sollte ein Werkzeug sein, das Ihnen einige Zeit zu sparen und Kopfschmerzen, so wenn es nicht, dieses Ziel zu erreichen, ist es nicht das richtige Werkzeug für Ihre Situation.

In dieser Situation, wo ich eine einzige, große Web-Anwendung unterstützt, ich gebe ihm eine eigene Perl-Installation, dass ich nichts anderes verwenden lassen.

Für Ihre Fragen:

  1. Abschlag Platzhalter

  2. Sie sollten keine VirtualHost Sachen zu konfigurieren. Wenn Sie mod_perl verwenden, Perl ist schon drin und man bekommt nicht ein Perl zu wählen. Wenn Sie CGI-Sachen verwenden, geben Sie die Perl auf der Shebang-Zeile. Sie Apache nimmt den rechten Bibliotheksverzeichnisse gewährleisten müssen, aber ich denke, perlbrew Griffe dass. Sie könnten SetEnv oder etwas ähnliches in Ihrer httpd.conf verwenden.

  3. Für Vanille CGI, nur Punkt nach rechts (Symlink) Pfad für was auch immer die Standard perlbrew Version. Das Programm CGI wird nur, was auch immer verwenden, perl, dass Pfad auf.

Andere Tipps

Siehe brian d foy Antwort dafür, warum nicht zu verwenden perlbrew, um zwischen den Versionen von mod_perl zu erwarten. Ich erwarte auch, dass Sie mehr Apache-Server ausgeführt werden müssen, wenn Sie mehrere verschiedene Perl-Versionen unter mod_perl benötigen.

Allerdings mit perlbrew als eine einfache Möglichkeit Perl zu bauen, ist IMHO eine gültige Sache zu tun, und es gibt nur wenige Anweisungen zur Verfügung, wie mod_perl unter perlbrew auszuführen.

Sie zunächst sicher, Perl mit Shared Library Unterstützung gebaut, durch die -Duseshrplib Flagge vorbei (sonst auf 64-Bit-Systemen finden Sie eine verwirrende Build Scheitern über -fPIC erhalten):

perlbrew install perl-5.16.3 -Duseshrplib

Installieren Sie die Entwicklung Apache-Bibliotheken für Ihr System. Auf Debian abhängig Dies unterscheidet sich von der Apache MPM, dass Sie verwenden. Für das prefork MPM:

sudo apt-get install apache2-prefork-dev

oder für den Arbeiter MPM:

sudo apt-get install apache2-threaded-dev

Dann müssen Sie einige Optionen mod_perl2 an die richtige Stelle zu bauen und zu installieren. Beachten Sie, dass diese Mittel cpanm fehl, es zu bauen, aber Sie es halten, die Quelle zu erhalten verwenden:

cpanm mod_perl2  # fails
cd ~/.cpanm/latest-build/mod_perl-2.0.8/   # adjust mod_perl version

Stellen Sie die Version von Perl unten entsprechend. (Die MP_APXS Option ist, den richtigen Weg für Debian-basierte Systeme zu geben, die Sie nicht benötigen.)

perl Makefile.PL MP_APXS=/usr/bin/apxs2 \
                 MP_AP_DESTDIR=$HOME/perl5/perlbrew/perls/perl-5.16.3/
make
make install

Schließlich ändern Sie die LoadModule- Zeile in der Apache-Konfigurationsdatei (Einstellung Pfade entsprechend):

LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so

Ihre Mod_perl Installation wird nun die Version von Perl ausgeführt werden, die Sie wollen. Installieren Sie alle Ihre erforderlichen CPAN-Module und loslegen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top