Neues Spielzeug (XAMPP installieren)

2009/01/26

In diesem Teil werden die Werkzeuge installiert, die unsere Ubuntu-VM zur Web-Applikations-Spielwiese machen:

Teil 3: XAMPP installieren

Profis würden jetzt die Pakete einzeln installieren; Apache, MySQL, PHP, Perl. Kann man auch, aber es dauert eine Weile und man muss an vielen Stellen Einstellungen ändern, Dateien verschieben und so weiter.

Deshalb holen wir uns das Komplettpaket XAMPP von Apachefriends.org. Das gibt es für Linux, Windows und Mac, und es ist gerade auf Linux sehr einfach zu installieren.

Download und Installation

  • In der VM den Firefox-Browser öffnen, entweder oben in der Mitte des Bildschirms oder über Anwendungen / Internet.
  • apachefriends.org im Browser aufrufen und XAMPP für Linux anwählen. Die Seite am besten mal kurz durchlesen.
  • XAMPP Linux runterladen. Normalerweise speichert Firefox ins Desktop-Verzeichnis, in unserem Fall /home/mes/Desktop.
  • Terminal-Fenster (Shell) öffnen (Anwendungen / Zubehör / Terminal) und ins Download-Verzeichnis wechseln: „cd Desktop“
  • Prüfen, dass das XAMPP-Paket hier liegt: „ls -l“
    Es sollte xampp-linux-1.7.tar.gz oder ähnlich heissen
  • Jetzt folgt der Zauberspruch für die Installation: „sudo tar xvfz xampp-linux-1.7.tar.gz -C /opt“
    Dabei wird das User-Passwort abgefragt; siehe Teil 2.

Das war’s schon. Was ist passiert? Der Inhalt des Pakets wurde in das System-Verzeichnis opt entpackt. Mehr muss man nicht tun, um XAMPP lauffähig zu installieren.

Im einzelnen:
„sudo“ – den folgenden Befehl im „super user“-Modus ausführen, deshalb die Passwortabfrage.
„tar“ – ist ein Standard-Unix Pack/Entpackprogramm. Dateien mit der Endung tar sind seine.
„xvfz“ – sind die Parameter für tar: x = entpacken; v = verbose, viel Ausgabe; f = es folgt ein tar-Dateiname; z = es ist ein komprimiertes tar (.gz).
„xampp-linux-1.7.tar.gz“ – der Paketname
„-C /opt“ – eine Option von tar, bedeutet Auspacken in das folgende Verzeichnis (/opt).

Warum „/opt“? Das ist Konvention. Technisch könnten wir XAMPP und jedes andere Programm in jedem Verzeichnis abspeichern und starten. Aber opt ist das traditionelle Systemverzeichnis für optionale Pakete.

Erststart

Im schon geöffneten Terminal tippen wir: „sudo /opt/lampp/lampp start“

„sudo“ kennen wir schon. „/opt/lampp/lampp“ ist das Startprogramm für XAMPP im Verzeichnis /opt/lampp und „start“ heisst genau das: XAMPP starten. Die anderen Optionen für das Startprogramm sind „stop“ und „restart“.

Es sollte „XAMPP fuer Linux gestartet“ ausgegeben werden. Wenn ja, dann laufen jetzt Apache (Webserver), MySQL (Datenbank) und PHP sollte auch verfügbar sein. Das testen wir im Firefox, indem wir localhost oder 127.0.0.1 aufrufen. Der Splash-Screen von XAMPP sollte erscheinen. Wir klicken auf „Deutsch“ – die Hauptseite von XAMPP erscheint – und danach links auf „Status“.

So sollte es dann auf dem Bildschirm aussehen:
xampp_install_01

Wo ist was?

Das wichtigste Verzeichnis auf unserer VM ist jetzt /opt/lampp/htdocs. Das ist das Web-Hauptverzeichnis. Zum Test erstellen wir eine erste PHP-Seite.

  • Im Terminalfenster ins Web-Verzeichnis wechseln: „cd /opt/lampp/htdocs“
  • Mit einem Editor eine neue Datei anlegen: „sudo gedit info.php“
  • In diese Datei die Zeile „<?php phpinfo(); ?>“ eintippen
  • Abspeichern, und
  • im Firefox „localhost/info.php“ aufrufen.

Wenn alles geklappt hat, sollte folgendes zu sehen sein:

xampp_install_02

Gruppenarbeit (Berechtigungen)

Warum schon wieder sudo bei einem simplen Editor? Weil /opt ein Systemverzeichnis ist, in dem wir als Benutzer mes eigentlich nicht schreiben dürfen. Andererseits muss der Webserver die Dateien auch lesen dürfen. Das heisst: Bei allen Dateien, die wir über den Webserver verarbeiten wollen, müssen wir darauf achten, dass die Leserechte ausreichen.

Der Webserver läuft unter dem User nobody. Wir sind normalerweise als mes angemeldet und mit sudo sind wir plötzlich root, also Systemadministrator.

Welche Berechtigungen bei einer Datei gesetzt sind, sieht man mit „ls -l“.

xampp_install_032

Wichtig für uns: Vor jeder Datei, die der Webserver verarbeiten soll, müssen links in der ls-Liste drei „r“ stehen. Drei, weil es die Lese-Berechtigungen („read“) für den Besitzer, die Gruppe des Besitzers und „other“ sind. Sollten keine drei „r“ dort stehen, kann man sie mit „sudo chmod ugo+r dateiname“ setzen. Alles weitere erklärt die man page für chmod, die man im Terminalfenster mit „man chmod“ ansehen kann. Die Kurzfassung gibt es mit „chmod –help“.

Automatischer Start

Leider müssen wir XAMPP bei jedem Start der VM neu starten („sudo /opt/lampp/lampp start“). Das ist hinderlich, deshalb benutzen wir die immer noch geöffnete Shell (das Terminalfenster), um XAMPP automatisch mit Ubuntu zu starten:

  • Wechseln ins Verzeichnis /etc: „cd /etc“
  • Die Datei rc.local in einen Editor laden: „sudo nano rc.local“
  • vor „exit 0“ die Zeile „sudo /opt/lampp/lampp start“ einfügen
  • Beenden mit Strg-X, speichern bestätigen mit J

Jetzt die VM neu starten, um den Autostart zu testen.

Was haben wir getan? Die Datei „/etc/rc.local“ enthält Befehle, die beim Start von Ubuntu ausgeführt werden. Normalerweise ist sie leer, aber aufgerufen wird sie trotzdem. Wir haben einfach die Zeile eingefügt, die wir sonst per Hand eintippen müssten.

Linux-Profis werden hier möglicherweise die Nase rümpfen; wenn sie diese Anleitung überhaupt lesen. Ja, es gibt andere Wege, Programme beziehungsweise „Dienste“ beim Systemstart zu starten. Aber wir bauen eine Spielwiese und beschränken uns auf die einfachste Methode.

Und nu?

Well, die Spielwiese läuft. Am besten jetzt eine Kopie der VM erstellen, denn so rein und frisch kriegen wir sie nie wieder zusammen. Der nächste Teil, Installation von Drupal in der VM, erscheint nicht hier, sondern im Blog Doku-Hotline meiner Frau, für die ich diese kleine Anleitung eigentlich geschrieben habe.

Advertisements

Wir brauchen mal schnell nen Web-Portal…

2008/12/22

In einem früheren Beitrag war die kurz die Rede von einer Konfigurations-Webseite für die Datenverdichtung.
Aber wo installiert man die auf einem proprietären Windows-System, ohne sich tagelang in die Tiefen des IIS und ASP.NET zu verbasteln? Und woher bekommt man ein anständiges Design, Benutzer-Verwaltung, Zugangsrechte, etc.pp.?

IIS war Pflicht, weil schon das Portal des Reporting-Tools drauf lief. Port 80 also belegt, anderer Port für Anwender entweder zu kompliziert oder nicht benutzbar (interne Firmenrouter lassen nicht alle Ports durch).

Meine Lösung als bekennender PHP-Liebhaber: PHP drauf, mit IIS verbinden, MySQL und Drupal. Drupal ist ein freies CMS und bietet aus dem Stand das ganze Drumherum für ein Web-Portal: Benutzerverwaltung, berechtigungsspezifische Menüs, Gestaltung per Themes, usw.

Das eigentlich interessante an Drupal ist aber: Jede erstellte Seite kann per Knopfdruck auf PHP umgeschaltet werden. Als Entwickler kann man sich also ganz auf die Inhalte konzentrieren.

drupal_php_inhalt

PHP installieren und mit IIS zum rennen bringen: 3 Stunden. MySQL: Vernachlässigbar. Drupal mit Auswahl des Themes, Icons anpassen, Basismenüs und erste Benutzer einrichten; also bis die erster Inhaltsseite erstellt werden konnte: noch mal 3 Stunden. Es war schliesslich meine erste produktive Drupal-Installation 🙂

Jedenfalls waren die Eingabe-Forms dann sehr schnell realisiert.

Tipps für PHP-Seiten in Drupal

  • In neueren Drupal-Versionen muss das Eingabeformat PHP erst freigeschaltet werden.
    In der deutschen Version:
  1. Anmelden als Administrator
  2. Unter Verwalten / Einstellungen / Eingabeformate den Eintrag „PHP Code“ konfigurieren, so dass mindestens der Administrator dieses Format nutzen darf.
  • Die PHP-Seiten werden von Drupal per eval() verarbeitet. Deshalb müssen alle Variablen ausserhalb von Funktionen als global gekennzeichnet werden. Am besten wie eine traditionelle Deklaration in C.
    Das betrifft auch Variablen in den eigenen include() und require(), nicht jedoch mit define() erzeugte Konstanten.
  • Die Skripte verschwinden in der Datenbank von Drupal und sind damit schlecht in einer IDE zu bearbeiten. Wenn man gleich zu Beginn ein include() mit passenden Pfaden benutzt, kann man sehr bequem auf die eigentlichen Skripte in einem extra Verzeichnis verlinken.

In Drupal:

<?php
include('meine_include_pfade.php'); // setzt u.a. APPL_DIR
include(APPL_DIR . 'das_eigentliche_skript.php');
?>