Aus dem Kopf heraus müssen Sie:
- Lernen Sie sich im Dateisystem zurecht.
- Erfahren Sie, wie Sie die von Ihnen verwendeten Prozesse (Dienste) starten/stoppen.
- Suchen oder erlernen Sie einen einfachen Texteditor (Vim, JOE oder Pico)
- Lernen Sie, nach Prozessen zu suchen, um zu sehen, ob Dinge laufen (ps, top)
- Wenn Sie den Server warten, müssen Sie lernen, wie man Pakete installiert.
Dies sind nur die Grundlagen. Der nächste Schritt besteht darin, zu erkennen, wann Sie ein Problem haben, und zu wissen, wo Sie weitere Informationen dazu finden können. Selbst bei all dem kratzt es nur an der Oberfläche und vieles macht vielleicht keinen Sinn. Es ist aber ein guter Anfang.
80 % Ihrer Probleme werden Berechtigungen sein. Windows macht sie anders; Wenn Sie sich als root (oder mit root-ähnlichen Privilegien) anmelden, können Sie Berechtigungen umgehen. Apache kann und will nicht.
- Erfahren Sie, wie Sie den Besitz von Dateien und Verzeichnissen richtig festlegen. Jedes Unix-Buch wird dies behandeln:Stellen Sie sicher, dass Sie es wirklich verstehen – es ist nicht anders geschriebene Windows-Sicherheit – es ist ein anderes Sicherheitsmodell.
Von den verbleibenden Problemen werden 80 % PATH-Probleme sein. PHP hat kein so großes PATH-Problem wie Java und Python, aber sie alle verwenden eine PATH-Einstellung, um Komponenten und Bibliotheken zu finden. Sie werden diese regelmäßig falsch machen. Windows hat einen PATH, aber es hat auch eine Registrierung, was die Dinge entweder super einfach oder super geheim macht. Unix hat keine Geheimnisse.
- Erfahren Sie, welche Umgebungsvariablen PHP und MySQL verwenden. Stellen Sie sicher, dass Sie wissen, wo und wie sie eingestellt werden. Apache läuft in seiner eigenen speziellen Umgebung und verfügt über Befehle zum Bereitstellen von Laufzeitumgebungseinstellungen über
mod_php
. Schreiben Sie kurzecho $PATH
Shell-Skripte, um zu enthüllen, was vor sich geht.
Von den verbleibenden Problemen werden 80 % datenbankbezogen sein. Nachdem Sie die Datenbankberechtigungen aussortiert haben, müssen Sie immer noch eine Verbindung herstellen, und das "Named Pipe" vs. "Localhost"-Zeug wird auf obskure, verwirrende Weise falsch sein. MySQL ist sehr nachsichtig, aber Sie werden hier einige Fehler machen.
- Probieren Sie jede alternative Verbindung aus, um zu erfahren, wie sie funktioniert. Wählen Sie keines aus, weil es Windows-ähnlich oder "einfacher" ist. Üben Sie tatsächlich jeden aus. Es ist auch wichtig, wie Sie Benutzernamen und Passwörter von der Webanwendung an den Datenbankserver übergeben. Apache läuft als "niemand" - und Sie möchten ihnen keinen Standardzugriff auf irgendetwas geben. Ihre App sollte eine absichtliche Verbindung zur Datenbank herstellen, ohne Standardwerte zu verwenden.
80 % der verbleibenden Probleme werden Apache-Konfigurationen sein. Apache ist wirklich einfach, hat aber eine Million Optionen. Es gibt vier Möglichkeiten, alles zu tun, und Sie werden immer zwei ausprobieren, die überhaupt nicht funktionieren, und sich mit der dritten zufrieden geben, die eklig sein wird. Die vierte, die viel einfacher ist, wird Ihnen nie in den Sinn kommen.
- Lesen Sie VIEL über die Apache-Konfiguration. Die Website httpd.apache.org enthält viele Informationen. Strebe nach Einfachheit. Kopieren Sie vorhandene Beispiele und verwenden Sie sie. Erfinden Sie keine Anforderungen oder gewünschten Implementierungen basierend auf Erfahrungen mit IIS oder Windows-Desktops. Kopieren Sie etwas, das funktioniert.
80 % der verbleibenden Probleme sind die Verwendung des Dateisystems durch die Anwendung. Wenn Sie versuchen, lokale Dateien zu öffnen, zu lesen oder zu schreiben, werden Sie feststellen, dass (a) die Berechtigungen für das Verzeichnis, das Sie verwenden möchten, nicht korrekt sind [siehe oben] und (b) die Unix-Dateipfade unterschiedlich sind. Nicht viel anders, aber genug anders, dass etwas auf obskure Weise kaputt geht.
- Jedes Programmierbuch in Unix/Linux behandelt dies. Es ist nicht viel anders als Windows, gerade genug anders, um Sie beim ersten Mal zu stolpern. Schreiben Sie "Hallo Welt"-ähnliche PHP-Seiten, um die einfachstmögliche Version von Uploads oder Downloads zu sprengen, nur um sicherzustellen, dass Sie alle Teile und Teile an Ort und Stelle haben. Korrigieren Sie dann Ihre vollständige App, damit sie korrekt ausgeführt wird.
80 % der verbleibenden Probleme sind die Erstellung von Unterprozessen. Windows macht das anders. Eines der wichtigsten Dinge in Unix ist, sich daran zu erinnern, dass Ihr Unterprozess Ihr untergeordneter Prozess ist und Sie tatsächlich warten müssen, bis er beendet ist, damit das Betriebssystem aufräumen kann. Wenn Sie sich einen Unterprozess als ein paralleles „Fire-and-Forget“-Ding vorstellen, haben Sie Zombie-Prozesse und sind gezwungen, regelmäßige Neustarts durchzuführen.
- Schreiben Sie sehr einfache PHP-Seiten, um die Unterprozessverwaltung zu beschleunigen. Die goldene Regel ist, mit Ihren Kindern umzugehen und hinter ihnen aufzuräumen. Korrigieren Sie dann Ihre vollständige App, damit sie korrekt ausgeführt wird.
Die verbleibenden Probleme werden triviale Anwendungslogik sein, aber wegen der Plattformunterschiede geben Sie Unix die Schuld, bevor Sie den Fehler in der PHP-Anwendung aufspüren.
- Sorgen Sie dafür, dass Ihre Einheitentests und Ihre Protokollierung in Ordnung gebracht werden, damit Sie effektiv debuggen können.