Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Apache und perl?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Tue Mar 08, 2011 2:18 pm    Post subject: Apache und perl? Reply with quote

Hallo Zusammen.

Wie kann ich denn den Apache dazu bewegen, dass er in cgi-bin perl Scripte ausführt.

Ich habe schon so einiges bei google gefunden, aber leider funktioniert das alles nicht. :(

Gibt es da irgendwo ein HowTo, das funktioniert?
Back to top
View user's profile Send private message
Yamakuzure
Advocate
Advocate


Joined: 21 Jun 2006
Posts: 2297
Location: Adendorf, Germany

PostPosted: Tue Mar 08, 2011 3:49 pm    Post subject: Reply with quote

Nö, aber den Apache2 unter Gentoo dazu zu bewegen perl-scripte auszuführen ist nicht einfach.

Achtung! die folgende liste erlaubt es .pl Dateien von überall auf dem Server auszuführen! Wenn es nur aus cgi-bin sein soll, dann darf "/etc/apache2/modules.d/75_mod_perl.conf" natürlich nicht so verändert werden wie unten.
  1. www-apache/mod_perl hast du ja sicherlich installiert, gell?
  2. /etc/conf.d/apache2 wrote:
    APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5 -D PERL"
  3. /etc/apache2/modules.d/00_mod_mime.conf wrote:
    AddHandler cgi-script .cgi .pl
  4. /etc/apache2/modules.d/75_mod_perl.conf wrote:
    #<Directory /home/*/public_html/perl>
    # SetHandler perl-script
    # PerlResponseHandler ModPerl::PerlRun
    # Options -Indexes ExecCGI
    # PerlOptions +ParseHeaders
    #</Directory>

    <Location *.pl>
    SetHandler perl-script
    PerlResponseHandler ModPerl::PerlRun
    PerlOptions +ParseHeaders
    </Location>
  5. /etc/apache2/vhosts.d/default_vhost.include wrote:
    <Directory "/var/www/localhost/htdocs">
    Options Indexes FollowSymLinks +ExecCGI

    # Erlaube override, um ExecCGI auch abschalten zu können
    AllowOverride All

    # Development-Server! Kein zugriff von Außen!
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    </Directory>
damit sollte es klappen, tut's zumindest bei mir auf drei Rechnern.
_________________
Edited 220,176 times by Yamakuzure
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Tue Mar 08, 2011 4:34 pm    Post subject: Reply with quote

THX @ Yamakuzure,

1-3 hatte ich schon gemacht.

Habe dann noch 4 + 5 gemacht, aber leider funktioniert es immer noch nicht. :(

Wenn ich im Webbrowser die URL zur *.pl angebe, dann will er sie immer nur herunterladen, anstatt dass sie auf den Server ausgeführt wird.
Back to top
View user's profile Send private message
Yamakuzure
Advocate
Advocate


Joined: 21 Jun 2006
Posts: 2297
Location: Adendorf, Germany

PostPosted: Wed Mar 09, 2011 10:13 am    Post subject: Reply with quote

Das Einzige, was mir spontan dazu einfällt, ist ein Problem an dem ich kauen "durfte":

Deine Perl-Datei *muss* einen gültigen Content-Type zurückgeben, der kleinste Tippfehler bedeutet "Download".

Um zum Beispiel deine Umgebungsvariablen einzusehen, kannst du mal folgendes Skript testen:

Code:
#!/usr/bin/perl -w

use strict;
use CGI;

print CGI::header('text/plain'); ## <- WICHTIG

use Cwd;
print "getcwd  : " . getcwd . "\n";
use Cwd 'abs_path';
print "abs_path: " . abs_path($0) . "\n";
print "-------------------------\n";

for my $k (sort keys %ENV)
  {
    print "$k : $ENV{$k}\n";
  }
Auf meinem System bekomme ich den folgenden Output:
Code:
getcwd  : /var/www/localhost/htdocs/ArLic
abs_path: /var/www/localhost/htdocs/ArLic/envTest.pl
-------------------------
DOCUMENT_ROOT : /var/www/localhost/htdocs
GATEWAY_INTERFACE : CGI/1.1
HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_CHARSET : ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING : gzip,deflate
HTTP_ACCEPT_LANGUAGE : de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_CONNECTION : keep-alive
HTTP_HOST : localhost
HTTP_KEEP_ALIVE : 115
HTTP_USER_AGENT : Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110307 Gentoo Firefox/3.6.15
PATH : /lib64/rc/sbin:/lib64/rc/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/sys/bin:/home/sed/sys/bin
QUERY_STRING :
REMOTE_ADDR : 127.0.0.1
REMOTE_PORT : 49032
REQUEST_METHOD : GET
REQUEST_URI : /ArLic/envTest.pl
SCRIPT_FILENAME : /var/www/localhost/htdocs/ArLic/envTest.pl
SCRIPT_NAME : /ArLic/envTest.pl
SERVER_ADDR : 127.0.0.1
SERVER_ADMIN : root@localhost
SERVER_NAME : localhost
SERVER_PORT : 80
SERVER_PROTOCOL : HTTP/1.1
SERVER_SIGNATURE : <address>Apache Server at localhost Port 80</address>

SERVER_SOFTWARE : Apache
UNIQUE_ID : TXdQ-n8AAAEAAEHGBnQAAAAB


Wenn das immernoch nicht hinhaut, was bekommst du von der Adresse "http://localhost/perl-status" ?

Ferner: Perl ist standardmäßig so konfiguriert, dass sich die Skripte in /perl bzw. /cgi-perl und *nicht* in /cgi-bin befinden. (Siehe /etc/apache2/modules.d/75_mod_perl.conf)
_________________
Edited 220,176 times by Yamakuzure
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Wed Mar 09, 2011 11:41 am    Post subject: Reply with quote

Danke @ Yamakuzure,

aber es funktioniert mitllerweile. :)

Ich bin nach dieser Anleitung vorgegangen:

http://www.gentoo-wiki.info/Apache_Modules_mod_perl
Back to top
View user's profile Send private message
Yamakuzure
Advocate
Advocate


Joined: 21 Jun 2006
Posts: 2297
Location: Adendorf, Germany

PostPosted: Wed Mar 09, 2011 2:05 pm    Post subject: Reply with quote

Das ist komisch, denn das ist auch nichts Anderes als Oben steht... (Ob "Files" oder "Location" sollte egal sein...)

aaaber ich werde den Eintrag mit "Files" bei mir auch einbauen, denn das sieht mir sehr viel sauberer aus als meine Config.

Edith freut sich: Woohooo, das sieht doch viel angenehmer aus. Nach dem hinzufügen von -D PERL reicht bei mir die folgende Konfiguration nun aus:
Code:
 # egrep "^\s*[^# ]" /etc/apache2/modules.d/75_mod_perl.conf
<IfDefine PERL>
LoadModule perl_module modules/mod_perl.so
PerlRequire "/etc/apache2/modules.d/apache2-mod_perl-startup.pl"
PerlModule ModPerl::Registry
<Location /perl-status>
        SetHandler perl-script
        PerlResponseHandler Apache2::Status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
</Location>
<Files ~ "\.pl$">
        SetHandler perl-script
        PerlResponseHandler ModPerl::Registry
        Options +ExecCGI
        PerlSendHeader On
</Files>
</IfDefine>
(Keine .cgi Endung bei mir, und ich mag nicht auf perl-status verzichten ;))

Also dank deinem Thread habe ich gehörig was dazugelernt heute. Wenn man nämlich sowas nicht weiß, kann man sich nur "durchgoogeln", und da kommt dann auch echt viel Umständliches bei raus. (gentoo-wiki.info war mir bis eben auch neu. :oops: )
_________________
Edited 220,176 times by Yamakuzure
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum