AMIGA-Magazin · Ausgabe 10/00 · Web-Server: »Apache/PHP 1.3.12«

Aktuelles Heft 10/00

Pures Vergnügen

Seit vielen Jahren gibt es einen Amiga-Port des beliebten Webservers »Apache«. Mit diesen konnte man bereits CGI-Skripte (z.B. in Perl oder ARexx) verwenden. Dynamisches Web-Publishing mit PHP war aber noch nicht möglich. Nun gibt es einen Amiga-Apache mit PHP-Unterstützung. Lesen Sie, wie sie Apache/ PHP für Amiga installieren und verwenden.

von Martin Steigerwald

Vorbereitung ist alles: Auch der TCP/IP-Stack muss angepasst werden.
Heureka: Ich habe es gefunden! PHP läuft auf dem Amiga.
php.net: Die Offizielle PHP-Homepage mit Online-Anleitung, Tutorials und vielen guten Links.
PHP-Center: Es gibt auch sehr gute deutschsprachige PHP-Supportseiten mit zahlreichen Informationen zum Einsatz von PHP.

Apache für Amiga kommt entweder in separaten »tar.gz«-Archiven mit Binaries für verschiedene 68000er-CPUs und Zusatzdateien oder im AmiNet als komplettes Archiv mit allen Dateien daher. Welche Version sie installieren, liegt bei ihnen. Wenn Sie keine Dateien vergessen wollen, sollten Sie auf der Heft-CD im Verzeichnis Internet/ Apache schauen.

Dieser Artikel bezieht sich auf die zum Zeitpunkt seiner Entstehung aktuellen Version von Apache: AmigaApache/1.3.12 PHP/4.0.1 pl2. Damit ist u.a. die Anbindung an Datenbanken wie »mSQL« oder »PostgreSQL« per PHP kein Problem. Die popupläre OpenSource-Datenbank »mySQL« ist leider nicht für den Amiga verfügbar. Die Verwendung von Datenbanken ist jedoch nicht Thema diesen Artikels.

Bevor Sie Apache für Amiga installieren, sollten Sie unbedingt ältere Artikel zu Amiga-Apache und zur Installation der GeekGadgets-Umgebung lesen. Dieser Artikel beschreibt zwar zusammenfassend alle notwendigen Schritte zur Installation von Konfiguration von Apache, geht dabei jedoch nicht ins Detail. Daher ist es sehr empfehlenswert, den Artikels »Mein Freund W.«, der die Installation einer etwas älteren Version von Apache detaillreich beschreibt, zu lesen[1].

Vorarbeiten

Bevor sie Apache verwenden können, müssen zunächst ein paar Voraussetzungen geklärt werden: Apache benötigt mindestens einen 68020 Prozessor, was aber nun wirklich kein Problem mehr darstellen sollte. Weiterhin benötigen Sie einen TCP/IP-Stack wie »Miami«, »MiamiDx« oder »Genesis«. Außerdem müssen zumindest bestimmte Teile der GeekGadgets-Umgebung installiert werden: Notwendig sind die xemul.library und die ixnet.library, sowie die File-Utilities eine Sammlung von Befehlen zur Dateimanipulation wie man sie unter Unix findet.

Sie können diese minimalen Bestandteile von GeekGadgets installieren, indem sie diese Befehle einfach nach »C:« sowie die Libraries nach »LIBS:« kopieren. Oder Sie installieren einfach einen guten Grundstock des GeekGadgets-Projektes.

Auch wenn Apache mit der Minimal-Konfiguration funktioniert, brauchen bestimmte Funktionen wie CGI-Skripting weitere Teile von Geekgadgets wie z.B. Perl, die Shell »ksh«, o.ä.

Los gehts!

Entpacken sie den Inhalt des/der Archiv(e) für den Amiga-Apache in ein eigenes Verzeichnis und teilen sie Apache mit, wo es zuhause ist:

ASSIGN Apache: <Ihr-apache-verzeichnis>

Es empfiehlt sich, diese Zuweisung auch gleich in die »User-Startup« einzutragen, damit sie bei jedem Boot neu gesetzt wird.

Im AmiNet-Archiv sind vom Server und seinen Zusatz-Utilities Versionen für 68020, 68040 und 68060 enthalten. Zudem gibt es Versionen für Apache mit und Apache ohne PHP. Suchen Sie sich die passenden Versionen heraus und benennen Sie sie um, indem sie die Endung löschen: So wird z.B. aus »http.060.php« einfach nur »httpd«. Wenn Sie Einzel-Archive verwenden, stellen Sie sicher, Archive für die PHP-Versionen zu verwenden. Diese haben das Kürzel »php« in ihrem Dateinamen, also z.B.: »apache_1.3.12_68040_php_bin.tar.gz«.

Jetzt können sie Apache konfigurieren. Anders als frühere Versionen sind nun alle Konfigurations-Befehle in einer Datei untergebracht. Kopieren Sie im Verzeichnis »conf« die Datei »http.conf-amiga-dist« nach »httpd.conf« sowie »mime.types-amiga-dist« nach »mime.types«. Zudem kopieren Sie im Verzeichnis »lib« noch die Datei »php.ini-optimized« nach »php.ini«. Dies ist die PHP-Konfigurationsdatei. PHP läuft mit dieser Konfigurationsdatei ohne Änderungen.

Nun passen Sie die Konfigurationsdatei »httpd.conf« ­ zur Sicherheit bitte nur ihre Kopie ­ an ihre Bedürfnisse an. Folgende Einträge sollten sie anpassen:

Sie sollten »ServerName« auf den Namen ihres Webservers setzen. Wird Apache nur lokal betrieben, können Sie sich einen Namen ausdenken. Es macht jedoch Sinn, diesen den TCP/IP-Stacks ihres lokalen Netzwerks oder dem lokalen DNS-Server, falls sie einen installiert haben, bekannt zu machen. Bei Miami können sie den Namen unter »Database/Hosts« eintragen, bei AmiTCP/Genesis in der Datei »etc/hosts«.Ansonsten müssen sie natürlich den von ihnen beantragten Domain-Namen als Servernamen eintragen, damit alles klappt.

Unter »DocumentRoot« sollten Sie das Verzeichnis eintragen, das Apache zum Laden von HTML-Dokumenten verwenden soll, soweit der Benutzer nicht explizit ein anderes freigegebenes Verzeichnis über die URL anwählt. Per Vorgabe ist dies »/Apache/htdocs« ­ beachten Sie die Unix-Schreibweise! Weiter unten in der Konfigurationsdatei werden sie Zugriffsrechte für dieses Verzeichnis geregelt:

 <directory "/Apache/htdocs">    

Hier sollten Sie das Verzeichnis, das sie unter »DocumentRoot« angegeben haben, eintragen. Per Vorgabe haben alle Benutzer Zugriff auf dieses Verzeichnis. Wenn Sie das ändern wollen, lesen Sie bitte die Apache-Dokumentation oder unseren Artikel »Mein Freund W.« [1].

 
Automatisch
Unter Miami/MiamiDx können sie die folgenden beiden Skripte als Online- und Offline-Ereignis verwenden. So können Sie neben dem Start von Apache auch noch andere Sachen beim Online- oder Offlinegehen automatisieren, indem Sie die Skripte erweitern: Online-Ereignis, »Miami:Rexx/Online.miami«:
/* $VER: Online.miami 1.3 (13.8.2000) (W) by Martin Steigerwald */
/* Apache */
ADDRESS REXX 'Apache:bin/starthttpd'
Offline-Ereignis, »Miami:Rexx/Offline.miami«:
/* $VER: Offline.miami 1.1 (13.8.2000) (W) by Martin Steigerwald */
ADDRESS REXX 'Apache:bin/stophttpd'

Alle Skripte finden Sie auch auf unserer Amiga-Magazin-CD im Verzeichnis Internet/Apache/Beispiele/


AmigaApache sucht nach bestimmten Endungen, um PHP-Skripte zu erkennen. Per Vorgabe ist dies nur die Endung ».php« für PHP 4-Skripte. Damit PHP 3-Skripte und ».phtml«-Dateien ebenso funktionieren, macht es Sinn, den Eintrag unter »AddType application/x-httpd-php« wie folgt zu ändern:

application/x-httpd-php .php3 .php4 .php .phtml    

Damit sollte Apache, wenn auch spärlich, so doch ausreichend konfiguriert sein, um einen ersten Test zu wagen. Doch davor muss noch der TCP/IP-Stack angepaßt werden:

TCP/IP-Stack anpassen

Internet-Ressourcen
Apache für Amiga http://amiga-apache.home.pages.de
Apache-AmiNet-Archiv comm/www/apache_1.3.12.lha
GeekGadgets http://www.ninemoons.com
Miami/MiamiDx http://www.nordicglobal.com
PHP http://www.php.net
PHP-Homepage http://www.php-homepage.de
PHP-Center http://www.php-center.de
PX - PHP Code Exchange http://px.sklar.com
Damit Apache richtig funktioniert, müssen Sie dem TCP/IP-Stack nun den User und die Gruppe, mit denen Apache läuft, bekannt machen. Als Vorgabe, die man auch nicht ändern sollte, sofern man »suexec«, das zum Starten externer Programme verwendet wird, nicht neu kompiliert, läuft Apache als User »www« in der Gruppe »www«.

Unter Miami(Dx) tragen Sie den Usernamen unter »Database/Users« etwa wie folgt ein (s. »Vorbereitung ist alles«):

User name: www 
User id:   300 
Group id:  300 
Real name: WWW-Benutzer
Home dir:  WWW: 
Shell:     noshell     

Die können bei User-ID und Group-ID auch andere Werte angeben, so lange sie sich von bereits vorhandenen Einträgen unterscheiden. Bei »Homedir« geben Sie ihr »DocumentRoot«-Verzeichnis in Ami-ga-Schreibweise an. Legen Sie nun unter »Database/ Group« noch eine passende Gruppe an:

Group name: www 
Group id:   300
Users:      www    

Korrigierte Version des »stophttpd«-Skriptes
Die Original-Version des Skriptes, das den Server wieder stoppen soll, funktioniert leider erst, sobald man die Leerzeichen zwischen Funktionsaufrufen und den in Klammern eingeschlossenen Parametern entfernt hat. Hier ist eine korrigierte Version:

/* stophttpd 1.0 */
opened = OPEN(pidfile, 'T:httpd.pid', 'R')
IF opened == 1 THEN DO
DO WHILE ~EOF(pidfile)
line = READLN(pidfile)
line = SUBSTR(line, 6)
pid = STRIP(line, 'T', ']')
say 'Shutting down httpd server ...'
ADDRESS COMMAND 'Break' '>NIL:' pid 'C' LEAVE
END
CALL CLOSE(pidfile )
ADDRESS COMMAND 'C:Delete' '>NIL:' 'T:httpd.pid' END
ELSE DO
SAY 'No process ID for httpd found.'
END

Dieses Skript finden Sie auch auf der Amiga-Magazin-CD zum Heft im Verzeichnis Internet/Apache/Beispiele.
Unter AmiTCP können Sie die entsprechenden Daten in die Datei »db/passwd« eintragen:

www|*|300|300|WWW-Benutzer|WWW:|noshell

Und die Gruppe in »db/group«:

www|*|300|www

Legen Sie bitte analog auch einen Benutzer »root« mit den folgen- den Daten an, falls noch nicht geschehen. Dieser User ist für das »starthttpd«-Skript erforderlich, mit dem der Server vom Benutzer »root« aus gestartet wird:

User name: root
User id: 0
Group id: 0
Real name: SysAdmin
Home dir:
Shell: noshell

Sowie die passende Gruppe:

Group name: wheel
Group id: 0 Users: root

Prüfen Sie nun noch ob das HTTP-Protokoll eingerichtet ist. Bei Miami(Dx) sollte dieser Service bereits unter »Database/Services« eingetragen sein:

Name: http
ID: 80
Protocol: tcp


Bei AmiTCP sollten Sie diesen Eintrag in »db/services« finden:

http 80/TCP

Der erste Test
Schreiben Sie folgenden Text in die Datei »index.html« in ihr »DocumentRoot«-Verzeichnis:

<HTML><HEAD><TITLE>Testseite</TITLE></HEAD>
<BODY>
<H1>Testseite</H1>
<P>
Nun, Apache funktioniert. Prima!
<P>
<A HREF="test.php">Und PHP?</A></BODY></HTML>

Und diesen Text in die Datei »test.php«:


<HTML><HEAD><TITLE>PHP-Testseite</TITLE></HEAD>
<BODY><H1>PHP-Testseite</H1>

Dies ist eine PHP-Testseite. Nun der <tt>phpinfo()</tt>-Befehl:
<?php print(¸<P>`); phpinfo(); ?>
</BODY></HTML>

Nun können Sie den Server bereits starten, indem Sie in einer Shell ins Verzeichnis »Apache:bin« wechseln und »httpd« eingeben. Dann können Sie den Server zum Beispiel mit unserer Testseite ausprobieren (s. »Der erste Test«).

Achten sie dabei darauf, den passenden Eigentümer für ihre HTML-Dateien zu setzen. Gehen Sie dazu in einer Shell in ihr »DocumentRoot«-Verzeichnis und geben sie folgenden Befehl ein:

chown -R www:www *

Mit »ls -l« können Sie das Ergebnis überprüfen. Nun können Sie mit einem Browser auf »http://localhost« gehen und sollten Ihre Testseite erhalten (s. »Heureka«).

Von da an können Sie den Apache-Server auch automatisch starten und beenden lassen, wenn Sie mit ihrem lokalen Netzwerk-Interface on- oder offline gehen. Dazu dienen die beiden Skripte »Apache:bin/ starthttpd« und »Apache:bin/ stophttpd« (s. »Automatisch«).

Die Verwendung des »starthttpd«-Skriptes hat einen weiteren Vorteil: Es macht »Apache« resident, so dass die doch recht große ausführbare Datei »httpd« nur einmal in den Speicher geladen wird. Das dürfte auch die Geschwindigkeit erhöhen, wenn neue Server-Prozesse gestartet werden.

So viel zur Installation des Amiga-Pache mit PHP-Support. In der nächsten Ausgabe zeigen wir Ihnen einige Beispiele. In der Zwischenzeit können Sie ja selbst schon einmal auf den unzähligen PHP-Seiten stöbern und testen, was auf dem Amiga funktioniert.

Ib

Literatur:
[1] Mein Freund W., Jörn-Erik Burkert, AMIGA Magazin 8/1998, S. 26
[2] Neues vom Indianer, Jörn-Erik Burkert, AMIGA Magazin 11/1999, S. 14
[3] Workshop: Home-Networking (Teil 2), Lokal vernetzt - aber mit Komfort!, Martin Steigerwald, AMIGA Magazin, 8/2000, S. 24

Hauptseite © 2000 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am 10. 9. 2000.