Lutz: zentrales cgi-bin für alle domains

Hallo zusammen,

ich habe seit einiger Zeit bei puretec ein Hosting-Paket "Business" über das ich mehrere Websites verwalte.

Für jede Website habe ich einfach ein eigenes Verzeichnis angelegt auf das jeweils eine .de-Domain verweist.

verzeichnis_1 <- domain_1.de
verzeichnis_2 <- domain_2.de
usw.

Bislang habe ich innerhalb dieser Verzeichnisse jeweils ein separates cgi-bin angelegt. Das funktioniert auch, ich möchte jetzt aber der Einfachheit halber ein zentrales cgi-bin im root-Verzeichnis, auf das ich von allen Unterverzeichnissen/Websites des Servers zugreifen kann.

cgi-bin
verzeichnis_1 <- domain_1.de
verzeichnis_2 <- domain_2.de
usw.

Meine Server-Kenntnisse habe ich mir per "learning by doing" angeeignet, ich vermute, das ist eine Newbie Frage. Mir fehlen halt immer noch ein paar Grundkenntnisse.

Ist das möglich, daß ich von allen Verzeichnissen aus auf ein zentrales cgi-bin zurückgreifen kann?

Einen Versuch habe ich bereits gestartet, doch ich habe es nicht hinbekommen ein Testscript, das sich im neu angelegten zentralen cgi-bin im root-verzeichnis befindet, anzusprechen. Konkret: ich weiss nicht, wie dann der Pfad zum zentralen cgi-bin lauten müsste.

Wenn ich beispielsweise versuche, mein "Hello World"-Testscript  innerhalb eines meiner Domain-Verzeichnisse so aufzurufen ...
<!--#include virtual="../cgi-bin/test-root-ausgabe.pl" -->
...
erhalte ich eine Standard-Fehlermeldung "[an error occurred while processing this directive]". (Das Parsen der html-Seite ist bereits von mir per .htaccess aktiviert worden, daran liegt es nicht.)

TIA für Hilfe, Lutz

  1. Hi,

    cgi-bin
    verzeichnis_1 <- domain_1.de
    verzeichnis_2 <- domain_2.de

    Mit HTTP kannst Du nicht auf Daten unterhalb des Server-Roots zugreifen. Dieses cgi-bin ist also vorzüglich geeignet, Daten vorzuhalten, die vom Surfer nicht abrufbar sein sollen (Fonts, Definitionsdateien, etc.) - für CGI-Skripte allerdings weniger. ;-)

    Für die Skripte selbst gilt diese Einschränkung natürlich nicht - sie greifen ja direkt und nicht via HTTP zu.

    Du könntest also die Routinen dorthin auslagern, und dann von den jeweils Domain-spezifischen und ansnstenleeren CGIs includen lassen.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Juchhu Cybaer, so klappt's!

      Für die Skripte selbst gilt diese Einschränkung
      natürlich nicht - sie greifen ja direkt und
      nicht via HTTP zu.

      Jetzt versteh ich den Fehler.

      Habe nun in einem der separaten cgi-bin ein Script, das per
      "do document-root-pfad/test.pl"
      das eigentlich gewünschte script im zentralen cgi-bin aufruft.
      Geht!

      Besten Dank für die Info.

      Damit kann ich leben.
      Nur eine Frage noch: macht "man" das denn im allgemeinen so, wie ich es jetzt vorhabe? Ich meine, verwaltet ein Perl-Profi einen Server auch so, um alle scripte zentral ansprechen zu können? :O)

      Danke nochmals, Lutz

      1. Moin!

        Nur eine Frage noch: macht "man" das denn im allgemeinen so, wie ich es jetzt vorhabe? Ich meine, verwaltet ein Perl-Profi einen Server auch so, um alle scripte zentral ansprechen zu können? :O)

        Nein, "man" macht es in der Regel nicht so.

        Der Apache kennt sowohl ein "DOCUMENT_ROOT" für eine Domain (das ist das "Hauptverzeichnis", welches du je Domain definiert hast), als auch diverse andere Verzeichnisse, sie sich nicht zwingend innerhalb dieses DOCUMENT_ROOT befinden müssen.

        Die Direktive ScriptAlias beispielsweise verbindet einen URL-Teil mit einem Pfad auf dem Server, der sich aber total außerhalb des Doc-Root befinden kann, und markiert alle Skripte darin als ausführbare CGIs. Wenn man diese Direktive für alle Domains definiert und auf dasselbe Verzeichnis lenkt, hat man genau, was du willst.

        Da du aber keine Einflußmöglichkeit auf diese Direktive hast (man kann sie nur in der Server-Konfiguration setzen, an die du nicht rankommst), fällt das für dich flach.

        - Sven Rautenberg

        1. Hi Sven,

          so klein ist die Online-Welt. :O) Ex-CIS:GERMONEY ...

          Direktive ScriptAlias

          Aha, so müsste das sein.

          Habe eben versucht mein zentrales cgi-bin über diesen Befehl in der .htaccess einzubinden, da allowoverride bei puretec doch gesetzt ist und man IMO ziemlich viel nachkonfigurieren kann.
          Nur scheinbar nicht diese Direktive. Beim Aufruf der Domain erscheint dann sofort ohne jeglichen Script-Aufruf "Error 500". :O(

          Werde mal beim puretec-Support nachhaken.

          Bye, Lutz

          1. Moin!

            so klein ist die Online-Welt. :O) Ex-CIS:GERMONEY ...

            Ah ja, _der_ Lutz also. :)

            Direktive ScriptAlias

            Habe eben versucht mein zentrales cgi-bin über diesen Befehl in der .htaccess einzubinden, da allowoverride bei puretec doch gesetzt ist und man IMO ziemlich viel nachkonfigurieren kann.

            Aber nicht diese Direktive! Das geht wirklich nur in der Server-Konfig-Datei und erfordert bei Änderungen daran zwingend einen Apache-Neustart.

            Nur scheinbar nicht diese Direktive. Beim Aufruf der Domain erscheint dann sofort ohne jeglichen Script-Aufruf "Error 500". :O(

            Weil diese Direktive dort nicht gesetzt werden kann. Das wäre auch gefährlich, denn man kann damit JEDES Verzeichnis nach online mappen, und der Serverinhaber (= Hoster) will sicherlich nicht alles nach Belieben der User online sehen.

            Werde mal beim puretec-Support nachhaken.

            Der Support wird dir allenfalls noch sagen, dass du ggf. die Dateien mit symbolischen Links "duplizieren" kannst. Das ist performanter, als jedes Skript nur indirekt aufzurufen, aber das kann auch fehlschlagen, wenn der Server restriktiv genug eingestellt ist.

            Und außerdem weiß ich nicht, wie man sowas mit FTP-Programmen herstellt. :) Ich bevorzuge in der Tat Server, bei denen ich selbst Herr im Hause bin, also mir mindestens die Serverkonfig wünschen kann, oder sie selbst herstellen. :)

            - Sven Rautenberg