Apache WebServer
Nächste Beiträge »Apache: Reverse Proxy & Multi Subdomains
Sonntag, 14.02.2010Wenn Sie einen Apache2 Webserver als Reverse Proxy betreiben und dabei mehrere Subdomains berücksichtigen möchten, müssen Sie nicht zwangsläufig mehrere virtuellen Hosts (VHosts) in der Apache Konfiguration definieren. Es geht wesentlich einfacher über Parameter in der Konfiguration:
Fügen Sie am Ende der Datei die folgenden beiden Zeilen ein:
ProxyRequests on
ProxyPreserveHost on
Starten Sie anschließend den Apache durch “/etc/init.d/apache2 restart” neu. Fertig.
Wenn Sie WebMin für die Administration nutzen, können Sie die Einstellung auch bequem über die Weboberfläche durchführen:
- Server
- Apache Webserver
- Den entsprechenden virtuellen Server auswählen
- Proxying
- “Erhalte originalen Host:-Header” auf “Ja” setzen
- Oben rechts auf “Änderungen anwenden” klicken
PHP: Unable to load dynamic library ‘/usr/lib/php5/extensions/mysql.so’
Freitag, 05.02.2010Wenn im ErrorLog des Apache2 WebServers (“tail /var/log/apache2/error.log”) u.a. folgende Zeile zu finden ist, kann PHP die Extension (Erweiterung) nicht finden und laden:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/extensions/mysql.so' - /usr/lib/php5/extensions/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
Häufig wird dann angefangen, wild an der Konfiguration zu ändern und basteln. Dabei wird meist das naheliegendste übersehen:
Gibt es das angegebene Verzeichnis überhaupt ?
Erst recht, wenn mehrere (oder gar viele) Extensions nicht geladen werden können.
Wenn dann der Befehl
dir -l /usr/lib/php5/extensions/
die folgende Fehlermeldung anzeigt, sollte alles klar sein:
dir: Zugriff auf /usr/lib/php5/extensions/ nicht möglich: Datei oder Verzeichnis nicht gefunden
Lösung
Den Pfad für die Extensions in der “php.ini” anpassen. Diese kann, falls der Pfad nicht bekannt ist, mithilfe des folgenden Befehls gefunden werden.
find / -name php.ini
Dieser Befehl zeigt Ihnen ggf. auch andere “php.ini” Dateien auf ihrem System an. Manchmal konfiguriert man ein einer “php.ini” und wundert sich, dass keine Änderung eintritt. Wenn man zufällig die falsche Datei in den Händen hat, dann kann man auch lange auf ein Ergebnis warten
Häufig fällt dieses Problem nach einer (Neu)Installation erst auf, wenn die mySQL / mySQLi Unterstützung fehlt. Grund ist dann (meist), dass die mysql.so Extension in PHP nicht geladen werden kann.
Apache2 – Variable “SERVER_SOFTWARE” setzen
Freitag, 05.02.2010Um im Apache2 die Umgebungsvariable “SERVER_SOFTWARE” zu beeinflussen, nutzen Sie einfach die Konfiguration des Apache WebServers:
Z.Bsp. in Debian Linux lenny4:
Unter “/etc/apache2/conf.d/security” die Zeile beginnend mit “ServerTokens” finden und entsprechend anpassen.
- ServerTokens Prod
Der Server sendet “Server: Apache” - ServerTokens Major
Der Server sendet “Server: Apache/2″ - ServerTokens Minor
Der Server sendet “Server: Apache/2.0″ - ServerTokens Min
Der Server sendet “Server: Apache/2.0.41″ - ServerTokens OS
Der Server sendet “Server: Apache/2.0.41 (Unix)” - ServerTokens Full (oder nicht angegeben)
Der Server sendet “Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2″
Die gesendeten Texte sind nur Beispiele.
Mehr Infos unter apache.org/docs/2.2/mod/core.html#servertokens
Sicherheit: Alle Dateien auf dem Server löschen (bzw. Rechte setzen)
Mittwoch, 04.11.2009Wenn Sie eine Webseite oder Scripte auf einem Server betreiben, verwalten Sie diese meist mit einem FTP Client (FileZilla, ws_ftp, etc.).
Beim Löschen von Dateien vom Server tritt manchmal das Problem auf, dass Sie Dateien nicht (mehr) mit Ihrem FTP Programm löschen können, da Ihnen dafür die Berechtigung fehlt:
550 <filename>: Permission denied
Grund des Problemes ist, dass z.Bsp. ein PHP Script, ein Module, Plugin, o.ä. diese Datei erstellt hat. Dabei wird diese Datei jedoch für den entsprechenden User erstellt (was im Grunde auch vollkommen richtig ist!). Dieser ist bei Unix/Linux Server meist “wwwrun” und stellt den Apache-User dar.
Sie nutzen durch Ihren FTP Zugang jedoch Ihren eigenen Benutzernamen (z.Bsp. “web123″) und haben daher (natürlich) nicht das Recht, die Datei des “wwwrun” Benutzers zu löschen.
Lösung:
Das folgende PHP Script setzt den Eigentümer (Benutzer) aller Dateien und Verzeichnisse wieder auf einen von Ihnen angegebenen Benutzer.
Dadurch kann entweder das Script direkt oder Sie per FTP Software wieder die Dateien und Verzeichnisse löschen.
Wenn Sie z.Bsp. als Webseitenroot (Hauptverzeichnis) “/srv/www/virtual/web123/htdocs” haben, werden alle Inhalte in diesem Verzeichnis gelöscht. Der restliche Server, andere Verzeichnisse usw. werden nicht berührt.
Download:
Bevor Sie dieses PHP Script einsetzen, informieren Sie sich bitte gründlich über dessen Wirkung !
Sollten Sie keine tieferen Kenntnisse in der Serveradministration/-verwaltung haben, fragen Sie bitte Ihren Administrator oder einen IT Fachmann. Bitte vertrauen Sie nicht auf den Tipp Ihres Kollegen, der “ein wenig Ahnung” von der EDV hat. Diese Scripte löschen komplette Verzeichnisse ohne Sicherung und Rückfrage !
[page_download category="0"]
Gewähr, Haftung:
Wir übernehmen für dieses Tool keine Gewähr und Haftung. Es soll Ihnen eine technische Möglichkeit aufzeigen und Ihnen bei Berechntigungsproblemen eine zusätzliche lösungsmöglichkeit aufzeigen. Aus diesem Grund ist eine (sh. oben) Ausführungssperre eingebaut. Diese muss vor Nutzung deaktiviert werden.
Überlassen Sie daher die Anwendung und Nutzung dieses Scriptes ausschließlich einem IT Fachmann!
Bei unsachgemäßer Anwendung erfolgt teilweiser oder kompletter Datenverlust!
WordPress: Schutz des Administrationsbereiches (wp-admin)
Sonntag, 25.10.2009Der Administrationsbereich von WordPress ist standardmäßig unter dem Pfad /wp-admin zu erreichen. Das erleichtert die Angriffe auf Ihre Webseite, das Backend und Ihre Daten erheblich, denn der Zugang (Eingang) muss garnicht erst gesucht werden. Ein Angriff kann sofort und einfach beginnen. Meist wird dabei versucht, Ihr Passwort zu erraten oder alternative Benutzer (deren Namen man in Ihren Artikeln auf der Webseite findet) durchprobiert (Brute-Force-Angriffe).
Ein guter, einfacher und kostenloser zusätzlicher Schutz ist die Zugangskontrolle durch Ihren eigenen Webserver. Dabei ist diese Methode durch eine .htaccess Datei auf den Apache Server ausgelegt. Der IIS unterstützt derzeit diese Technik nicht ohne Zusatzprogramme.
Das folgende (kostenlos) PHP Script übernimmt die Erstellung der entsprechenden beiden Dateien (.htaccess und .htpasswd) für Sie.
Dabei läuft das Programm direkt auf Ihrem Server und übermittelt keinerlei Daten.
Natürlich erhalten Sie das uncodierte PHP Script im Sourcecode (Klartext) und können daher die Sicherheit kontrollieren.
Ihre Fragen oder Wünsche nehmen wir immer gerne an und setzen sie um. Wir hoffen, Ihnen dadurch immer ein passendes und aktuelles Tool liefern zu können:
Installation:
- Laden Sie sich das PHP Script herunter:
Downloadseite für das PHP Tool (Freeware) - Entpacken und speichern Sie das Script auf Ihrem WebServer im Verzeichnis /wp-admin
- Starten Sie das Programm durch Aufruf im Browser:
http://www.ihr_server.de/wp-admin/wordpress-secure-admin.php
- Tragen Sie einen Benutzer und das gewünschte (geheime !) Passwort in die Felder ein und klicken Sie auf “Speichern”.
- Bevor Ihnen das Formular wieder angezeigt wird, sehen Sie bereits die Schutzabfrage:
Geben Sie den in Schritt 4 erstellen Benutzer und das Kennwort ein.
Deinstallation:
Sie können den zusätzlichen Schutz jederzeit ohne Schaden für Ihre WordPress-Installation entfernen. Da weder das Script noch die .htaccess / .htpasswd Dateien weitere Daten auf die Festplatte oder in die Datenbank schreiben, reicht zum vollständigen Entfernen folgendes:
- Öffnen Sie das Formular über die URL:
http://www.ihr_server.de/wp-admin/wordpress-secure-admin.php
- Klicken Sie unten auf dem Formular auf “Komplette Sicherung entfernen”
… oder manuell (z.Bsp. per FTP):
- Löschen Sie im /wp-admin Verzeichnis die folgenden Dateien:
- .htaccess
- .htpasswd
- wordpress-secure-admin.php
Hinweise:
Möchten Sie einige der Unterverzeichnisse von wp-admin (“css” und “images”) trotzdem freigeben, beachten Sie bitte auch unseren Artikel “.htaccess: Zugriff auf ein Unterverzeichnis erlauben“. Dort beschreiben wir die .htacees Technik, die die Freigabe von Unterverzeichnissen innerhalb von geschützten Verzeichnissen erlaubt.
Apache: Lösung für “mod_fcgid: can’t apply process slot”
Freitag, 02.10.2009Es kommt (wenn auch selten) vor, dass sich der Apache2 Webserver aufhängt. Problematisch wird es aber erst, wenn die PHP Scripte auf dem Server per FCGI verarbeitet werden. Aus bisher noch nicht erkannten Gründen werden dabei entweder nur (leichter Schaden) die Rechte der “suexec” oder “suexec2″ verändert – in schweren Fällen werden scheinbar die Programme beschädigt.
Fehlermeldungen (Beispiele):
Log des virtuellen Hosts (Apache2):
[warn] mod_fcgid: can't apply process slot for /etc/srv/test/htdocs/index.php [error] [client x.x.x.x] File does not exist: /etc/srv/test/errors/503.html
Andere Fehlermeldung im Apache Haupt-Log:
[debug] arch/unix/fcgid_proc_unix.c(731): Connection refused: mod_fcgid: can't connect unix domain socket: /var/lib/apache2/fcgid/sock/4222.1
Lösung:
Zuerst prüfen, ob ein “leichter Schaden” vorliegt:
cd /usr/sbin dir suexec*
Erhalten Sie diese Ansicht,
-rwxr-xr-x 1 root root 14036 Oct 21 01:39 suexec2
müssen Sie die folgenden Befehle (als root) ausführen:
chgrp www suexec2 chmod 4750 suexec2
Danach wird die Ansicht so aussehen:
-rwsr-x— 1 root www 14036 Oct 21 01:39 suexec2
Nun den Apache2 neu starten:
rcapache2 restart
Sollte sich das Problem nicht gelöst haben, per Yast2 die folgenden Module updaten lassen:
- apache2
- apache2-mod_fcgid
- apache2-prefork
- apache2-worker
Danach wieder die Rechte der suexec setzen (s.o.).
Apache: Verzeichnis vor Zugriff von außen schützen
Montag, 31.08.2009Um ein Verzeichnis im Apache2 vor dem Zugriff von außerhalb eines bestimmten Netzwerkes zu schützen können Sie folgende Option nutzen:
Allow from 192.168.0.100/16
Im Beispiel in der httpd.conf (oder jeder anderen Konfigurationsdatei) sieht das so aus:
<VirtualHost *:80>
DocumentRoot /var/www/test
<Directory /var/www/test>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from 192.168.0.100/16
</Directory>
</VirtualHost>
Entwicklungsumgebung mit cakePHP, mySQL & Eclipse
Sonntag, 21.12.2008Benötigte Software (in Klammern die für diese Anleitung genutzte Version)
- XAMPP (1.6.8 – Win32, Basic Package)
- cakePHP (1.2.0.7945-rc4, Zip Archiv)
- Eclipse (3.4.1 Classic (Ganymede) – Windows, Zip Archiv)
Installation(en)
Sofern ich keine Angabe zu einem Bildschirm oder Schritt einer Software-Installation gemacht habe, übernehmen Sie einfach die vorgegebenen / angezeigten Einstellungen.
- XAMPP
- Starten Sie die “xampp-win32-1.6.8-installer.exe”
- Zielverzeichnis: “C:\xampp” (Standard)
- Am Ende wird angeboten, das Control Panel zu starten.
Wählen Sie “Ja” – Starten Sie jedoch noch kein Modul
- cakePHP
- Legen Sie im Verzeichnis “C:\xampp” einen neuen Unterordner “www” an
- Entpacken Sie das Archiv “cake_1.2.0.7945-rc4.zip” im neuen Order “www”
- Benennen Sie den erstellten Ordner um in “cakePHP”
Sie haben jetzt ein Verzeichnis “c:\xampp\cakePHP”.
In diesem finden Sie vier Ordner und u.a. die “index.php” - Gehen Sie in das Verzeichnis “C:\xampp\www\cakePHP\app\config”
- Öffnen Sie die Datei “core.php”
- Suchen Sie die folgende Zeile und ändern Sie den zweiten Parameter (“DYhG93..”) in eine andere willkürliche & zufällige Zeichenkette ab:
Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi'); - Speichern Sie die Datei und schließen Sie den Editor
- Im gleichen Verzeichnis finden Sie die Datei “database.php.default”
- Kopieren Sie die Datei in “database.php” und öffnen Sie sie mit einem Editor
- Am Ende der Datei tragen Sie die Zugangsdaten für Ihren mySQL Server (s.u.) ein:
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'masterpwd',
'database' => 'cakePHP',
'prefix' => '',
);
Sicherheitshinweis:
Bitte nutzen Sie andere Passwörter. Ich verwende in meinem Beispiel stets “masterpwd” – ersetzen Sie es durch ein sicheres Passwort. Außerdem nutze ich in diesem Beispiel den Datenbankuser “root”. Wenn Ihre Entwicklungsumgebung nicht sicher oder geschützt ist, nutzen Sie bitte einen anderen Datenbankuser. Die Einrichtung und Einstellungen sind nicht Teil dieser Anleitung.
- Virtuellen Server unter Apache (XAMPP) konfigurieren
- Gehen Sie in das Verzeichnis “C:\xampp\apache\conf\extra”
- Öffnen Sie die Datei “httpd-vhosts.conf” mit einem Texteditor
- Entfernen Sie am Anfang der Datei die Kommentarzeichen (#) vor dieser Zeile:
NameVirtualHost *:80 - Fügen Sie am Ende der Textdatei die folgenden Zeilen hinzu:
<VirtualHost *:80> ServerAdmin webmaster@local DocumentRoot c:/xampp/htdocs ServerName localhost ErrorLog C:/xampp/apache/logs/error.log CustomLog C:/xampp/apache/logs/access.log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@cakePHP.local DocumentRoot c:/xampp/www/cakePHP/app/webroot <Directory c:/xampp/www/cakePHP/app/webroot> Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec DirectoryIndex index.php index.shtml index.html index.htm Order allow,deny Allow from all </Directory> ServerName cakePHP ErrorLog C:/xampp/apache/logs/cakePHP-error.log CustomLog C:/xampp/apache/logs/cakePHP-access.log common </VirtualHost> - Speichern Sie die Datei und schließen Sie den Editor
- Gehen Sie in das Verzeichnis “C:\windows\system32\drivers\etc”
- Öffnen Sie die Datei “hosts” mit einem Texteditor
- Fügen Sie am Ende der Datei folgende Zeile hinzu:
127.0.0.1 cakePHP - Speichern Sie die Datei und schließen Sie den Editor
- Apache (WebServer) starten
- In der unteren rechten Bildschirmecke finden Sie neben der Uhr ein oranges “X” Symbol.
Klicken Sie es einmal mit der linken Maustaste an. Das XAMPP Control Panel öffnet sich. - Klicken Sie hinter “Apache” auf den “Start” Button
Nach wenigen Sekunden wird vor dem Button der grüne Text “Running” erscheinen.
Gut gemacht: Ihr WebServer läuft !
- In der unteren rechten Bildschirmecke finden Sie neben der Uhr ein oranges “X” Symbol.
- mySQL & phpMyAdmin konfigurieren (Datenbank & -administration)
- Klicken SIe auf “Start” hinter “MySQL”
- Nach wenigen Sekunden wird vor dem Button der grüne Text “Running” erscheinen
- Ändern Sie das Masterpasswort Ihres mySQL Servers:
Dafür führen Sie folgenden Befehl aus (drücken Sie dafür die Windowstaste + “R” zusammen):
c:\xampp\mysql\bin\mysqladmin --user=root --password= password masterpwd
Wählen Sie bitte ein anderes (sichers) Passwort und ersetzen Sie “masterpwd” an Ende der Zeile durch Ihr Passwort. - Gehen Sie in das Verzeichnis “C:\xampp\phpMyAdmin” und öffnen Sie die Datei “config.inc.php”
- Tragen Sie Ihr Passwort in die folgende Zeile ein (die Hochkommata sind wichtig):
$cfg['Servers'][$i]['password'] = 'masterpwd'; - Speichern Sie die Datei und schließen Sie den Editor
- Starten Sie Ihren Browser (z.Bsp. Mozilla Firefox) und öffnen Sie folgende Seite:
http://localhost/phpmyadmin/ - Wieder gut gemacht: Ihr Datenbankserver läuft !
- Legen Sie eine neue Datenbank an:
In der mittleren Spalte geben Sie unter “Neue Datenbank anlegen” den Namen “cakePHP” in das Textfeld ein und klicken auf “anlegen”
- cakePHP testen
- Öffnen Sie in Ihrem Browser die URL “http://cakePHP“
- Ihnen wird die Standardseite von cakePHP angezeigt.
Dabei zeigen Ihnen die vier grünen Bereiche die notwendigen (und erfüllten) Voraussetzungen an.
Ihre cakePHP Installation ist jetzt vollständig einsetzbar. Die Installation und Konfiguration von Eclipse bringt Ihnen jedoch einen vielseitigen und optimalen Editor für Ihre neuen (php) Webseiten. Die Codevervollständigung, PHP Syntaxprüfung und weitere Features unterstützen Sie bei der Entwicklung Ihrer Internetseiten.
Bei dieser Anleitung habe ich die Eclipse Classic Version gewählt. Je nach Wunsch können Sie aber auch andere (auf der Eclipse Download Seite angezeigte) Versionen nutzen.
- Eclipse installieren (optional)
- Entpacken Sie das Archiv “eclipse-SDK-3.4.1-win32.zip”.
In dem erhaltenen Verzeichnis “eclipse-SDK-3.4.1-win32″ finden Sie den Ordner “eclipse”. - Kopieren Sie diesen “eclipse” Ordner in das Verzeichnis “C:\xampp” hinein.
Sie haben jetzt ein Verzeichnis “C:\xampp\eclipse”. - Dort finden Sie die Anwendung “eclipse.exe”, die Sie bitte starten
- Sie werden nach Ihrem gewünschten “Workspace” gefragt:
Wählen Sie als Verzeichnis bitte “C:\xampp\www” - Beim ersten Start von Eclipse wird Ihnen die Startseite angezeigt.
Dort klicken Sie auf das rechte Symbol (“Workbench”).
Sie sehen jetzt den Arbeitsbereich Ihrer Eclipse Installation
- Entpacken Sie das Archiv “eclipse-SDK-3.4.1-win32.zip”.
Eclipse ist jetzt bereits voll einsetzbar. Damit Ihnen die Arbeit mit PHP aber leichter fällt und alle gewünschten Zusatzfunktionen zur Verfügung stehen, muss die PHP Erweiterung installiert werden:
- Eclipse: PHP Erweiterung (Plugin) installieren
- Klicken Sie in Eclipse auf den Menüpunkt “Help” und dann auf “Software Updates …”
- Wählen Sie den Reiter “Available Software” aus
- Klicken Sie dort auf den Button “Add Site” und geben Sie die folgende URL ein:
http://update.phpeclipse.net/update/stable/1.2.x
- Die neuen Quellen werden in der Softwareliste angezeigt
- Aktivieren Sie die beiden Einträge
http://phpeclipse.sourceforge.net/ [...] und
http://update.phpeclipse.net/ [...] - Klicken Sie auf “Install”
- In der Übersicht klicken Sie auf “Next”
- Lesen Sie die Lizenzbedinungen, stimmen Sie zu und klicken Sie auf “Finish”
Die aktuellen Updates für Eclipse und das PHP Plugin werden jetzt installiert - Am Ende der Installation wird Ihnen der Neustart von Eclipse angeboten.
Stimmen Sie zu
Alle Programme und Erweiterungen sind nun fertig installiert. Sie können mit der Arbeit an Ihren Webseiten beginnen:
- Ihr cakePHP Projekt (s.o.) in Eclipse öffnen
- Wählen Sie in Eclipse den Menüpunkt “Window”, dann “Open Perspective” und jetzt “Other”
- Klicken Sie doppelt auf den Listeneintrag “PHP”.
Ihre Arbeitsfläche hat sich nun an PHP angepasst - Im linken Bereich (“Navigator”) drücken Sie die rechte Maustaste, wählen “New” und “PHP Projekt”
- Als Projektnamen geben Sie “cakePHP” ein und klicken auf “Finish”
- Ihnen wird ein neuer Eintrag im Navigator angezeigt: Ihre cakePHP Installation
Fertig.
Apache: Virtuellen Host anlegen
Donnerstag, 27.11.2008Im WebServer Apache (auch unter XAMPP) können Sie bequem virtuelle Hosts / virtuelle Server anlegen.
Öffnen Sie dafür die “httpd.conf” (bei Apache2 ggf. auch die “extra/httpd-vhosts.conf”) und fügen Sie folgenden Text hinzu:
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80> <Directory C:/www/cake/app/webroot> Options Indexes MultiViews FollowSymLinks AllowOverride All Order Allow,Deny Allow from all </Directory>
ServerName cakephp DocumentRoot C:/www/cake/app/webroot Options +FollowSymLinks -Indexes ErrorLog C:/www/logs/text_error_log.txt CustomLog C:/www/logs/text_access_log.txt common </VirtualHost>
Im Beispiel wird eine cakePHP Installation unter einem virtuellen Server eingerichtet.
Die Angaben zu “ErrorLog” und “CustomLog” sind optional und können entweder entfernt oder durch ein # am Zeilenanfang deaktiviert werden.
Wenn Sie den virtuellen Server mit Namen ansprechen möchten, dann geben Sie diesen anstelle unseres “cakephp” ein. Bitte beachten Sie, dass Sie diesen Namen auch unbedingt in der “hosts” Datei eintragen müssen. Sie finden die Datei unter “C:\Windows\system32\drivers\etc\”. Für unser Beispiel müssen Sie dort die folgende Zeile hinzufügen:
127.0.0.1 cakephp
Einträge in dieser Datei werden (meist) ohne Neustart des Computers übernommen.
Zu beachten ist, dass der Pfad zum Webverzeichnis (im Beispiel “C:/www/cake/app/webroot”) zweimal angegeben wird. Wenn Sie also ein anderes Verzeichnis nutzen, dann passen Sie bitte beiden Angaben identisch an.
Nächster Beitrag »