Gary: apache als lokal server

Hallo Leute

Ich wollte mal zur Abwechslung ein Perlprogramm lokal, auf meinem Computer schreiben. Habe Ubuntu drauf. Perl ist schon von Haus aus implementiert.
Ich habe das auch hinbekommen - nur die Ausgabe gefällt mir überhaupt nicht. Das Terminalfenster schränkt meine Ausgabefreiheit extrem ein. Lange Rede kurzer Sinn:

Ich würde doch ganz gerne so wie bisher, über einen Browser die Ausgabe und die Eingabe (CGI) haben.

Laut tipp vom ubuntuusers-Forum wäre ein lokaler Server (apache) die Lösung. den könnte ich dann so wie im Web - quasi simuliertes surfen - ansprechen. Also Perl/Server/Browser alles lokal.

Nun ein paar Fragen:

Wenn ich enen Server installiere, ist das dann sicher, oder kann jeder vom Internet auf meinen PC (z.B. über sog ports)?

Wenn ich das richtig verstanden habe, kann ich dann use cgi oder DBD::CSV ebenfalls ganz normal nutzen wie online (vorausgesetzt die Module sind installiert)?

Mir fällt es leichter eine Webbasierte Ausgabe zu gestalten, als mich mit dem winzig kleinen Terminalfenster herum zu ärgern...

Gruß Gary

PS:Ach ja, wieviel von meinem Betriebssystem kann ich mir zerschießen, wenn ich ein apache installiere?

  1. Hi!

    Nun ein paar Fragen:

    Wenn ich enen Server installiere, ist das dann sicher, oder kann jeder vom Internet auf meinen PC (z.B. über sog ports)?

    Nur, wenn jemand von aussen auf deinen PC kommt. Steckst Du z.B. hinter einem Router mit aktiviertem Portforwarding? Solange Du ne Firewall hast, die nix durchlaesst, kannst Du mit dem Apache machen, was Du willst. Sonst muesstest Du dein Wissen ueber Apacekonfiguration vertiefen und den apache so einstellen, dass er nur auf lokale Anfragen reagiert.

    Wenn ich das richtig verstanden habe, kann ich dann use cgi oder DBD::CSV ebenfalls ganz normal nutzen wie online (vorausgesetzt die Module sind installiert)?

    Ja. Es gibt ja erstmal keinen Unterschied zu deinem Rechner als Server und dem Rechner der bei einem Hoster den Server spielt. Deinen musst Du halt selbst konfigurieren.

    Mir fällt es leichter eine Webbasierte Ausgabe zu gestalten, als mich mit dem winzig kleinen Terminalfenster herum zu ärgern...

    Da bist Du nicht allein.

    PS:Ach ja, wieviel von meinem Betriebssystem kann ich mir zerschießen, wenn ich ein apache installiere?

    Ich wuerd jetzt spontan sagen: Nuescht. Aber die Erfahrung lehrt mich anderes... Also lautet die Antwort: Das kommt auf dich an.

    --
    Ich bin dafuer verantwortlich was ich sage, nicht dafuer, was Du verstehst.
    1. Hallo,

      PS:Ach ja, wieviel von meinem Betriebssystem kann ich mir zerschießen, wenn ich ein apache installiere?
      Ich wuerd jetzt spontan sagen: Nuescht. Aber die Erfahrung lehrt mich anderes... Also lautet die Antwort: Das kommt auf dich an.

      ja, aber wenn man sich unter Ubuntu an die empfohlenen Wege hält, wie ein Paket zu installieren ist, also den Synaptic Paketmanager benutzt, ist das Risiko nahe 0. Das ist natürlich keine Garantie dafür, dass der frisch installierte Apache dann sofort so funktioniert, wie man das haben möchte, insbesondere was die Integration von PHP oder Perl angeht. Da muss man möglicherweise noch Hand anlegen. Das beschränkt sich aber dann auf die Apache-Konfiguration, die sich normalerweise nicht auf das Gesamtsystem auswirkt.

      So long,
       Martin

      --
      Lieber eine Stumme im Bett, als eine Taube auf dem Dach.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hi Martin

        <schämend>Bilder von Webpage nun legal dank rbb</schämend>

        ja, aber wenn man sich unter Ubuntu an die empfohlenen Wege hält, wie ein Paket zu installieren ist, also den Synaptic Paketmanager benutzt, ist das Risiko nahe 0.

        Das denke ich auch.

        Das ist natürlich keine Garantie dafür, dass der frisch installierte Apache dann sofort so funktioniert, wie man das haben möchte, [...]

        Ja, die connection zu perl und die benötigenden Module dürften für ordentlich "Spaß" sorgen... aber erst muss ich noch sehen was Steel zur Sicherheit meint, bevor ich den Indianer installiere.

        Gruß Gary

        1. Hallo,

          <schämend>Bilder von Webpage nun legal dank rbb</schämend>

          Schwamm drüber. Du hast aus Fehlern gelernt, und bist ja anscheinend recht unbeschadet davongekommen.

          aber erst muss ich noch sehen was Steel zur Sicherheit meint, bevor ich den Indianer installiere.

          Ich glaube, ich kann dir auch ungefähr "übersetzen", was er meint (falls er gerade mal zum Abendessen verschwunden ist).

          Steckst Du z.B. hinter einem Router mit aktiviertem Portforwarding? Solange Du ne Firewall hast, die nix durchlaesst, kannst Du mit dem Apache machen, was Du willst.

          Auch wenn ein gewisses Misstrauen natürlich nie falsch ist: Üblicherweise sind die DSL-Router so gestrickt, dass sie von außen kommende Datenpakete nur dann nach innen routen, wenn sie entweder eine Antwort auf eine Anfrage eines internen Hosts sind, oder wenn in der Routerkonfiguration explizit eine Regel hinterlegt ist, die Pakete anhand bestimmter Merkmale an einen Rechner im internen Netz weiterreicht. Hat man beispielsweise auf einem Rechner mit der internen IP-Adresse 192.168.178.3 einen Webserver und *möchte*, dass der von außen erreichbar ist, dann würde man den Router anweisen, alle ankommenden Pakete mit Zielport 80 (HTTP) an 192.168.178.3 zu routen. Hat er keine derartige Regel, weist er das ankommende Paket normalerweise ab.

          Sonst muesstest Du dein Wissen ueber Apacekonfiguration vertiefen und den apache so einstellen, dass er nur auf lokale Anfragen reagiert.

          Dazu solltest du ihn mit der Allow-Direktive anweisen, nur Anfragen von Rechnern aus dem eigenen Netz zu akzeptieren.

          So long,
           Martin

          --
          Die letzten Worte des Privatdetektivs:
          Jetzt wird es mir klar: SIE sind der Mörder!
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Hi!

            Sonst muesstest Du dein Wissen ueber Apacekonfiguration vertiefen und den apache so einstellen, dass er nur auf lokale Anfragen reagiert.
            Dazu solltest du ihn mit der Allow-Direktive anweisen, nur Anfragen von Rechnern aus dem eigenen Netz zu akzeptieren.

            Auch ein Router hat ein Bein im eigenen Netz. Somit kommen Anfragen, die er weiterleitet auch aus selbigem. Da hilft dann ein Allow/Deny nur, wenn seine IP-Adresse ausgeschlossen wird. Allerdings wird mit Allow/Deny die Anfrage grundsätzlich akzeptiert und beantwortet, wenn auch nur mit einem Error-Dokument.

            Wenn der Apache nur lokal auf dem selben Rechner erreichbar sein soll, wäre eine Listen-Direktive auf 127.0.0.1:80 besser, dann öffnet er gleich gar keinen Port nach außen hin.

            Lo!

            1. Hallo,

              Auch ein Router hat ein Bein im eigenen Netz. Somit kommen Anfragen, die er weiterleitet auch aus selbigem. Da hilft dann ein Allow/Deny nur, wenn seine IP-Adresse ausgeschlossen wird.

              das sehe ich anders - Anfragen von außerhalb kommen auch mit der öffentlichen IP-Adresse als "From" beim Zielhost an, nicht mit der internen IP-Adresse des Routers. Die taucht nur dann auf, wenn der Router aufgrund irgendeiner internen Funktion selbst der Urheber eines Requests ist.

              Wenn der Apache nur lokal auf dem selben Rechner erreichbar sein soll, wäre eine Listen-Direktive auf 127.0.0.1:80 besser, dann öffnet er gleich gar keinen Port nach außen hin.

              Ja, aber dann hätten andere Rechner im internen Netz auch keinen Zugriff.

              Ciao,
               Martin

              --
              Männer sind ungerecht: Sie sehen immer nur den Baum, den eine Frau mit dem Auto gerammt hat. Aber die vielen Bäume, die sie nicht einmal gestreift hat, sehen sie nicht.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hi!

                Auch ein Router hat ein Bein im eigenen Netz. Somit kommen Anfragen, die er weiterleitet auch aus selbigem. Da hilft dann ein Allow/Deny nur, wenn seine IP-Adresse ausgeschlossen wird.
                das sehe ich anders - Anfragen von außerhalb kommen auch mit der öffentlichen IP-Adresse als "From" beim Zielhost an, nicht mit der internen IP-Adresse des Routers. Die taucht nur dann auf, wenn der Router aufgrund irgendeiner internen Funktion selbst der Urheber eines Requests ist.

                Es kommt ja nicht darauf an, wie du das siehst :-), sondern wie der Router es macht. Und ähm ja, ... meiner zumindest teilt deine Ansicht. Da hatte ich doch jetzt gedacht, der NATet das. Aber nein, im Access-Log taucht die externe IP auf.

                Wenn der Apache nur lokal auf dem selben Rechner erreichbar sein soll, wäre eine Listen-Direktive auf 127.0.0.1:80 besser, dann öffnet er gleich gar keinen Port nach außen hin.
                Ja, aber dann hätten andere Rechner im internen Netz auch keinen Zugriff.

                Stimmt, jedoch sprach - soweit ich das richtig mitverfolgt habe - der OP nur von einem Rechner.

                Lo!

      2. Hi Martin,

        Synaptic verwendet und das geerntet:

        Hi nochmal

        Ich habe versucht aus den Paketquellen apache2 zu installieren und bekam folgende Mitteilung:

        W: http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2-utils_2.2.11-2ubuntu2.5_amd64.deb konnte nicht heruntergeladen werden 404 Not Found [IP: 91.189.88.37 80]

        W: http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2.2-common_2.2.11-2ubuntu2.5_amd64.deb konnte nicht heruntergeladen werden 404 Not Found [IP: 91.189.88.37 80]

        W: http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2-mpm-worker_2.2.11-2ubuntu2.5_amd64.deb konnte nicht heruntergeladen werden 404 Not Found [IP: 91.189.88.37 80]

        W: http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2_2.2.11-2ubuntu2.5_all.deb konnte nicht heruntergeladen werden 404 Not Found [IP: 91.189.88.37 80]

        Funktioniert jetzt trozdem alles oder muss ich mir Sorgen machen. Scheint mein Rechner mit dem "Phenon X3 64 AMD Chip" ist entweder zu neu oder zu selten? Wäre auch zufrieden wenn der apache nur im 32Bit-Modus läuft. Was mache ich jetzt am schlausten?

        Gruß Gary

        1. Zwischenbericht:

          1)Apache ist fehlerfrei installiert *yes*

          2)DBI/DBD::CSV Modul korrekt aufgespielt *yes*

          3)CGI nachinstalliert *yes*

          4)SSI Fähigkeiten nachinstalliert *yes*

          So. Nach Martin gibt es den Befehl:
          ----------------------------------
          Allow from 192.168.1.104
          ----------------------------------

          Nach der Apachewebseite:
          ----------------------------------
          Befindet sich der Rechner mit dem Server direkt im Internet - also nicht hinter einem Router - oder sollen andere Rechner aus dem lokalen Netzwerk nicht auf den Webserver zugreifen, so kann man den Zugriff über die /etc/apache2/ports.conf steuern. Trägt man z.B. anstelle von

          listen 80

          die Zeile

          listen 127.0.0.1:80

          ein und startet den Webserver neu, so kann man den Webserver nur noch lokal ansprechen.
          ----------------------------------
          Hier brauche ich Übersetzungshilfe:
          Diese IP 127.0.0.1:80 ist das irgend eine beliebige, oder muss das die IP des PC sein, das exlusiv den Apachen nutzen darf. Wenn ja, wie bekomme ich denn meine "interne" IP überhaupt heraus?

          Gruß Gary

          1. Bounjoun Gary,

            Diese IP 127.0.0.1:80 ist das irgend eine beliebige,

            Das eine IP, die gerne gehackt wird: http://www.lustigestories.de/stories/irc_hacker.php...

            oder muss das die IP des PC sein, das exlusiv den Apachen nutzen darf.

            Muss nicht, kann nicht, ist.

            Es IST die IP vom localhost. :80 ist der Port.

            Wenn ja, wie bekomme ich denn meine "interne" IP überhaupt heraus?

            Bei Windows gibt es ipconfig /all. Bei Ubuntusen und Linusen weiß ich nicht, was es da gibt...

            Adiou.

            P.S.: Liest Du in deinem Perl-Fred nicht mehr?

            1. Bonjour aussi Jean-Max

              Muss nicht, kann nicht, ist.

              ?

              Es IST die IP vom localhost. :80 ist der Port.

              Ist die bei jedem gleich?

              Wenn ja, wie bekomme ich denn meine "interne" IP überhaupt heraus?

              Die brauche ich wahrscheinlich, wenn ich den Apache nur lokal verwenden will?

              P.S.: Liest Du in deinem Perl-Fred nicht mehr?

              Doch, doch. Nur momentan hab ich ein anderes Problem. Ich kann Apache starten, stoppen, restarten - habe ich alles gerade gelernt. Nur mekert die Konsole wegen eines fehlendem Hostnamen. Die Lösung habe ich auch schon gefunden. Ich muss eine zusätzliche Eintragung in der Datei /etc/apache2/apache2.conf machen. Dort mus ich  "ServerName localhost" eingeben. Vielleicht kann man ja auch einen beliebigen anderen Namen eingeben....

              wie auch immer - ich komm nicht rein in diese verdxxxxx Datei. Er mekert das ich nicht besitzer bin. Die Rechte hätte ein "root"...

              Und das obwohl ich den sudo Code kenne . Aber wo kann ich den das Passwort eingeben?

              Ich krieg noch die Kriese hier...

              Gruß Gary

              PS.:So sicher ist Ubuntu - Nicht mal der Eigentümer des PC kommt in den Ordner/Datei *g*

              1. Hallo,

                Es IST die IP vom localhost.
                Ist die bei jedem gleich?

                ja, 127.x.y.z oder korrekt notiert 127.0.0.0/8 ist per definitionem der IP-Adressbereich des Loopback-Device, das den Rechner mit sich selbst verbindet.

                Nur mekert die Konsole wegen eines fehlendem Hostnamen. Die Lösung habe ich auch schon gefunden. Ich muss eine zusätzliche Eintragung in der Datei /etc/apache2/apache2.conf machen. Dort mus ich  "ServerName localhost" eingeben. Vielleicht kann man ja auch einen beliebigen anderen Namen eingeben....

                Du kannst in der Tat einen beliebigen Namen eingeben, solange du nicht namenbasierte virtuelle Hosts verwendest.

                wie auch immer - ich komm nicht rein in diese verdxxxxx Datei. Er mekert das ich nicht besitzer bin. Die Rechte hätte ein "root"...

                Das ist richtig. Du musst die Konfigurationsdatei als root bearbeiten. Unter den typischen Ubuntu-Bedingungen also:

                sudo mousepad /etc/apache2/apache2.conf

                Dann fragt Ubuntu nach dem Passwort für administrative Aufgaben, und du bist "drin".

                PS.:So sicher ist Ubuntu - Nicht mal der Eigentümer des PC kommt in den Ordner/Datei *g*

                Ein bisschen Grundlagenwissen sollte man schon haben, wenn man ein Linux-basiertes System verwenden und administrieren will.

                So long,
                 Martin

                --
                Der Gast geht solange zum Tresen, bis er bricht.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Hi Martin

                  ja, 127.x.y.z oder korrekt notiert 127.0.0.0/8 ist per definitionem der IP-Adressbereich des Loopback-Device, das den Rechner mit sich selbst verbindet.

                  Also von 127.0.0.0 bis 127.0.0.8 ?

                  Du kannst in der Tat einen beliebigen Namen eingeben, solange du nicht namenbasierte virtuelle Hosts verwendest.

                  Gut , das probiere ich gleich mal aus!

                  Das ist richtig. Du musst die Konfigurationsdatei als root bearbeiten. Unter den typischen Ubuntu-Bedingungen also:

                  Ächts.. das ging so: sudo nano /etc/apache2/apache2.conf

                  sudo mousepad /etc/apache2/apache2.conf

                  Mousepad? Kenn ich nicht. ob ich das auch mal probieren soll? *g*

                  Da ich vorhin bereits localhost als Name eingegeben hatte habe ich nach dem anwerfen von apache (sudo /etc/init.d/apache2 start) in die Browserurl das eingegeben: http://localhost/.

                  Das ergab die Ausgabe: "It Works" im Browserfenster.

                  Manman... jetzt noch das listen einstellen.

                  Bleibt noch folgendes zu ergründen:

                  Wo platziere ich das Perlscript lokal am besten (Online war es immer cgi-bin)?

                  Wie gebe ich die url's an? Also wenn eine HTML-Seite via execute ein Perlscript aktivieren will?

                  Ich merke ich muss umdenken. Online über den "gemieteten" Server war das alles einfacher...

                  Gruß Gary

                  1. Hi,

                    ja, 127.x.y.z oder korrekt notiert 127.0.0.0/8 ist per definitionem der IP-Adressbereich des Loopback-Device, das den Rechner mit sich selbst verbindet.
                    Also von 127.0.0.0 bis 127.0.0.8 ?

                    nein, von 127.0.0.1 bis 127.255.255.254. Also alle IP-Adressen mit 127 im ersten Byte, ausgenommen die Netzwerk- und die Broadcast-Adresse.

                    Du musst die Konfigurationsdatei als root bearbeiten. Unter den typischen Ubuntu-Bedingungen also:
                    Ächts.. das ging so: sudo nano /etc/apache2/apache2.conf

                    Wenn du auf Konsolen-Anwendungen stehst ... ;-)

                    sudo mousepad /etc/apache2/apache2.conf
                    Mousepad? Kenn ich nicht. ob ich das auch mal probieren soll? *g*

                    Das ist der Standard-GUI-Editor unter Linux.

                    Wo platziere ich das Perlscript lokal am besten (Online war es immer cgi-bin)?

                    Lokal wird's vermutlich auch /cgi-bin sein (bezogen auf Document Root), aber du kannst das auf jedes beliebige Verzeichnis umbiegen.

                    Wie gebe ich die url's an? Also wenn eine HTML-Seite via execute ein Perlscript aktivieren will?
                    Ich merke ich muss umdenken. Online über den "gemieteten" Server war das alles einfacher...

                    Geht mir gerade umgekehrt. Ich find's lokal alles viel einfacher, weil ich da genau weiß, in welchen Verzeichnis alle nötigen Dateien liegen, und weil ich direkt drankomme.

                    Ciao,
                     Martin

                    --
                    Dieser Satz wurde in mühsamer Kleinstarbeit aus einzelnen Wörtern zusammengesetzt.
                      (Hopsel)
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. Hallo,

                      Mousepad? Kenn ich nicht. ob ich das auch mal probieren soll? *g*
                      Das ist der Standard-GUI-Editor unter Linux.

                      'tschuldigung, natürlich unter Ubuntu.

                      So long,
                       Martin

                      --
                      Vater Staat bringt uns noch alle unter Mutter Erde.
                      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    2. Morgen Martin, Moregn alle ;-)

                      Wo platziere ich das Perlscript lokal am besten (Online war es immer cgi-bin)?

                      Lokal wird's vermutlich auch /cgi-bin sein (bezogen auf Document Root), aber du kannst das auf jedes beliebige Verzeichnis umbiegen.

                      Zwischenstand II:
                      -Apache läuft nun automatisch bei Systemstart.
                      -Die IP-Geschichte mit listen ist eingestellt.
                      -Unter usr/www sind die Html-Dateien abgelegt. Rechte freigegeben (0755)
                      -Ein HTML-Document mit dem namen Test habe ich doer abgelegt.
                      -Wenn ich in die UrL: "http://lokalhost/test.html" eingebe, erhalte ich auch die Browserausgabe.

                      Das mit dem cgi-bin -Verzeichnis check ich noch nicht ganz. Soll ich einfach einen Ordner cgi-bin anlegen? Und was meinst du mit bezogen auf doc-root?

                      Grüe Gary

                      --
                      Morgenstund hat Gold im Mund *so'n blödsinn-grins*
                       
                      1. Moin,

                        -Apache läuft nun automatisch bei Systemstart.
                        -Die IP-Geschichte mit listen ist eingestellt.
                        -Unter usr/www sind die Html-Dateien abgelegt. Rechte freigegeben (0755)
                        -Ein HTML-Document mit dem namen Test habe ich doer abgelegt.
                        -Wenn ich in die UrL: "http://lokalhost/test.html" eingebe, erhalte ich auch die Browserausgabe.

                        das klingt so, als wäre schon fast alles so konfiguriert, wie es sein soll.

                        Lokal wird's vermutlich auch /cgi-bin sein (bezogen auf Document Root), aber du kannst das auf jedes beliebige Verzeichnis umbiegen.
                        Das mit dem cgi-bin -Verzeichnis check ich noch nicht ganz. Soll ich einfach einen Ordner cgi-bin anlegen?

                        Nein. Es ist eine alte Konvention, dass CGI-Programme in /cgi-bin liegen. Dieses Verzeichnis muss aber nicht physisch existieren. In der Apache-Defaultkonfiguration wird es AFAIK mit der Direktive
                        ScriptAlias auf ein beliebiges anderes Verzeichnis abgebildet. Mit einem Directory-Container kann man nun innerhalb dieses Verzeichnisses mit AddType bzw. AddHandler bestimmte Handler für bestimmte Dateitypen (oder konkret für ausgewählte Dateien) festlegen. Wie das im einzelnen geht, kann ich dir aber auch nicht exakt beschreiben - vor allem für Perl habe ich das noch nie gemacht.

                        Und was meinst du mit bezogen auf doc-root?

                        Damit meine ich, dass das tatsächliche Verzeichnis natürlich je nach Installation unterschiedlich sein kann, aber relativ zum Document Root in der Regel immer an derselben Stelle liegt.

                        Morgenstund hat Gold im Mund *so'n blödsinn-grins*

                        Das ist auch ein Überlieferungsfehler. Es muss heißen: Morgenstund' ist ungesund. ;-)

                        Schönes Wochenende,
                         Martin

                        --
                        Niemand lebt allein von seinen Träumen.
                        Aber wer träumt, lebt noch.
                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                        1. Hi Martin

                          das klingt so, als wäre schon fast alles so konfiguriert, wie es sein soll.

                          Ja fast...

                          Nein. Es ist eine alte Konvention, dass CGI-Programme in /cgi-bin liegen. Dieses Verzeichnis muss aber nicht physisch existieren.[...]

                          Ich habe in /usr/lib/cgi-bin so ein cgi-Dingens gefunden. Habe dieses Verzeichniss auch freigegeben (Ich bin besitzer) und die chmod auf 0755 eingestellt. Dort liegt jetzt ein MiniPerlProg.pl drin.

                          Was noch nicht läuft ist, wenn ich in das /var/www Verzeichnis, das für Webseiten unter lokalem Apache vorgesehen ist, eine shtml-Datei hineilege und diese aufrufe, bietet er mir diese Page nur als download an - führt sie aber nicht aus - auch kein ssi-Execute #<---exec... usw..-->

                          Morgenstund hat Gold im Mund *so'n blödsinn-grins*

                          Das ist auch ein Überlieferungsfehler. Es muss heißen: Morgenstund' ist ungesund. ;-)

                          Wie jetzt? Früh aufstehen soll gesund sein? Wobei ich habe schon mal was von "Frühschoppen" gehört - das ist wohl eher gesund ;_)

                          Gruß Gary

                          1. Hallo,

                            Was noch nicht läuft ist, wenn ich in das /var/www Verzeichnis, das für Webseiten unter lokalem Apache vorgesehen ist, eine shtml-Datei hineilege und diese aufrufe, bietet er mir diese Page nur als download an - führt sie aber nicht aus - auch kein ssi-Execute #<---exec... usw..-->

                            verstehe, da bin ich aber aus dem Stand auch überfragt und müsste erst anfangen, Manuals zu lesen.

                            Morgenstund hat Gold im Mund *so'n blödsinn-grins*
                            Das ist auch ein Überlieferungsfehler. Es muss heißen: Morgenstund' ist ungesund. ;-)
                            Wie jetzt? Früh aufstehen soll gesund sein?

                            Na eben nicht. Steht doch da: "_un_gesund".

                            Wobei ich habe schon mal was von "Frühschoppen" gehört - das ist wohl eher gesund ;_)

                            Kommt drauf an. Frühschoppen ist doch, wenn die Frau schon früh beim Aufstehen sagt: "Heute ist SSV, da muss ich sofort shoppen gehen!"
                            Oder hab ich das falsch verstanden? :-)

                            Ciao,
                             Martin

                            --
                            Wenn du beim Kochen etwas heißes Wasser übrig hast, friere es ein.
                            Heißes Wasser kann man immer gebrauchen.
                            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                            1. Hello,

                              Was noch nicht läuft ist, wenn ich in das /var/www Verzeichnis, das für Webseiten unter lokalem Apache vorgesehen ist, eine shtml-Datei hineilege und diese aufrufe, bietet er mir diese Page nur als download an - führt sie aber nicht aus - auch kein ssi-Execute #<---exec... usw..-->

                              Das muss auch gesondert aktiviert werden. Es muss das passende Modul geladen sein.

                              Version 1.3    http://httpd.apache.org/docs/1.3/misc/FAQ.html#ssi-part-i
                              Version 2.2 ff http://httpd.apache.org/docs/current/mod/mod_include.html

                              Liebe Grüße aus dem schönen Oberharz

                              Tom vom Berg

                              --
                               ☻_
                              /▌
                              / \ Nur selber lernen macht schlau
                              http://bergpost.annerschbarrich.de
                              1. Hi Tom

                                Das muss auch gesondert aktiviert werden. Es muss das passende Modul geladen sein.

                                CGI und SSI Module habe ich glaube ich bei der installation des apachen separat hinzu gefügt. Über dein "gesondert aktiviert" werden muss ich mir noch vertiefende Gedanken machen :-)

                                Version 1.3    http://httpd.apache.org/docs/1.3/misc/FAQ.html#ssi-part-i
                                Version 2.2 ff http://httpd.apache.org/docs/current/mod/mod_include.html

                                Guter Link!

                                Gruss zurück (fremder Rechner/kein Schraf-"S"-bin aber bald wieder daheim)

                                Gary

                                PS: Sagte ich nicht zu Begin mit den Einstellungen für Perl,cgi und ssi werde ich noch viel Spass haben... - hab ich es nicht gesagt? ;-)

                          2. Abend zusammen...

                            SSI läuft jetzt!

                            Wenn es interessiert oder wer zukünftig eine narrensichere erklärung will:

                            SSI-Installation für Noobs.

                            Hoffentlich hilfte es späteren Generationen!

                            Gruß Gary

                            1. Hi @all

                              CGI will immer noch nicht ganz!

                              In Html wird die Zeile <!--#exec cgi="/usr/lib/cgi-bin/MiniPerlProg.pl" -->  erkannt und aus dem Quellcode bei der Browserausgabe entfernt.

                              ---------------------------------------------------------------------
                              Der Browser bring die Meldung:
                              "an error occurred while processing this directive"

                              ---------------------------------------------------------------------
                              Im Verzeichnis /etc/apache2/sites-available steht das hier:

                              <VirtualHost *:80>
                              ServerAdmin webmaster@localhost

                              DocumentRoot /var/www  
                              <Directory />  
                              	Options FollowSymLinks  
                              	AllowOverride None  
                              </Directory>  
                              <Directory /var/www/>  
                              	Options Indexes FollowSymLinks MultiViews +Includes  
                              	AllowOverride None  
                              	Order allow,deny  
                              	allow from all  
                                      AddType text/html .shtml  
                                      AddOutputFilter INCLUDES .shtml  
                              

                              </Directory>

                              ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/  
                              <Directory "/usr/lib/cgi-bin">  
                              	AllowOverride None  
                              	Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch  
                              	Order allow,deny  
                              	Allow from all  
                              </Directory>  
                              
                              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  
                              

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

                              </VirtualHost>
                              ---------------------------------------------------------------------

                              Noch irgend eine Idee, wo ich noch Hand anlegen muss?
                              Oder Habe ich einfach die Perl.pl's im falschen verzeichnis?

                              Ratloser Gruß

                              Gary

                              1. Schonen Sontag

                                Nun habe ich dieses kleinen Html-Codeschnipsel in /var/www liegen:
                                --------------------------------------
                                <html>

                                <head>
                                <title>SSI Test Page</title>
                                </head>

                                <body>
                                <!--#echo var="DATE_LOCAL" -->
                                </body>

                                </html>
                                --------------------------------------

                                Wenn ich im Browser http://localhost/ssi-test1.shtml eingebe wird dies angezeigt:
                                --------------------------------------
                                Sunday, 15-Aug-2010 08:35:57 CEST
                                --------------------------------------

                                Laut Aussage der Internetseite die das "How To" erklären, sollte SSI bei dieser Ausgabe funktionieren und 100% richtig installiert sein.

                                Also kann es doch rein Theoretisch nur noch an der cgi-Umsetzung oder der Perlumsetzung oder der exec-Befehlsausführung liegen...

                                Ähm, ja es sind einige oder - für meinen Geschmack ein paar "oder" zuviel.

                                Gruß Gary

                              2. Hello,

                                CGI will immer noch nicht ganz!

                                In Html wird die Zeile <!--#exec cgi="/usr/lib/cgi-bin/MiniPerlProg.pl" -->  erkannt und aus dem Quellcode bei der Browserausgabe entfernt.


                                Der Browser bring die Meldung:
                                "an error occurred while processing this directive"


                                ganz kann ich Dir jetzt noch nicht folgen.
                                Geht es Dir um die Priorität von CGI (Perl) und SSI?

                                Hast Du denn schon versucht, ein Perlscript ausführen zu lassen, ohne gleichzeitig SSI zu verwenden?

                                Liebe Grüße aus dem schönen Oberharz

                                Tom vom Berg

                                --
                                 ☻_
                                /▌
                                / \ Nur selber lernen macht schlau
                                http://bergpost.annerschbarrich.de
                                1. Morgen Tom

                                  ganz kann ich Dir jetzt noch nicht folgen.
                                  Geht es Dir um die Priorität von CGI (Perl) und SSI?

                                  Ich hab das immer so gehabt. Eine Webseite geschrieben, und irgebdwo im Quellcode kommt dann <!--#exec cgi="/cgi-bin/MiniPerlProg.pl" --> und perl übernimmt. Auf dem Desktop läuft ein standalone Perlprog im Terminalfenster. ALso Perl ist prinzipiell möglich.

                                  Hast Du denn schon versucht, ein Perlscript ausführen zu lassen, ohne gleichzeitig SSI zu verwenden?

                                  Nein, habe ich noch nicht. Aber nach der Apache-Website funktioniert mein ssi ja. Dort ist auch die Rede von einem mod_cgi. Ich weis aber nicht ob ich es drauf habe, und wie man das installiert. Und dann kommt noch dazu, daß man, wenn es den drauf ist, auch noch dazuladen oder starten muß.

                                  Der empfohlene Befehl für die Konsole:
                                  ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/

                                  scheitert an der Fehlermeldung:
                                  command not found

                                  Weis der himmel was dieses Alias sein soll (irgendwas mit einer beliebigen Directory für die cgi-Ausführung/cgi von anderen orten erlauben oder so...???)

                                  Gruß Gary

                                  Liebe Grüße aus dem schönen Oberharz

                                  Tom vom Berg

                                  1. Hello,

                                    Nein, habe ich noch nicht. Aber nach der Apache-Website funktioniert mein ssi ja. Dort ist auch die Rede von einem mod_cgi. Ich weis aber nicht ob ich es drauf habe, und wie man das installiert. Und dann kommt noch dazu, daß man, wenn es den drauf ist, auch noch dazuladen oder starten muß.

                                    Ubuntu kennt doch die Installation mit "apt-get install" oder?

                                    Such Dir auf der Ubuntu-Seite den Namen des passenden Installationsmoduls und versuche es dann mit agt-get. Infos zu apt-get findest Du mit "man apt-get".

                                    Liebe Grüße aus dem schönen Oberharz

                                    Tom vom Berg

                                    --
                                     ☻_
                                    /▌
                                    / \ Nur selber lernen macht schlau
                                    http://bergpost.annerschbarrich.de
                                    1. Hello,

                                      Nein, habe ich noch nicht. Aber nach der Apache-Website funktioniert mein ssi ja. Dort ist auch die Rede von einem mod_cgi. Ich weis aber nicht ob ich es drauf habe, und wie man das installiert. Und dann kommt noch dazu, daß man, wenn es den drauf ist, auch noch dazuladen oder starten muß.

                                      Ubuntu kennt doch die Installation mit "apt-get install" oder?

                                      Such Dir auf der Ubuntu-Seite den Namen des passenden Installationsmoduls und versuche es dann mit agt-get. Infos zu apt-get findest Du mit "man apt-get".

                                      http://packages.ubuntu.com/search?searchon=sourcenames&keywords=CGI

                                      Da solltest Du fündig werden.

                                      Liebe Grüße aus dem schönen Oberharz

                                      Tom vom Berg

                                      --
                                       ☻_
                                      /▌
                                      / \ Nur selber lernen macht schlau
                                      http://bergpost.annerschbarrich.de
                                      1. Hi Tom

                                        Danke für den Link.

                                        Dort sind jede Menge cgi-Module. Ich such aber ein ganz normales Standartmodul. Ich wüsste ja noch nicht einmal welches von den dort angebotenen das richtige ist.

                                        Habe noch mal alle Infos zusammen getragen und im Ubuntu-Forum platziert. Wenn dort bei den Ubuntu-Spezies keiner durchblickt, sehe ich für den Apachen schwarz - dann muss er eben wieder runter und ich muss mir für das lokale Perl-Programm ein anderes Ausgabefenster/Medium suchen - anstelle meines geliebten Browserfensters.

                                        So Long

                                        Gary

                                  2. Bounjoun Gary,

                                    Der empfohlene Befehl für die Konsole:
                                    ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/

                                    Diese Zeile kommt in die httpd.conf und/oder in die jeweilige VH*-Blöcke der httpd-vhosts.´conf:

                                        NameVirtualHost *:80  
                                      
                                        <VirtualHost *:80>  
                                            ServerName atomic-eggs.test  
                                            ServerAlias www.atomic-eggs.test  
                                            ServerAdmin simplemaster@example.org  
                                            DocumentRoot "//RECHNER2/Dateien/webs/aec"  
                                          <Directory "//RECHNER2/Dateien/webs/aec/">  
                                            Order allow,deny  
                                            Allow from all  
                                            AllowOverride All  
                                            Options +Includes +Indexes    # hast Du das hier auch (+Includes)???  
                                          </Directory>  
                                            ScriptAlias /cgi-bin/ "//RECHNER2/Dateien/webs/aec/cgi-bin/"  
                                        </VirtualHost>  
                                    
                                    

                                    VH steht hier nicht für die Hochschulen des Volkes ;) - Virtual Hosts sind gemeint.

                                    Adiou.

                                    1. Hi Jean Max

                                      System Ubuntu 9.04 Jaunty Jackalope

                                      -------------------------------------------------------
                                      Pfad vom Dateisystem (unterste Ebene):
                                      /var/www/ ->hier liegen standartmäßig die Webdocumente also .html und shtml.

                                      -------------------------------------------------------
                                      Pfad vom Dateisystem (unterste Ebene):
                                      /usr/lib/cgi-bin ->hier liegt ein Test-Perl-Prog drin (MiniPerlProg.pl

                                      -------------------------------------------------------
                                      Pfad vom Dateisystem (unterste Ebene):
                                      /usr/etc/apache2/

                                      Hier liegen die Dateien:
                                      httpd.conf
                                      apache.conf
                                      ports.conf
                                      envvars

                                      Und die Ordner:
                                      mods-availabel
                                      mods-enabled
                                      sites-available
                                      sites-enabled
                                      conf.d
                                      -------------------------------------------------------

                                      Im Ordner sites-enabled gibt es die Datei 000-default und der Inhalt sieht so aus:

                                      <VirtualHost *:80>
                                      ServerAdmin webmaster@localhost

                                      DocumentRoot /var/www  
                                      <Directory />  
                                      	Options FollowSymLinks  
                                      	AllowOverride None  
                                      </Directory>  
                                      <Directory /var/www/>  
                                      	Options Indexes FollowSymLinks MultiViews +Includes  
                                      	AllowOverride None  
                                      	Order allow,deny  
                                      	allow from all  
                                              AddType text/html .shtml  
                                              AddOutputFilter INCLUDES .shtml  
                                      

                                      </Directory>

                                      ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/  
                                      <Directory "/usr/lib/cgi-bin">  
                                      	AllowOverride None  
                                      	Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch  
                                      	Order allow,deny  
                                      	Allow from all  
                                      

                                      AddHandler cgi-script .cgi .pl
                                              </Directory>

                                      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  
                                      

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

                                      </VirtualHost>

                                      Hilft dies weiter? Mir nicht :-(

                                      Was soll diese Zeile:
                                      ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

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

                                      Gruß Gary

                                      1. Bounjoun Gary,

                                        Zunächst: Ich kenne mich mit Linux und seinen Derivaten nicht aus und lehne es mittlerweile aus Prinzip aus. Darüber möchte ich aber keine erneute ellenlange Diskussion à la diesen Thread: http://forum.de.selfhtml.org/archiv/2008/12/t180188/#m1189840 vom Zaun brechen.

                                        Die Linuxer sollen mit ihrem Zeugs glücklich sein.

                                        Von daher sind die Tipps, die ich Dir gegeben habe, vor allem, was die Systempfade angeht, auf Windows getrimmt, lassen sich sicher ohne großen Computerwissen auf Linux und seine et-caetera-Verzeichnisse umbiegen.

                                        Der Apache ist aber der Apache, befolgt seine eigenen Regeln und die gelten unter Windows genauso als unter Linux.

                                        Der Apache lädt Module, die in der httpd.conf angegeben sind - oder nicht. Ich habe XAMPP für Windows, komme nach einigen Startschwierigkeiten (suche im Forum danach) damit klar und könnte auf jeden Windows-System es installiren.

                                        Was Du bei Deiner Ubuntu-Umgebung noch brauchst, kann ich nicht sagen, sollte es Linux-Spezifisch sein, aber sonst ist alles Apache-mäßig, denke ich, und so kannst Du im Forumsarchiv sicher genug Informationsquelle zu Deinen Fragen finden. Ich hatte Anfang 2007 (oder war das 2008) bez. meines eigenes Gästebuch einen ziemlich langen Apache-Thread initiiert, wo sich Struppi sehr viel engagiert hatte (danke Struppi an dieser Stelle) aber auch viele anderen (auch hier danke!).

                                        Was soll diese Zeile:
                                        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

                                        Hiermit legst Du fest, wo das Verzeichnis für cgi-Skripte zu finden sein soll. Ist aber nicht relevant, wenn Du Deine Skripte als .pl abspeicherst. Ich habe die Zeile in den VH-Konfigurationen immer drin, kann aber meine Perl-Skripte von jedem Verzeichnis aus aufrufen.

                                        Adiou.

                                        1. Morgen Jean-Max

                                          Gestern Abend war ich so gefrustet, daß ich alles wieder deinstalliert habe. Ich hoffe ich habe allen ordnern wieder ihre ursprünglichen rechte gegeben. (Unter Ubuntu kannst du Besitzer,Gruppen und Allen diverse Rechte vergeben).

                                          Ich überlege gerade ob ich es nochmals mit Apache und Perl versuchen soll, oder nicht. Für die Kombination _L_inux,_A_pache,_M_ySql und _P_HP (Kurz LAMP) gibt es viele gut dokumentierte Anleitungen im Netz. Dann müsste ich aber bei PHP von Null anfangen. Die Frage ist aber ob PHP für den Datenaustauch auf einen Webbrowser nicht auch CGI verwendet? Wenn ja bin ich soweit als zuvor!

                                          Danke trotzdem für eure Hilfe.

                                          Gruß Gary

                                          1. Bounjoun Gary,

                                            Ich überlege gerade ob ich es nochmals mit Apache und Perl versuchen soll, oder nicht. Für die Kombination _L_inux,_A_pache,_M_ySql und _P_HP (Kurz LAMP) gibt es viele gut dokumentierte Anleitungen im Netz. Dann müsste ich aber bei PHP von Null anfangen. Die Frage ist aber ob PHP für den Datenaustauch auf einen Webbrowser nicht auch CGI verwendet? Wenn ja bin ich soweit als zuvor!

                                            Du kannst LAMP installiefen und weiter schauen, dass Deine Perl-Skripte laufen, wohl standalone als auch über SSI.

                                            PHP brauchst Du bei der Sache nicht, oder möchtest Du es auch dazu lernen? Um zu wissen, ob PHP läuft, leg irgendwo auf Deinem lokalen Webspace eine Datei info.php mit folgendem Inhalt:

                                            <?php  
                                            	phpinfo();  
                                            ?>
                                            

                                            Diese Datei liefert auch eine Menge Daten über das System.

                                            Adiou.

                                            1. Hi Jean-Max

                                              Du kannst LAMP installiefen und weiter schauen, dass Deine Perl-Skripte laufen, wohl standalone als auch über SSI.

                                              Sorry, habe mich zu ungenau ausgedrückt:

                                              Auf meinem gemieteten Webspace (extern ) läuft alles - auch php!

                                              Ich wollte um ein PerlProgramm zu schreiben, das seine Ausgabe auf ein Browserprogramm ausgibt, mir sowas lokal auf meinem Computer einrichten. Also Apache als localhost. Damit ich offline Testen und programmieren kann. Perl läuft auf meinem Computer einwandfrei. Auch den Apachen hatte ich gut installiert. Eine SSI-Funktion in einer Webseite wurde ebenfalls vom localhost erkannt. Nur das Perlprogram war es eben, das über den Aufruf #<---cgi:"exec/blsbls---> nicht starten wollte.

                                              Problem beim Testen (lokal) ist einfach, daß es zu viele lose Enden gibt, die da reinspielen können:

                                              Pfade richtig?
                                              Perlcode Fehlerfrei?
                                              CGI-Fähigkeit aufgespielt und aktiviert?
                                              SSI-Fähigkeit aufgespielt und aktiviert?
                                              Die Rechte richtig vergeben? Für die Richtigen Ordner/Dateien?
                                              Dateiendungen richtig eingestellt (Unterscheidung .html .shtml)?
                                              Perlcodeausführung nach Dateiendung freigeschaltet .pl?

                                              Und alle die dienge, an die ich noch gar nicht gedacht habe.

                                              Ich glaube ich mache mir eine Checkliste und hake diese nacheinander ab, mit all den Tätigkeiten, die ich eingegeben habe!

                                              PHP brauchst Du bei der Sache nicht, oder möchtest Du es auch dazu lernen? Um zu wissen, ob PHP läuft, leg irgendwo auf Deinem lokalen Webspace eine Datei info.php mit folgendem Inhalt:

                                              <?php

                                              phpinfo();
                                              ?>

                                              
                                              >   
                                              > Diese Datei liefert auch eine Menge Daten über das System.  
                                                
                                              Also ich habe dein Programm mal [hier](http://www.wc-report.info/test/area-data.php) abgelegt.  
                                                
                                              Da ist wirklivh viel drauf. vielleich mach ich es doch wie bisher und programier online...  
                                                
                                              Gruß Gary
                                              
                                              1. Bounjoun Gary,

                                                Sorry, habe mich zu ungenau ausgedrückt:

                                                Ich hatte aber schon verstanden ;)

                                                Pfade richtig?

                                                Das ist immer zuerst zu prüfen. Schreib doch ein einfaches Hallo-Welt-Perl-Skript, und rufe es auf im Browser über die localhost-URI.

                                                Perlcode Fehlerfrei?

                                                Das siehst Du dann (mit fatalsToBrowser).

                                                SSI-Fähigkeit aufgespielt und aktiviert?

                                                Options +Includes nicht vergessen.

                                                Die Rechte richtig vergeben? Für die Richtigen Ordner/Dateien?

                                                755 für Perl-Skripte, Ordner auch beachten.

                                                Dateiendungen richtig eingestellt (Unterscheidung .html .shtml)?

                                                Für den SSI-Parser: .shtml - es sei denn du manipulierst die .htaccess oder direkt die conf-Datei.

                                                Perlcodeausführung nach Dateiendung freigeschaltet .pl?

                                                und .cgi

                                                Und alle die dienge, an die ich noch gar nicht gedacht habe.

                                                Dürfte nicht mehr viele sein...

                                                Also ich habe dein Programm mal hier abgelegt.
                                                Da ist wirklivh viel drauf. vielleich mach ich es doch wie bisher und programier online...

                                                Auch sehr viel für potentielle Hacker. Nimm das wieder runter, oder benenne es um und behalt' den Link für Dich!

                                                Adiou.

                                                1. Hi Jean-Max

                                                  Auch sehr viel für potentielle Hacker. Nimm das wieder runter, oder benenne es um und behalt' den Link für Dich!

                                                  Autsch- hab gesehen das meine ip und die vom Server drauf ist, sowie meine E-Mail...

                                                  Hab es wieder runtergelöscht. Hoffentlich hats keiner gesehen...

                                                  Gruß Gary

                                                  1. Bounjoun Gary,

                                                    Hab es wieder runtergelöscht. Hoffentlich hats keiner gesehen...

                                                    Du kannst sie wieder hochladen, wenn Du über Dein System Infos brauchst. Aber nicht verlinken ;)

                                                    In Perl kannst Du auch sowas machen. Hier ein Skript, was zum Perl-Lernen eher ungeeignet ist (kein »strict«, kein use vom CGI-Modul, kein valides HTML in der Ausgabe) - war bei 1&1 nebst info.php und info.py (Python) dabei:

                                                    info.pl

                                                    #!/usr/bin/perl  
                                                      
                                                    use File::Find;  
                                                      
                                                    print "Content-type:  text/html\n\n";  
                                                      
                                                    print qq~ <html><head>  
                                                    <style type="text/css">  
                                                    <!--  
                                                    th        {font:bold 16px Arial,"Lucida Grande","Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Futura,Helvetica,sans-serif; color:#fff; background-color:#0A328C; padding:5px 0; }  
                                                    td        {font:12px Arial,"Lucida Grande","Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Futura,Helvetica,sans-serif; line-height:1.5em; vertical-align:top;}  
                                                    .leftcol  {width:35%; background-color:#E9F0FA; padding-left:5px;}  
                                                    .rightcol {width:65% }  
                                                    a:link    {font:12px Arial,"Lucida Grande","Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Futura,Helvetica,sans-serif; color:#002276; text-decoration: none;}  
                                                    a:visited {font:12px Arial,"Lucida Grande","Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Futura,Helvetica,sans-serif; color:#002276; text-decoration: none;}  
                                                    a:active  {font:12px Arial,"Lucida Grande","Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Futura,Helvetica,sans-serif; color:#000; text-decoration: underline;}  
                                                    a:hover   {font:12px Arial,"Lucida Grande","Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Futura,Helvetica,sans-serif; color:#000; text-decoration: underline;}  
                                                    h1        {font:bold 24px Arial,"Lucida Grande","Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Futura,Helvetica,sans-serif; margin:10px 0 4px;}  
                                                    table     {margin:30px 0 0;}  
                                                    -->  
                                                    </style>  
                                                      
                                                    <title>Perl Configuration</title>  
                                                    </head>  
                                                      
                                                    <body>  
                                                    <h1 style="text-align: center">Perl Configuration</h1>  
                                                      
                                                    <table width="100%">  
                                                    <tr><th colspan="2">Program Paths</th></tr>  
                                                    <tr><td class="leftcol"><b>Perl Version</b></td><td class="rightcol">$]</td></tr>  
                                                    <tr><td class="leftcol"><b>Perl Executable</b></td><td class="rightcol">$^X</td></tr>  
                                                    <tr><td class="leftcol"><b>PERL compile version OS</b></td><td class="rightcol">$^O</td></tr>  
                                                      
                                                    <tr><td class="leftcol"><b>Location of Perl</b></td><td class="rightcol">~;  
                                                      
                                                    foreach $location ( split(" ",`whereis perl`) ) {  
                                                    	print "$location<br>\n";  
                                                    }  
                                                      
                                                    print qq~  
                                                    </td></tr>  
                                                    <tr><td class="leftcol"><b>Location of Sendmail</b></td><td class="rightcol">~;  
                                                      
                                                    foreach $location ( split(" ",`whereis sendmail`) ) {  
                                                    	print "$location<br>\n";  
                                                    }  
                                                      
                                                    print qq~  
                                                    </td></tr>  
                                                    <tr><td class="leftcol"><b>Directory locations searched for perl executables</b></td><td class="rightcol">~;  
                                                      
                                                    foreach $location (@INC){  
                                                    	print "$location <br>\n";  
                                                    }  
                                                      
                                                    print qq~  
                                                    </td></tr>  
                                                    </table>  
                                                      
                                                    <table>  
                                                    <tr><th colspan="2">Environment Variables</th></tr>~;  
                                                      
                                                    foreach $var(keys %ENV){  
                                                    	print qq~ <tr><td class="leftcol"><b>$var</b></td><td class="rightcol">$ENV{$var}</td></tr>~;  
                                                    }  
                                                      
                                                    print qq~  
                                                    </table>  
                                                      
                                                    <table width="100%">  
                                                    <tr><th colspan="3">Installed Perl Modules</th></tr>~;  
                                                      
                                                    find(\&wanted,@INC);  
                                                    $modcount = 0;  
                                                    foreach $line(@foundmods){  
                                                    	$match = lc($line);  
                                                    	if ($found{$line}[0] >0){  
                                                    		$found{$line} = [$found{$line}[0]+1,$match]  
                                                    	} else {  
                                                    		$found{$line} = ["1",$match];$modcount++  
                                                    	}  
                                                    }  
                                                    @foundmods = sort count keys(%found);  
                                                      
                                                    sub count {return $found{$a}[1] cmp $found{$b}[1]}  
                                                      
                                                    $third = $modcount/3;  
                                                    $count=0;  
                                                    print qq~ <tr><td width="33%" valign="top"><table>~;  
                                                    foreach $mod(@foundmods){  
                                                    	chomp $mod;  
                                                    	$count++;  
                                                    	if ($count <= $third){  
                                                    		print qq~ <tr><td class="rightcol">$mod</td></tr>~;  
                                                    	} else {  
                                                    		push (@mod1,$mod)  
                                                    	}  
                                                    }  
                                                      
                                                    print qq~ </table></td><td width="33%" valign="top"><table>~;  
                                                    $count = 0;  
                                                    foreach $mod1(@mod1){  
                                                    	chomp $mod1;  
                                                    	$count++;  
                                                    	if ($count <= $third){  
                                                    		print qq~ <tr><td class="rightcol">$mod1</td></tr>~;  
                                                    	} else {  
                                                    		push (@mod2,$mod1)  
                                                    	}  
                                                    }  
                                                    print qq~ </table></td><td width="33%" valign="top"><table>~;  
                                                    $count = 0;  
                                                    foreach $mod2(@mod2){  
                                                    	chomp $mod2;  
                                                    	$count++;  
                                                    	if ($count <= $third){  
                                                    		print qq~ <tr><td class="rightcol">$mod2</td></tr>~;  
                                                    	}  
                                                    }  
                                                      
                                                    print qq~  
                                                    </table></tr>  
                                                    </table>  
                                                    </body>  
                                                    </html>~;  
                                                      
                                                    exit;  
                                                      
                                                    sub wanted {  
                                                    	$count = 0;  
                                                    	if ($File::Find::name =~ /\.pm$/){  
                                                    		open(MODFILE,$File::Find::name) || return;  
                                                    		while(<MODFILE>){  
                                                    			if (/^ *package +(\S+);/){  
                                                    				push (@foundmods, $1);  
                                                    				last;  
                                                    			}  
                                                    		}  
                                                    	}  
                                                    }  
                                                    
                                                    

                                                    Das Skript listet Dir nebst Environment-Variablen alle installierte Module auf.

                                                    Adiou.

                                                    1. Abend zusammen

                                                      Wollte nur melden, daß jetzt der Apache mit vollem Funktionsumfang einwandfrei arbeitet!

                                                      Also wenn ihr zukünftig einem ungeliebtem Kollegen ein "Ei" legen wollt, lasst ihn auf einem  Ubuntu-System einen Apachen für lokalen Betrieb konfigurieren. Mit der Bitte es muss CGI, SSI, Perl und shtml-Dokumente unterstützen....

                                                      Nach dem Dritten Anlauf wußte ich dann, welche von den vielen "Tips" die im Internet herumschwirren gebrauchbar sind, und auf welche ich verzichten kann. Es ist auch so, das man selber immer mehr das System sieht, in dem diese Dinge zusammenhängen. Und man beginnt zu erkennen, wo man drehen muss, damit Dies und Das funktioniert - und was auf keinen Fall damit zu tun haben kann.

                                                      Und natürlich ist es auch so: Je komplexer (Anzahl der Einzelteile und deren Vernetzung) der Aufbau, um so mehr Stellen für mögliche Fehler entstehen.

                                                      Und das alles bereits beim minimalistischem Hausgebrauch. Man stelle sich nur mal vor, was in einem Rechenzentrum einer Bank wohl abgeht, wenn irgend ein Teil (Software), seine Anbindung an den Rest des Systems verliert, und Kollege EDVler die Ärmel hochkrempeln darf...

                                                      ...Na dann "Gut Such!"

                                                      In diesem Sinne - Gute Nacht! :-)

                                                      *freu* *es geht* *juhuu*...

                                                      1. Hello,

                                                        *freu* *es geht* *juhuu*...

                                                        Und wenn Du nun nochmal kurz zusammengefasst hättest, wo Du warum überall gedreht hast, dann hätte der Thread auch einen bleibenden Wert :-)

                                                        Liebe Grüße aus dem schönen Oberharz

                                                        Tom vom Berg

                                                        --
                                                         ☻_
                                                        /▌
                                                        / \ Nur selber lernen macht schlau
                                                        http://bergpost.annerschbarrich.de
                                                        1. Abend Jean-Max und Tom

                                                          Da ein wirklich ausführlicher Bericht "How to install a apache-server on an ubuntu-system with full ssi- cgi- perl- and shtml- support" diesen ehe schon viel zu langen thread sprengen würde, hier die grobe Zusammenfassung.

                                                          Vorweg: Ich habe zunächst wieder den Urzustand hergestellt (apache und alle mods deinstalliert + Restart).....

                                                          1. apache2 neu installiert
                                                             2. index.html in var/www/ abgelegt
                                                             3. ssi-test.shtml in var/www/ abgelegt
                                                             4. Perl-Test.pl in usr/lib/cgi-bin abgelegt
                                                             5. Ordnerrechte auf 0755 eingestellt
                                                             6. group auf www-data gesetzt
                                                             7. mich mit aduser grp hinzugefügt
                                                             8. apache restart
                                                             9. sudo a2enmod include ausgefürt
                                                            10. etc/apache2/sites-available/default +includes eingesetzt
                                                            11. etc/apache2/sites-available/default AddType text/html .shtml
                                                            12. etc/apache2/sites-available/default AddOutputFilter INCLUDES .shtml
                                                            13. etc/apache2/sites-available/default AddHandler cgi-script .cgi .pl

                                                          Die etc/apache2/sites-available/default wie folgt abgeändert:
                                                          ----------------------------------------------------------------
                                                          <VirtualHost *:80>
                                                          ServerAdmin webmaster@localhost

                                                          DocumentRoot /var/www  
                                                          <Directory />  
                                                          	Options FollowSymLinks  
                                                          	AllowOverride None  
                                                          </Directory>  
                                                          <Directory /var/www/>  
                                                          	Options Indexes FollowSymLinks MultiViews +Includes  
                                                          	AllowOverride None  
                                                          	Order allow,deny  
                                                          	allow from all  
                                                                  AddType text/html .shtml  
                                                                  AddOutputFilter INCLUDES .shtml  
                                                          

                                                          </Directory>

                                                          ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

                                                          <Directory "/usr/lib/cgi-bin">  
                                                          	AllowOverride None  
                                                          	Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch  
                                                          	Order allow,deny  
                                                          	Allow from all  
                                                          

                                                          AddHandler cgi-script .cgi .pl
                                                                  </Directory>

                                                          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  
                                                          

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

                                                          </VirtualHost>
                                                          ----------------------------------------------------------------

                                                          Nachdem es dann immer noch nicht funktionierte, nahm ich mir die Testprogramme vor. Nachdem die aber im Standalone-Betrieb gingen, blieb mir nur noch eine Möglichkeit--> Das Error-Logfile!
                                                          Un dort stand dann drin:
                                                          --------------------------------------------------------------
                                                          malformed header from script. Bad header=<html>: Perl-Test.pl
                                                          --------------------------------------------------------------

                                                          D.h., wenn der apache eine generierte Homepage nicht genau 100% Fehlerfrei serviert bekommt, streikt er einfach "wortlos". Was lernen wir daraus? Ein Error-Logfile ist nicht einfachh wachsender Ballast in einem System, nein - es kann auch eine Hilfe sein, wenn man mal nicht weiter weis!

                                                          Wer übrigens Testprogramme braucht für solche Zwecke-> Hier mal meine treuen Informanten...

                                                          Server-Test - ob Html erkannt und ausgeliefert wird:
                                                          -----------------------------------------------------------------
                                                          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                                                          <html>
                                                          <head>
                                                          </head>
                                                          <body>
                                                          <p>Ich liege im Verzeichnis var/www und bin ein ganz normales HTML-Dokument!</p>
                                                          </body>
                                                          </html>
                                                          -----------------------------------------------------------------

                                                          Server-Test - ob ssi korrekt arbeitet:
                                                          -----------------------------------------------------------------
                                                          <html>
                                                            <head>
                                                              <title>SSI Test Page</title>
                                                            </head>
                                                            <body>
                                                              <!--#echo var="DATE_LOCAL" -->
                                                            </body>
                                                          </html>
                                                          -----------------------------------------------------------------

                                                          Und hier wohl das kürzeste shtml-Dokument der Welt um Perlaktivierung zu testen:
                                                          -----------------------------------------------------------------
                                                          <!--#exec cgi="/cgi-bin/Perl-Test.pl" -->
                                                          -----------------------------------------------------------------

                                                          Und zu letzt noch ein kleines PerlScript, das dem Browser sagt, wenn es funktioniert:
                                                          -----------------------------------------------------------------
                                                          #!/usr/bin/perl -w

                                                          use strict;
                                                          use CGI -no_xhtml;
                                                          use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

                                                          print CGI->header('text/html');

                                                          print qq(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">),"\n";

                                                          print qq(<meta http-equiv="Content-Language" content="de">),"\n";
                                                          print qq(<meta http-equiv="Content-Type" content="text/html; charset=utf-8">),"\n";

                                                          print qq(<html>),"\n";
                                                          print qq(<head>),"\n";
                                                          print qq(</head>),"\n";
                                                          print qq(<body>),"\n";
                                                          print qq(<title>Perl-Tester</title>),"\n";
                                                          print qq(<p>Wenn sie das lesen können, hat SSI und CGI korrekt funktioniert!</p>),"\n";
                                                          print qq(</body>),"\n";
                                                          print qq(</html>),"\n";
                                                          -----------------------------------------------------------------

                                                          Mist, jetzt ist die kurze Erklärung doch noch etwas länger geworden *g*

                                                          Hoffe das es einem Zukünftigem Leser mit gleichem Problem weiter hilft. Man lernt auf jedenfall in welchem Verzeichnis was zu liegen hat...

                                                          Grüße und Dank

                                                          Gary

                                                      2. Bounjoun Gary,

                                                        *freu* *es geht* *juhuu*...

                                                        Ich freue mich auch, sehe es aber genau so wie Tom... Also her mit dem ausführlichen Erfolgsbericht!

                                                        Adiou.

                      2. Hello,

                        -Wenn ich in die UrL: "http://lokalhost/test.html" eingebe, erhalte ich auch die Browserausgabe.

                        Das glaube ich nicht, denn Lokalhorst heißt i.d.R. 'localhost', oder hast Du ihn umbenannt?

                        ;-P

                        Liebe Grüße aus dem schönen Oberharz

                        Tom vom Berg

                        --
                         ☻_
                        /▌
                        / \ Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de
                  2. Bounjoun Gary,

                    Wo platziere ich das Perlscript lokal am besten (Online war es immer cgi-bin)?

                    Na dann schau mal nach einem Ordner namens htdocs nach. Wenn die Ubuntu-Apache-Installation ähnlich ist wie XAMPP für Windows, dürfte es einen Ordner cgi-bin entweder auf der selben Ebene wie htdocs oder eben als Unterverzeichnis davon.

                    Das wird Dir aber auf Dauer nicht weiterbringen. Am Besten arbeitest Du mit Virtual Hosts. Nur so kannst Du Dir projektbezogen individuell die Konfiguration(en) nachbauen, wie Du sie beim Deinem Provider hast.

                    Im Grunde hast Du dann Dein fremdgehostetes Webspace lokal nachgebaut, und kannst auf deiner lokalen Umgebung genauso arbeiten, wie online.

                    Adiou.

    2. Hi Steel

      Nur, wenn jemand von aussen auf deinen PC kommt. Steckst Du z.B. hinter einem Router mit aktiviertem Portforwarding? Solange Du ne Firewall hast, die nix durchlaesst, kannst Du mit dem Apache machen, was Du willst. Sonst muesstest Du dein Wissen ueber Apacekonfiguration vertiefen und den apache so einstellen, dass er nur auf lokale Anfragen reagiert.

      Das mit der Firewall kann ich nicht genau sagen. Ich habe T-DSL über einen Speedport W 701 V. Aber auf Telekom-Gedöhns möchte ich mich eigentlich nicht verlassen. Dein Vorschlag den apachen so zu installieren, daß er nur auf lokale Anfragen reagiert gefällt mir hingegen sehr. Vielleicht kann man ja auch beides haben->PortForwarding und lokal?

      Ja. Es gibt ja erstmal keinen Unterschied zu deinem Rechner als Server und dem Rechner der bei einem Hoster den Server spielt. Deinen musst Du halt selbst konfigurieren.

      Nur interesse halber: Wenn mein Home-PC dauernd eingeschaltet wäre, und der Apache läuft - bin bzw. wäre ich dann auch einen Art echte Internetdresse?
      Klar, wenn keine Firewall und offene Port zur verfügung stehen würden...

      Mir fällt es leichter eine Webbasierte Ausgabe zu gestalten, als mich mit dem winzig kleinen Terminalfenster herum zu ärgern...

      Da bist Du nicht allein.

      Schön zu hören, daß das Terminal nicht jedermanns Freund ist! :-)

      Gruß Gary

      1. Hello,

        Nur interesse halber: Wenn mein Home-PC dauernd eingeschaltet wäre, und der Apache läuft - bin bzw. wäre ich dann auch einen Art echte Internetdresse?
        Klar, wenn keine Firewall und offene Port zur verfügung stehen würden...

        Wenn Du den Apache so eingerichet hast, dass er auch auf Anfragen aus dem Netz und nicht nur von Localhost hört, dann kannst Du ihn über die IP erreichen. Wenn Du einen Dienst, wie z.B. DynDNS in Anspruch nimmst, kannst Du auch virtual Hosts bereitstellen, also mehrere Domains hosten.

        Voraussetzung ist dabei eben immer, dass für das Protokoll und den Port eine passende Weiterleitung auf den Host (deinen Rechner) aus dem Netz besteht, der Router diese Anfragen also passend weitergibt.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi Tom

          Wenn Du den Apache so eingerichet hast, dass er auch auf Anfragen aus dem Netz und nicht nur von Localhost hört, dann kannst Du ihn über die IP erreichen. Wenn Du einen Dienst, wie z.B. DynDNS in Anspruch nimmst, kannst Du auch virtual Hosts bereitstellen, also mehrere Domains hosten.

          Voraussetzung ist dabei eben immer, dass für das Protokoll und den Port eine passende Weiterleitung auf den Host (deinen Rechner) aus dem Netz besteht, der Router diese Anfragen also passend weitergibt.

          Interessant - echt cool! Aber ich seh schon - das ist wieder eine andere komplexere Materie.

          Habe jetzt gerade im Speedportmenu nachgeschaut:

          Es ist Portforwarding eingestelt. Nur heist es dort anders. Funktioniert so, das die Rechner hinter der DSL-Box eigene verschiedene IP haben, und nach außen aber immer nur eine, dieselbe IP. Es gibt also eine IP, die nach außen sichtbar ist und bei ankommenden Daten auf die "internen" IP's verteilt wird. Also ist Fall ein mit dem PortForwarding schon mal im grünen Bereich.

          Dann werde ich jetzt mal den Apachen einpflegen und melde mich dann nochmal wegen der Lokal-Geschichte.

          Gruß Gary

          1. Hallo,

            Es ist Portforwarding eingestelt. Nur heist es dort anders. Funktioniert so, das die Rechner hinter der DSL-Box eigene verschiedene IP haben, und nach außen aber immer nur eine, dieselbe IP. Es gibt also eine IP, die nach außen sichtbar ist und bei ankommenden Daten auf die "internen" IP's verteilt wird.

            das ist kein Port Forwarding, das ist die ganz "normale" Adress-Übersetzung (NAT, Network Adress Translation). Kann sein, dass die Port-Forwarding-Einstellungen bei dir anders heißen (Anwendungen zum Beispiel), sie sind auch nicht immer leicht zu finden.

            Ciao,
             Martin

            --
            Wer barfuß geht, dem kann man nicht die Schuld in die Schuhe schieben.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. hi,

    Wenn ich enen Server installiere, ist das dann sicher, oder kann jeder vom Internet auf meinen PC (z.B. über sog ports)?

    Du kannst den Apache-Webserver so konfigurieren, dass er nur auf dem Localhost erreichbar ist. Für den Localhost stehen Dir ca. 16 Millionen IP-Adressen zur Verfügung, was für eine Testumgebung reichen sollte.

    Horst Hotspott