zur Navigation springen


Webserver unter Lenny

Apache PHP MySQL PHPmyAdmin

erstellt 06.2007
angepasst 07.2008 / 03.2009

Ein leistungsstarker Webserver unter Linux ist meist ein LAMP- System. Linux Apache MySQL PHP
Diese Komponenten lassen sich leicht und schnell in Lenny installieren.

Alternativ gibt es auch Zusammenstellungen von diesen und weiteren Paketen die sehr einfach installiert werden können wie XAMPP. Diese erhalten sehr viele Programme, die aber oft nicht benötigt werden, außerdem wollen wir ja was lernen.


Apache Apache MySQL

Installieren eines einfachen Apache Webservers mit Apache, MySQL
$ aptitude install apache2 php5 mysql-server mysql-client
    MySQL root Passwort: geheim

Bevor wir weiter installieren, informieren wir uns über unsere Apache und PHP5 Installation.
Im Browser gehen wir auf die Seite http://[IP-Adresse], erscheint "It works!", so läuft schon mal Apache.
Zum testen von PHP erstellen wir die Datei info.php in unserem Dokumenten-Root /var/www:
$ vi /var/www/info.php
<?
phpinfo();
?>
Im Browser gehen wir auf die Seite http://[IP-Adresse]/info.php
Hir können wir sehen welche Versionen und Einstellungen vorgenommen worden sind.

PHPMyadmin

PHPMyadmin ist nützlich zur Administration von MySQL-Datenbanken
$ aptitude install phpmyadmin
    Für welche Zugriffe soll PHPMyadmin eingerichtet werden:
    Ich wähle alles ausser apache.

Im Browser gehen wir auf die Seite http://[IP-Adresse]/phpmyadmin/
    Als Benutzername geben wir "root" ein
    Als Passwort geben wir das MySQL root Passwort ein: "geheim".

Anpassungen


Um einige "alte" Programme zum laufen zu bekommen, habe ich die Variablen in der Datei
    etc/php5/apache2/php.ini register_globals, safe_mode_gid von Off auf On
gestellt. Sollte nur durchgeführt werden, wenn Bedarf besteht, die Sicherheit der Scripts wird stark herabgesetzt! Bei Entwicklungsumgebungen sollte dieses nie eingestellt werden, da es eigentlich nicht mehr Stand der Technik ist.

Bei einer Installation von Apache2, musste in der /etc/apache2/apache2.conf AddDefaultCharset ISO-8859-1 wieder aktivieren um die deutschen Umlaute auf der Webseite wieder zu erhalten.

Um bei schreibenden PHP-Programmen (CMS) keine Berechtigungsprobleme zu bekommen, kann in /etc/apache2/apache2.conf das schreiben/lesen von User und Group auf intranet umgestellt werden
User intranet
Group intranet
Natürlich muss dieser User erst mal angelegt worden sein (Siehe unten).

Um die Einstellungen wirksam werden zu lassen müssen diese neue gestartet werden.
$ /etc/init.d/apache2 restart


Windowsanbindung

Um von einem Windowssystem aus anständig Intranetseiten basteln zu können, ist eine Freigabe auf /var/www nötig:
Legen wir hierzu erst mal einen User intranet an
adduser intranet
Lege Benutzer »intranet« an ...
Lege neue Gruppe »intranet« (1001) an ...
Lege neuen Benutzer »intranet« (1001) mit Gruppe »intranet« an ...
Erstelle Home-Verzeichnis »/home/intranet« ...
Kopiere Dateien aus »/etc/skel«

... Enter new UNIX password: geheim Retype new UNIX password: geheim passwd: Kennwort erfolgreich geändert Ändere Benutzerinformationen für intranet Geben Sie einen neuen Wert an oder ENTER für den Standardwert Name [intranet]: intranet Raumnummer []: 123 Telefon geschäftlich []: 123 Telefon privat []: 123 Sonstiges []: Intranet User Sind die Informationen korrekt? [j/N] j

SMB benötigt noch sein eigenes Passwort
cd /etc/samba
smbpasswd -a intranet
New SMB password: geheim
Retype new SMB password: geheim
Added user intranet.

Die smb.conf unter etc/samba mit dem Inhalt
[intranet]
	comment = Intranet
	path = /var/www
	read only = No
	create mask = 0777
erweitern.

Die bestehenden Berechtigungen auf Dateien/Odenern in der Freigabe anpassen.
$ chmod 0777 -R /var/www

Um unsere Änderungen wirksam werden zu lassen, wird Samba neu gestartet.
$ /etc/init.d/samba restart


Sicherung der Datenbank

In unserem Beispiel sichern wir einfach alle Datenbanken auf den Webserver/mysql-sicherung.
$ mkdir /var/www/mysql-sicherung Sicherungsordner erstellen.
$ /usr/bin/mysqldump --opt --add-drop-table --user=root --password=geheim --all-databases > /var/www/mysql-sicherung/alles.sql
ACHTUNG: eine Zeile!

Nur die Datenbank "db-test" sichern.
$ /usr/bin/mysqldump --opt --add-drop-table --user=root --password=geheim db-test > /var/www/mysql-sicherung/db-test.sql

Wenn keine Fehlermeldung zu sehen ist, sollte nach ein paar Sekunden im Verzeichnis /var/www/mysql-sicherung eine alles.sql zu finden sein die alle Datenbanken enthält. Eine Sicherung dieser Datei ist über Samba leicht möglich. Dieses ist nur ein Beispiel und sollte nicht auf den Webserver zu sehen sein! Eine Automatisierung ist mit croon möglich.
$ $ crontab -e
00 20 * * * /usr/bin/mysqldump --opt ........ (der endgültig Befehl)
In diesem eingenen Editor von crontab kommen Sie schon zurecht!
Tägliche Sicherung um 20Uhr.

Eine Sicherung ist kein Selbstzweck, sondern dient zur Wiederherstellung der Daten. Somit sollte eine Wiederherstellung auch getestet werden! Stellen Sie sich immer vor, der gesamte Rechner ist nicht mehr vorhanden.
Erstellen Sie sich ein Sicherungskonzept.

Wiederherstellung einer Datenbank.
Für testzecke kann die gesicherte Datenbank in PHPMyadmin umbenannt werden. Natürlich klappt das einspielen kleiner Datenbanken auch über die Weboberfläche, aber die Begrenzung liegt bei 2MByte, die schnell erreicht sind.
$ /usr/bin/mysql -p -u <user> db-test < /var/www/mysql-sicherung/db-test.sql


Nützliche Zusätze zur LAMP Installation

Die bekannte PHP Erweiterung PEAR
$ aptitude install php-pear

GD-Support für Apache zwecks Grafikverarbeitung
$ aptitude install php5-gd

Synchronisierung der Systemuhr.
Es ist gut, die Systemuhr über das Internet mit einem NTP-Server (Network Time Protocol) abzugleichen.
$ aptitude -y install ntp ntpdate


Sun Java 2 Platform

Für manche Webanwendung wird die Sun Java 2 Platform Standard Edition 5.0 JRE (Java Runtime Environment) und der JDK (Java Developer Kit) benötigt.
Sun Java 2 ist in der "non-free" Sektion der Debian Repositories verfügbar. Damit auf diese Sektion zugegriffen werden kann, muss das non-free repository in der apt sources Datei verfügbar gemacht werden.

Die sources.list unter /etc/apt/ um die Werte contrib non-free erweitern.
Meine soureces.list schaut wie folgt aus:
deb http://ftp.de.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.de.debian.org/debian/ lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

Nun die Quellen aktualisiere:
$ aptitude update
$ aptitude upgrade

Java Debian Pakete installieren:
$ aptitude install sun-java5-jre
Beantworten Sie die Fragen und stimmen der Lizenzbedingung zu.

Jetzt kann auch noch das Java SDK installiert werden:
$ aptitude install sun-java5-jdk

Wenn alles geklappt hat sollte der Befehl java -version folgendes ausgeben.
$ java -version
java version "1.5.0_14"
Java(TM) 2 Runtime Eviroment, Standard Edition (build 1.5.0_14-b03)
Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode, sharing)

Sollte diese Ausgabe nicht passen, so ist vermutlich neben Suns Java noch eine weitere JVM installiert (z.B. GIJ, Sablevm, Kaffe oder Jamvm). Soll in Zukunft Suns Java als Standard verwendet werden, kann dies so erreicht werden.
$ update-alternatives --config java
Es gibt 3 Alternativen, die »java« bereitstellen

  Auswahl    Alternative
--------------------------------------------------
        1    /usr/bin/gij-wrapper-4.1
*+      2    /usr/lib/jvm/java-gcj/jre/bin/java
        3    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
        
Drücken Sie die Eingabetaste, um die Vorgabe[*} beizubehalten,
oder geben Sie die Auswahlnummer ein: 3
Für die JVM und mit
$ update-alternatives --config javac

JAVA_HOME muss gesetzt sein, sonst findet Tomcat die JAVA Umgebung nicht. Dafür habe ich in die Datei /etc/bash.bashrc den folgenden Eintrag eingefügt:
$ vi /etc/bash.bashrc
# Setup Jave environment 5
export JAVA_HOME=/usr/lib/jvm/java-5-sun/

Ein reboot währe nach der Installation nicht schlecht!


Datenschutz mit .htaccess

.htaccess ermöglicht Zugriffschutz über Client-IP oder Passwort und weitere Einstellungen auf Appache die nur lokal wirken. Da die IP-Adresse kein wirklicher Schutz ist und dieser unter Citrix nicht funktionieren kann, setze ich nur noch den Passwortschutz ein.

Apache

In der Datei apache2.conf unter /etc/apache2/ den zu schützenden Bereich am Ende der Datei eintragen:
<Directory /var/www/ORDNER-SCHUTZ>
  AllowOverride AuthConfig
</Directory>
Alle Internetseiten zu schützen macht keinen Sinn, da es den Server nur verlangsamt. Jeder zu schützende Bereich muss somit hir angeleget weden.

Den Appache- Server neustarten:
$ /etc/init.d/apache2 restart

Passwortdatei

Die Passwortdatei sollte ausserhalb vom Webbereich mit dem ersten User anlegen:
$ htpasswd -c /etc/apache2/users lug
Weitere Paßwörter anlegen mit:
$ htpasswd /etc/apache2/users wulff

.htaccess

Im zu sichernden Ordner muß als root die Datei ".htaccess" erzeugt werden mit den Inhalt:
AuthType Basic
AuthName "Nur für registrierte Benutzer" 
AuthUserFile /etc/apache2/users 
require valid-user 

· Die Zeile AuthType Basic legt die Autorisierungsmethode fest.
· In der zweiten Zeile bekommt die Passwortabfrage einen Klartext zugewiesen.
· In der Zeile drei wird die Autorisierungsdatei festgelegt.
· Im Beispiel wird jeder Anwender reingelassen der eine gültige Autorisierung besitzt.
Mit require user lug wulff mueller meier werden nur die angegebenen User zugelassen. (Strukturierung möglich!)

Wollen Sie die User/Passwort Erstellung Ihren Webseitenbetreiber übergeben, können Sie die Passwortdatei auch in das Webverzeichnis als ".htpasswd" verlegen.
.htpasswd Generator


mod_rewrite

Das Appachemodul mod_rewrite wird benötigt um aus Suchmaschinen unfreundlichen Links (index.php?option=com_content&view=article&id=5&Itemid=2) lesbare Links verwenden zu können (/joomla-overview.html). Die entsprechende .htaccess Datei muss vorhanden sein. Der Einrichtungsteil von Apache2 wird hier beschrieben.

Schauen wir mal wo unser Datei liegt.
$ locate mod_rewrite.so
/usr/lib/apache2/modules/mod_rewrite.so

Legen wir im Verzeichnis /etc/apache2/mods-enabled die Datei rewrite.load mit dem Inhalt LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so an.
$ cd /etc/apache2/mods-enabled
$ vi rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Es kann sein, das die Datei schon richtig vorhanden ist!

In der Datei /etc/apache2/sites-available/default schlaten wir nun mod_rewrite ein.
$ vi /etc/apache2/sites-available/default
An der Postion von
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
auf
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all

Apache neustarten.
$ /etc/init.d/apache2 restart


Tomcat 5.5


Wenn der Tomcat benötigt wird, muss JAVA von SUN installiert sein und kann so erledigt werden:
$ aptitude install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps
Nach einem reboot können wir uns Tomcat im Browser betrachten
http://localhost:8180

Die Zugangsdaten für den Tomcat-Administrator sind in der folgenden Datei zu finden:
$ vi /var/lib/tomcat5.5/conf/tomcat-users.xml

Home-Verzeichnis »/usr/share/tomcat5.5«
Installing »/var/lib/tomcat5.5/conf/tomcat-users.xml«
WebApps-Verzeichnis »/var/lib/tomcat5.5/webapps/«
Es hat sich als Sinnvoll erwiesen, die Tomcat Sicherheit im Intranet auszuschalten.
vi /etc/init.d/tomcat5.5
TOMCAT5_SECURITY=no
Die entsprechende Aplikation (PROGS.war) ins Verzeichnis /var/lib/tomcat5.5/webapps/ kopieren
Tomcat restarten mit /etc/init.d/tomcat5.5 restart
Aufruf mit http://MyIP:8180/PROGS
Dieses in Kleinschrift ist nur ein Kochrezept aus dem Kopf und noch keine Anleitung!


Wichtige Dateien und Verzeichnisse.


    /etc/apache
        httpd.conf
            beinhaltet die Konfiguration von Apache
    /var/www
        Ist das Document_Root und ist als Intranet im Samba freigegeben.
    /home/lug
        Ist eine Freigabe die ausserhalb des Apache laufen.


Fertig

Nach ca.: einer guten Stunde haben Sie einen funktionstüchtigen Server aus einem alten Rechner gemacht, der nicht mehr in der Ecke steht, sondern wirklich gute Dienste leisten kann.
  • Die Dateiablage könnte mit Samba zentral durchgeführt werden.
  • Die meisten Internetprogramme könnten installiert werden.
    Ein Auswahl ist nicht leicht zu treffen, Groupware, CMS, usw.. stehen zur Auswahl.
    Eventuell auch nur zum erstellen und testen von eigenen Webseiten.


weitere Ideen ...

  • Vielleicht ein Mailserver mit Spam- Filter
  • Für einen reinen Printserver sind bei 45 Watt grenzwertig.
  • usw...
Weiter Anleitungen könnten somit noch folgen.


Gute Links:

.htpasswd Generator


Viel Spass

Matthias Wulff


Seitenanfang