LUG Waldkraiburg

zur Navigation springen


eMail Impressum Datenschutz

Webserver unter Lenny

Apache PHP MySQL PHPmyAdmin

von Matthias Wulff 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


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


Tomcat


Wenn der Tomcat benötigt wird kann dieses so erledigt werden:
$ apttitude install sun-java5-jdk
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
www.M-Wulff.de



Seitenanfang