PHP Entwicklungs-Server

PHP Entwicklungs-Server

Zielgruppe für die allgemeinen Informationen dieser Seite sind StudentInnen und ambitionierte Informatik-Amateure

Die Installation eines eigenen PHP Entwicklungs-Servers erfordert allerdings fortgeschrittene Kenntnisse. Die meisten Informationen dieser Seite sind daher für diese Zielgruppe bestimmt.



Entwicklungs-Umgebung



Man muss die PHP-Programme in diesem Fall am eigenen Arbeits-PC erstellen und (nach jeder Änderung) auf den Server des Providers hochladen. Erst danach kann man sie mit einem Browser testen.

Es ist sehr aufwändig, die unvermeidlichen Fehler zu finden, weil an einem Provider-Server meist die Fehler-Meldungen von PHP abgeschaltet sind.

Diese Entwicklungs-Umgebung ist daher nur für wenige ganz einfache Experimente geeignet.

Die Beispiele → Erzeugung von Text und → Erzeugung von HTML sind für erste Versuche mit PHP geeignet.



Am Server-PC muss mindestens ein Webserver-Programm installiert und konfiguriert werden. Standard ist Apache, seltener Lighttpd oder NGIИX.

Sinnvoll und üblich ist die Installation weiterer Server-Programme, z.B. Datenbank ( MariaDB, MySQL, PostgreSQL), FTP ( vsftpd, proftpd), FileServer ( Samba).

PHP wird meist als Apache-Modul installiert, mit Lighttpd als fastcgi-Modul, mit NGINX als PHP-FPM.
Zusätzlich werden meist auch die Programmiersprachen Java (JDK) und Perl (als Apache-Modul) installiert.



Der Entwicklungs-Server muss rasch und einfach zugänglich sein, z.B. zur Änderung der Konfiguration, Installation neuer Software, Austausch von Dateien usw.
Der Server muss daher im eigenen lokalen Netzwerk (LAN) vom Arbeits-PC erreichbar sein.

Es gibt verschiedene Varianten, um diese Forderungen zu erfüllen, z.B. Diese Versionen werden in den folgenden ↓ Kapiteln vorgestellt.

Virtueller Entwicklungs-Server


Ein Virtueller PC ist eine Datei (!), die man mit einem Virtualisierungs-Programm öffnen kann. Im Programm-Fenster des realen (Host)-PC erscheint ein kompletter (simulierter) Gast-PC, den man mit Maus und Tastatur des realen PC bedienen kann.

Details zur → Virtualisierung mit dem kostenfreien Programm VirtualBox



Ein Virtueller PC wird sparsam ausgestattet und verwaltet normalerweise keine Daten. Er kommt daher mit einer virtuellen Festplatte von 4-8 GiB aus, im Extremfall sogar mit 2 GiB. Dafür braucht man auf der Festplatte des realen Host-PC etwa doppelt viel freien Platz.

Ein Virtueller PC teilt sich mit dem realen Host-PC dessen Hauptspeicher. Man braucht daher für Entwicklung und Betrieb ca. 2-6 GiB freien Hauptspeicher am realen Host-PC.



Ein professioneller Server arbeitet ohne Desktop. Wenn sie jedoch wenig Erfahrung mit Linux Konsolen-Programmen haben, dann sollten sie einen Desktop installieren: Das kostet zwar Server-Leistung, erleichtert jedoch die Arbeit.

Erzeugen sie von der ersten lauffähigen Version des Virtuellen Servers (d.h. von seiner Festplatten-Datei *.vdi) und von jedem weiteren wichtigen Version (Meilenstein) eine Sicherungs-Kopie.

Installieren sie weitere Software am besten mit dem dazu vorgesehenen Programm des jeweiligen Systems (z.B. auf Debian Anwendungen / Systemwerkzeuge / Software hinzufügen)

Konfigurieren sie alle installierten Programme in kleinen überschaubaren Schritten. Dazu werden meist einfache Text-Dateien im Verzeichnis /etc verwendet.
Hilfe finden sie im Pfad /usr/share/doc, im Internet und mit dem Konsolen-Manual, z.B.
# man apache2
# man php

Archivieren sie den fertigen Virtuellen Server und verwenden sie ihn niemals zur praktischen Arbeit: Erzeugen sie dazu eine eigene Arbeits-Kopie.



Wenn sie den Produktions-Server nicht exakt nachbauen können, dann achten sie auf die Kommentare zu den jeweiligen Versionen. Testen sie die erzeugten Produkte in den kritischen Punkten besonders sorgfältig.

Automatische Updates sind nicht sinnvoll und werden von Linux auch nicht erzwungen. Führen sie Updates nur parallel zum Produktions-Server durch.

Wer mit mehreren Produktions-Servern arbeitet, erzeugt für jeden einen eigenen Virtuellen Entwicklungs-Server. Meist genügt es, einen bereits vorhandenen Virtuellen Server zu kopieren und etwas zu verändern.

Wenn der Entwicklungs-Server portabel verwendet werden soll, dann kann man darauf auch Entwicklungs-Software (z.B. ein Web-Editor-Programm) installieren. Damit kann man in einem fremden Netzwerk nicht nur den Server betreiben sondern auch (mit → Fernsteuerung) HTML- oder PHP-Dateien erzeugen und ändern.



Ein Virtueller Entwicklungs-Server enthält typisch alle Dateien eines gesamten Webs als Kopie:
Man kann vor Beginn der Entwicklung die aktuellen Daten vom Archiv auf den Entwicklungs-Server kopieren. Nach der Arbeit kopiert man nur die stabilen (neuen oder geänderten) Produkte ins Archiv bzw. auf den Produktions-Server.



Man kann einen Virtuellen Server auf fast jedem realen Arbeits-PC betreiben. Dazu muss das Virtualisierungs-Programm VirtualBox installiert und am realen PC genügend Hauptspeicher verfügbar sein. Das Betriebssystem des realen Host-PC spielt keine Rolle.
Der Datenträger, auf dem sich die Dateien befinden, muss schnell genug sein: Auf einer USB-Festplatte kann man einen Virtuellen PC betreiben, auf den meisten USB-Sticks zwar transportieren, jedoch nicht betreiben: In diesem Fall muss man die Dateien vor Verwendung auf die Festplatte des realen PC kopieren.

Mit Virtuellen Servern kann man fast beliebig viele unterschiedliche Server nachbauen und bei Bedarf rasch in Betrieb setzen. Ein Archiv von 10...100 Virtuellen Servern braucht lediglich einigen Speicherplatz.

Entwicklungs-Server auf einem µC


Dieses Web wird auf einem Raspberry-µC entwickelt. Alle weiteren detaillierten Hinweise beziehen sich auf diesen µC-Typ. Man kann jedoch auch andere µC verwenden.

Mit einem µC kann man viele erstaunlich leistungsfähige Anwendungen zu geringen Kosten und mit minimalem Stromverbrauch herstellen.
Als Intranet-Provider kann man den hier beschriebenen µC-Server gleichzeitig für 10-20 StudentInnen verwenden.


Ein µC ist transportabel, eigenständig und unabhängig. Man kann ihn in jedem fremden Netzwerk verwenden.
Einzige Voraussetzung ist ein DHCP-Server, welcher dem µC eine lokale IP-Adresse zuweist. In der Praxis übernimmt diese Aufgabe meist ein (WLAN)-Router, welcher gleichzeitig die Verbindung mit dem Internet herstellt.
Man braucht in einem fremden Netzwerk weder einen PC noch irgendwelche Rechte und kommt zur Freude der jeweiligen IT-AdministratorInnen ohne Software-Installation aus.
Notfalls kommt man auch ohne Netz-Strom aus, wenn man die ca. 3-4W Energie aus einer Batterie bezieht.
Ein µ-Server ist ohne weitere Maßnahmen ca. 2 Minuten nach dem Einschalten arbeits-bereit.



Danach wird die gesamte weitere Server-Software installiert: Mindestens Webserver und PHP, meist auch DB-Server, FileServer, NTP-Server, FTP-Server, Java (JDK), Perl als Webserver-Modul und am besten auch den Standard C/C++ Compiler.
Einige weitere Details werden im Kapitel ↑ Virtueller Entwicklungs-Server vorgestellt.

Die meisten µC enthalten keine Batterie und kennen daher nach dem hochfahren weder Datum noch Zeit. Daher installiert man auch einen NTP-(Zeit)-Server und konfiguriert ihn so, dass er nach dem Hochfahren die aktuelle Zeit von einem externen → Zeit-Server anfordert.



Wenn man Entwicklung für mehrere unterschiedliche Produktions-Server betreibt, dann braucht man trotzdem nur eine einzige µC-Hardware:
Die als 'Festplatte' verwendete Speicherkarte lässt sich auf jedem Arbeits-PC in einigen Minuten kopieren. Die Kosten zusätzlicher Speicherkarten sind gering, es wird jedoch empfohlen, auf hohe Qualität und Geschwindigkeit zu achten.
Man kann beliebig viele Kopien einer Speicherkarte herstellen und danach jede Kopie für einen bestimmten Produktions-Server (oder anderen Zweck) optimieren.



Ein µC-Server funktioniert ohne weitere Maßnahmen in jedem lokalen Netzwerk, wenn der jeweilige (WLAN)-Router das erlaubt.
Das ist normalerweise der Fall, daher braucht man für diese Version eines Entwicklungs-Servers keinerlei zusätzliche Rersourcen oder Zugangs-Rechte.
Umgekehrt kann man die Zugangs-Rechte aller User des jeweiligen Netzwerks am eigenen Entwicklungs-Server beliebig konfigurieren.

Diese Version eines Entwicklungs-Servers ist in einem fremden Netzwerk am schnellsten verfügbar, und zwar ohne weitere Maßnahmen ca. 2 Minuten nach dem Einschalten.

Mit Speicherkarten kann man fast beliebig viele unterschiedliche Server nachbauen und bei Bedarf rasch in Betrieb setzen.



Eine andere Version erfordert weder Software noch Zugangs-Rechte, ist jedoch relativ aufwändig zu programmieren:
Am µC-Server wird ein (PHP oder Perl)-Programm installiert, welches nach dem Hochfahren die aktuelle IP-Adresse liest und als HyperLink in den HTML-Quelltext einer Webseite einsetzt. Diese wird vom gleichen Programm auf einen im Internet erreichbaren Server mit bekannter Adresse hochgeladen:
Wenn man diese Webseite in einem beliebigen Browser anfordert, dann wird die lokale (!) IP-Adresse des µC-Servers angezeigt und man gelangt mit Klick auf den Link direkt dorthin.

Andere Versionen erfordern Hardware und Software:
Man kann einen (beliebigen ausrangierten) Bildschirm an den µC anschließen und mit einem einfachen Konsolen-(Bash)-Programm nach dem Hochfahren die aktuelle IP-Adresse an der Konsole anzeigen.

Man kann den µC mit einem kleinen Display-Modul ausrüsten. Ein (PHP oder Perl)-Programm liest die aktuelle IP-Adresse und zeigt sie am Display an.

Server-PC


Ein derartiges Entwicklungs-System war bis vor einigen Jahren zumindest für größere professionelle Entwickler selbstverständlich.

Eine Entwicklungs-Umgebung auf realer Hardware ist heute nur mehr selten anzutreffen. Meist wurden diese Systeme durch ↑ Virtualisierung ersetzt.



Die gesamte ↑ Standard-Software ist kostenfrei. Einige Details werden im Kapitel ↑ Virtueller Entwicklungs-Server vorgestellt.

Ein Server-PC arbeitet im eigenen lokalen Netzwerk eigenständig und unabhängig. Man kann ihn jedoch nur mit großem Aufwand transportieren. Eine portable Anwendung ist daher ausgeschlossen.



Danach wird die gesamte weitere Server-Software installiert: Mindestens Webserver und PHP, meist auch DB-Server, FileServer, NTP-Server, FTP-Server, Java (JDK), Perl als Webserver-Modul und am besten auch der Standard C/C++ Compiler.

Einige weitere Details werden im Kapitel ↑ Virtueller Entwicklungs-Server vorgestellt.

An einem Server-PC kann man nur eine einzige Konfiguration installieren. Man wählt daher Programme und Versionen entweder passend zu einem einzigen Internet-Produktions-Server oder passend zum eigenen LAN-Server.



Alle realen und virtuellen Server sind gleichzeitig verfügbar. Man kann die Server so konfigurieren, dass sie auf die gleichen (*.html und *.php)-Dateien zugreifen: So braucht man ein Web nur 1mal anzulegen und kann die Brauchbarkeit mit mehreren Kombinationen von WebServer und/oder PHP testen. Jeder Server bietet das Web auf einer anderen (IP)-Adresse an.

Die technischen Möglichkeiten sind enorm, die Kosten praktisch Null, diese Lösungen erfordern allerdings fortgeschrittene Kenntnisse zur Installation und Konfiguration.

XAMPP


XAMPP lässt sich auch von wenig erfahrenen Windows-AnwenderInnen am eigenen Arbeits-PC installieren. Es eignet sich gut für einfache Experimente, ist jedoch für fortgeschrittene Entwicklung wenig empfehlenswert.



Mit XAMPP wird Server und Client am gleichen PC installiert. Das erschwert vor allem wenig erfahrenen AnwenderInnen die Unterscheidung von Server und Client.

XAMPP vergrößert die Anzahl der installierten Programme an den ohnehin meist hoffnungslos überladenen Privat-PC. Bei der Server-Programmierung sollte man jedoch den umgekehrten Weg gehen und mit schlanken spezialisierten Computern arbeiten.



Wenn keine realen oder virtuellen Entwicklungs-Server zur Verfügung stehen, dann kann man trotzdem mit XAMPP einfache Aufgaben programmieren und testen.



Wenn professionelle Hilfe verfügbar ist (wie z.B. in der IT-Ausbildung), dann ist XAMPP nicht sinnvoll.
Man installiert besser 1malig ein komplettes (Linux)-Entwicklungs-System an einem ↑ Virtuellen PC und kopiert dessen Datei für alle StudentInnen. Das ergibt ein schnelles, sauberes Entwicklungs-System.

PHP Version 7


PHP-Version 7

ist die aktuelle Version der Programmiersprache PHP.
Sie bringt viele Vorteile, insbesondere eine wesentlich schnellere Ausführung.
Man muss damit rechnen, dass alle gängigen Web-Programm-Pakete früher oder später auf PHP‑Version 7 umgestellt werden.
Neue Entwicklungen sind nur mit dieser aktuellen Version sinnvoll.

  Einige Änderungen sind nicht mit älteren Versionen kompatibel.
Man muss daher abwarten, bis die verwendeten Web-Programm-Pakete in einer Version für PHP‑7 zur Verfügung stehen und bis der eigene Web-Provider diese Version ebenfalls unterstützt.

Es ist sehr empfehlenswert, das jeweilige Web vor dem Umstieg auf die neue PHP-Version sorgfältig zu testen.



Wer selbst Entwicklung mit der Programmiersprache PHP betreibt, informiert sich über die Änderungen, z.B. bei php.net
Bei eigenen Entwicklungen wird vorausgesetzt, dass man sie nicht auf dem Live Produktions-Web sondern auf einem eigenen Test-Server programmiert und testet.

Es ist sinnvoll, für die PHP-Versionen 5 und 7 getrennte Test-Server einzusetzen.
Solange das real verwendete Web noch mit PHP‑5 läuft, wird der Server mit PHP‑7 dazu verwendet, um die eigenen PHP-Programme auf die neue Version umzustellen. PHP wird so konfiguriert, dass alle Fehler, Warnungen und Hinweise angezeigt werden: Nur so kann man eigene Programme wirklich sauber und Zukunfts-sicher erstellen.
Wenn das reale Web auf PHP‑7 umgestellt ist und wenn die Programme auf dem PHP-7-Testserver erfolgreich laufen, wird der Test-Server mit PHP‑5 aufgelassen.



Der Test-Server kann in verschiedenen Versionen installiert werden:
  • Am einfachsten und am besten geeignet ist ein ↑ Virtueller Server-PC. Man kann diesen Server selbst genau nach Bedarf installieren oder (für die Ausbildung) als fertig konfigurierte Datei kopieren und an beliebig viele AnwenderInnen verteilen.
  • Man kann einen ↑ realen (älteren, ausrangierten) PC oder auf einem ↑ µC als Test-Server einrichten und im eigenen lokalen Netzwerk verwenden.
  • Man kann den eigenen Intranet-Server verwenden, soferne ein solcher vorhanden ist. In diesem Fall muss man jedoch Produktions- und Entwicklungs-Server voneinander trennen. Die Konfiguration unterschiedlicher 'virtueller' Webserver ist nicht ganz einfach.
  • Man kann ein Software-Paket wie ↑ XAMPP am eigenen Arbeits-PC verwenden. In diesem Fall verhält sich der Server jedoch mehr oder weniger anders als ein realer Standard LAMP-Server.



Andere Distributionen (z.B. Debian) verfolgen eine konservative Politik und werden PHP‑7 vermutlich erst nach einiger Zeit anbieten, und auch das anfangs nur als alternative Option zu PHP‑5. Die Installation von PHP‑7 auf Debian ist möglich, erfordert derzeit jedoch noch fortgeschrittene Kenntnisse von Linux.
Dieses Web wird laufend sowohl mit PHP‑5 als auch mit PHP‑7 auf allen gängigen Betriebssystemen und mit allen gängigen Browsern getestet.



PHP wird mit dem gleichen → API installiert wie am Produktions-Server, d.h. meist als Apache-Modul.

Die Konfiguration von PHP ist in der Datei php.ini festgelegt. Der Pfad zu dieser Datei unterscheidet sich je nach Betriebssystem, typisch ist auf Linux /etc/php*
Meist gibt es unterschiedliche Konfigurations-Dateien für PHP als Webserver-Hilfsprogramm (CLI) und als Konsolen-Programm (CLI). Man legt vor jeder Änderung der Konfiguration eine Sicherungs-Kopie der Datei php.ini an.

Die Konfiguration von PHP (als CGI) sollte weitgehend jener des Produktions-Servers folgen. Diese ist bei einem Web-Provider nicht zugänglich. Man verwendet in diesem Fall eine Webseite mit der PHP-Funktion → phpinfo() zur Live-Ausgabe aller Konfigurations-Daten.
Die einzige wesentliche Abweichung der PHP-Konfiguration ist die Ausgabe aller Fehler-Meldungen, Warnungen und Hinweise am Test-Server (Variable error_reporting).