Welche Schritte befolge ich, um ein Standard-CGI-Skript von Hello World auszuführen?

7

Angenommen, ich habe die Installation einer modernen Version von Ubuntu abgeschlossen und habe das folgende Skript.

#!/bin/sh
echo "Content-type: text/html\n"
echo "<html><body>Hello world</body></html>"

Wie installiere und konfiguriere ich Apache so, dass mit diesem Skript eine Webseite "Hallo Welt" von http: // localhost bereitgestellt wird?

Jjed
quelle

Antworten:

11

Der schnelle Weg

Installieren Sie den Apache-Webserver

In der Befehlszeilenanwendung (Terminal):

sudo apt-get install apache2

Machen Sie Ihr Skript von Apache ausführbar

In diesem Beispiel wird davon ausgegangen, dass das CGI-Skript benannt test.shund in Ihrem persönlichen Home-Ordner gespeichert ist. Damit Apache verwendet werden kann test.sh, muss das Skript zunächst über ausführbare Berechtigungen verfügen:

chmod 755 $HOME/test.sh

Es muss auch in den von Apache festgelegten CGI-Ordner verschoben werden. Für Ubuntu (und andere Debian-basierte Betriebssysteme) ist dies so /usr/lib/cgi-bin/ , während HTML und andere Inhalte in gespeichert sind /var/www.

sudo mv $HOME/test.sh /usr/lib/cgi-bin/

Besuchen Sie die Ausgabe auf Ihrem lokalen Server

Apache wird das test.shgenerierte HTML unter http: //localhost/cgi-bin/test.sh bereitstellen . Wenn sich Apache neben Ihrem eigenen Computer befindet, ersetzen Sie 'localhost' durch die URL oder IP-Adresse des Servers.

Speichern von CGI-Skripten in / var / www / test-cgi anstelle von / usr / lib / cgi-bin /

Sie müssen die Vanilla Apache-Konfiguration ändern, um CGI-Skripte in einem anderen Ordner zu speichern.

sudoedit /etc/apache2/sites-enabled/000-default

Fügen Sie der <VirtualHost>Richtlinie Folgendes hinzu :

ScriptAlias /test-cgi/ /var/www/test-cgi/
<Directory "/var/www/test-cgi">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
</Directory>

Dann in der Kommandozeile:

sudo mkdir /var/www/test-cgi
sudoedit /var/www/test-cgi/test.sh

Starten Sie dann in der Befehlszeile Apache neu:

sudo apachectl restart

Wie bei The Quick Way sollte die CGI-Ausgabe unter http: //localhost/test-cgi/test.sh bereitgestellt werden (ersetzen Sie "localhost" durch die Serverdomäne , wenn Sie remote entwickeln).

Fehlerbehebung

Wenn Sie Probleme haben, konsultieren Sie die offizielle Apache-Dokumentation .

Barbarrosa
quelle
Hinweis für freundliche Apache-Gurus: Es wäre schön, wenn diese Antwort neben / usr / lib / cgi_bin und / var / www / test_cgi / (z. B. die Option $ HOME / public_html) noch einige weitere Konfigurationen abdecken würde.
Jjed