Perl und Python auf dem vServer

In einem früheren Beitrag habe ich mich  zu den Möglichkeiten des Einsatzes von Perl- und Python-Scripten bei Shared Hosting angeboten geäußert. An dieser Stelle nun einige Anmerkungen zur Nutzung solcher Scripte auf einem vServer.

Proplay

Auf einem vServer bei proplay.de habe ich einen Account inclusive Subdomain eingerichtet. Die einzelnen Subdomains werden als virtuelle Hosts konfiguriert. Jeder virtueller Host hat eine eigene zusätzliche Konfigurationsdatei. Im konkreten Fall hat diese Datei subdomainname.hauptdomainname.de im Verzeichnis /etc/apache2/sites-available unter anderem den folgenden Inhalt:

<Directory "/var/www/username/docs">
    <IfModule mod_perl.c>
    <Files ~ (\.pl$)>
        SetHandler perl-script
        PerlHandler ModPerl::Registry
        Options ExecCGI
        allow from all
        PerlSendHeader On
    </Files>
    </IfModule>
    <IfModule mod_python.c>
    <Files ~ (\.py$)>
        SetHandler python-program
        PythonHandler mod_python.cgihandler
    </Files>
    </IfModule>
   Options Indexes MultiViews FollowSymLinks +ExecCGI
   FCGIWrapper /var/www/username/php-fcgi/php-fcgi-starter .php
   Order allow,deny
   allow from all
</Directory>

Mit dieser Konfigurationsdatei laufen sowohl einfache Python wie auch Perl-Scripte ohne zusätzliche Maßnahmen in der .htaccess. Auch der Rechte-Status der Dateien muss nicht geändert werden.

Netcup

Bei Netcup wird zunächst nur der Download der Python- bzw. Perldatei angeboten. Nach dem Erstellen einer .htaccess-Datei erhalte ich einen

500 Internal Server Error

Die Überprüfung mit

apache2ctl -M

zeigt dann, dass entsprechenden Apache-Module gar nicht geladen sind. Dies wird jetzt nachgeholt mit

apt-get install libapache2-mod-perl2
apt-get install libapache2-mod-python

In die Apache-vHost-Konfigurationsdatei wird eingefügt:

    <IfModule mod_perl.c>
    <Files ~ (\.pl$)>
        SetHandler perl-script
        PerlHandler ModPerl::Registry
        Options ExecCGI
        allow from all
        PerlSendHeader On
    </Files>
    </IfModule>
    <IfModule mod_python.c>
    <Files ~ (\.py$)>
        SetHandler python-program
        PythonHandler mod_python.cgihandler
    </Files>
    </IfModule>

Damit die Änderungen auch wirksam werden:

service apache2 restart

Jetzt klappt es, auch ohne .htaccess.