it-swarm.com.de

Benutzerdefinierte Handler hinzufügen

Ich habe eine Reihe von D-Sprachprogrammen (Erweiterung .d) und ein Compile-and-Run-Tool (rdmd). Ich möchte Apache (Version 2.2) so konfigurieren, dass es URLs wie "mysite.com/d/hello" verarbeitet .d ", indem Sie rdmd mit der angeforderten Ressource ausführen. Die Programme geben gültige HTTP-Header aus.

Ich habe AddHandler und Action recherchiert, aber es ist mir nicht gelungen, sie dazu zu bringen, das zu tun, was ich will, nämlich rdmd mit der Ressource auszuführen. Ich vermute, dass das Problem darin besteht, dass sich rdmd in einem speziellen cgi-Verzeichnis befinden muss.

Kann jemand die notwendigen Schritte durchgehen, um Apache auf einem Debian-basierten System so zu konfigurieren, dass es meine Dateien ausführt, anstatt sie zum Download anzubieten? Sowohl die verzeichnisspezifische ('/ d') als auch die standortweite Ausführung sind in Ordnung.

1
Justin W

Die D-Dateien sollten als CGI-Programme behandelt werden. Fügen Sie einen CGI-Handler für die Erweiterung .d hinzu und aktivieren Sie die Option ExecCGI. Zum Beispiel:

<Directory /var/www/public_html>
    Options +ExecCGI
    AddHandler cgi-script .d
</Directory>

Natürlich müssen Sie den Verzeichnispfad entsprechend Ihrer Einrichtung ändern.

Stellen Sie außerdem sicher, dass Sie die Berechtigungseinstellungen der D-Dateien überprüfen. Der Server führt die Dateien nicht als Benutzerkonto aus, daher müssen sie von jedem ausführbar sein. Wenn Sie dies in der Befehlszeile des Ordners mit Ihren D-Programmen ausführen, sollte dies folgendermaßen aussehen:

chmod a+x *.d

Da die Dateien jetzt ausführbar sind, werden sie mit dem Programm ausgeführt, das in der Shebang-Zeile jedes Skripts aufgeführt ist. Hier kommt rdmd ins Spiel. Die erste Zeile in jeder Datei sollte ungefähr so ​​aussehen:

#!/usr/bin/rdmd

Ich kenne die Besonderheiten der D-Sprache nicht. Stellen Sie sicher, und verwenden Sie den Pfad zu Ihrem Rdmd-Compiler. Wenn Sie sich nicht sicher sind, führen Sie dies in der Befehlszeile aus:

which rdmd

Das sollte dir sagen, wo es ist.

1
ttubrian