+++Mein Vorhaben:+++
Drei verschiedene Webprojekte (unabhängig voneinander) lokal mit jeweils php und MySql-Unterstützung unter einem Benuzternamen laufen lassen. Dazu aufsetzen von IP-basierender vhosts mit phpMyAdmin zur Datenbankverwaltung. Ich nennene diese Projekte mal webprojektsonne, webprojektmond, und webprojektsterne.
+++Meine System:+++
Suse 9.3 | Apache 2.0.53 | PHP 4.3.10 | MySQL 4.1.10a | phpMyAdmin 2.6.1-pl3
+++Mein Wissensstand+++ bzw. das was mir bei anderen Vorhaben bisher gelungen ist:
-Errichten und Betreiben des Hauptservers (Apache) mit php und mysql-Unterstützung
-Errichten von namensbasierten vhosts allerdings ohne php und mysql-Unterstützung
+++Meine abgeschlossenen Vorbereitungen+++ zum betreiben IP-basierter vhosts mit php und MySQL:
Hier Kurzfassung (weiter unten ausführliche Fassung meiner Arbeitsschritte)
1.) Laden der erforderlichen Pakete mit YAST
2.) (IP-Aliasing) Zuweisung mehrer IP-Adressen zu einer Netzwerkkarte
3.) Erstellen + Rechtevergabe der Verzeichnisse und Dateien
4.) VirtualHosts in Apache einrichten
5.) Editieren der Datei hosts
6.) phpMyAdmin-Konfigurationsdatei config.inc.php im Verzeichnis: /srv/www/htdocs/phpMyAdmin/<config.inc.php> anpassen
7.) Erstellen und ablegen der Datei phpinfo.php zu Testzwecken
8.) Erstellen und ablegen der Datei index.html zu Testzwecken
9.) Anlegen + Rechtevergabe der Datei .htaccess (Zwecks Zugriffbeschränkung von außerhalb meines Netzwerkes)
10.) Überprüfung Einstellung der Firewall
(bisher nicht erfolgreich)
11.) Testen der Gesamtkonfiguration
? Meine Fragen?
Im Buch "Apache für Dummies" steht auf Seite 123 im unteren Drittel ich Zitiere:
In der Konfiguration des Hauptservers haben Sie PHP4 als CGI konfiguriert, jedoch die Ausführung über die Anweisung ACTION deaktiert. Deaktierviert wurde auch der ScriptAlias für das zentrale Skriptverzeichnis cgi-bin im Apache. Dadurch können Sie jetzt benutzerdefinierte Verzeichnisse mit dem Namen cgi-bin für jeden virtuellen Host einrichten. Die Konfiguration des Hauptservers in der httpd.conf enthölt als folgende auskommentierte Zeilen:
###Section 2: 'Main' server configuration
#Action application/x-httpd-php /php4/php.exe
# ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
Zitatende
Die Zeile:
- Code: Select all
# ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
habe ich in der Datei /etc/apache2/httpd.conf gefunden und auskommentiert also aus
- Code: Select all
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
mache
- Code: Select all
# ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
+++Frage 1 +++ Wo aber bitte befindet sich die Zeile:
#Action application/x-httpd-php /php4/php.exe ?
+++ Frage 2 +++ Gebe ich in meinen Browser die Adresse:
www.webprojektsonne.local ein, so erscheint
Access forbidden! Error 403. Eigentlich sollte hier meine zuvor erstellte index.html-Seite erscheinen. Irgendwo scheine ich entsprechende Rechte noch nicht vergeben zu haben. Aber bitte wo?
Wo bitte steckt da noch mein Denkfehler?
Vielen Dank für mögliche Denkanstöße
Gruß
Holger
Es folgt die ausführliche Fassung meiner Arbeitsschritte:
------------------------------------------------------------------------------
1.) Laden der erforderlichen Pakete mit YAST
php
phpMyAdmin
Apache
MySQL
2.) (IP-Aliasing) Zuweisung mehrer IP-Adressen zu einer Netzwerkkarte:
YAST-Netzwerkgeräte-Netzwerkkarte-Bereits konfigurierte Geräte Ändern-<Gerät> Bearbeiten-Erweitert-Zusätzliche Adressen-Hinzufügen Aliasname = 0 IP-Adresse=192.168.178.11 - Netzmaske= 255.255.255.0 usw.
Neustart des Netzwerkes
- Code: Select all
root:~ # rcnetwork restart
Test durch:
- Code: Select all
root:~ # ifconfig
Ergebnis: (verkürzte Wiedergabe)
- Code: Select all
eth1 192.168.178.10 (erste IP-Adresse)
eth1:0 192.168.178.11 (zusätzliche IP-Adresse)
eth1:1 192.168.178.12 (zusätzliche IP-Adresse)
eth1:2 192.168.178.13 (zusätzliche IP-Adresse)
Anmerkung:
Alle drei Webprojekte sollen nur im lokalen Netzwerk aufrufbar sein. Daher habe ich bewußt nur IP-Adressen aus dem privaten Adressbereich gewählt. Ferner habe ich derzeit in meinem PC zwei Netzwerkkarten eingebaut, daher anstatt eth0 ... eth1 Die zweite Netzwerkkarte spielt bei dieser Einrichtung jedoch keine Rolle.
-------------------------------------------------------------------------
3.) Erstellen + Rechtevergabe der Verzeichnisse und Dateien
Eingabe an der Shell als root:
- Code: Select all
mkdir /home/Benutzername/webprojektsonne
mkdir /home/Benutzername/webprojektsonne/htdocs
mkdir /home/Benutzername/webprojektsonne/htdocs/logs
mkdir /home/Benutzername/webprojektsonne/htdocs/cgi-bin
chmod 664 /home/Benutzername/webprojektsonne/htdocs
chmod 777 /home/Benutzername/webprojektsonne/htdocs/cgi-bin
vi /home/Benutzername/webprojektsonne/htdocs/logs/error.log
:wq (legt die Datei error.log an und schließt den Editor vi wieder)
vi /home/Benutzername/webprojektsonne/htdocs/logs/access.log
:wq (legt die Datei error.log an und schließt den Editor vi wieder)
chomd 664 /home/Benutzername/webprojektsonne/htdocs/logs/*
mkdir /home/Benutzername/webprojektmond
mkdir /home/Benutzername/webprojektmond/htdocs
mkdir /home/Benutzername/webprojektmond/htdocs/logs
mkdir /home/Benutzername/webprojektmond/htdocs/cgi-bin
chmod 664 /home/Benutzername/webprojektmond/htdocs
chmod 777 /home/Benutzername/webprojektmond/htdocs/cgi-bin
vi /home/Benutzername/webprojektmond/htdocs/logs/error.log
:wq (legt die Datei error.log an und schließt den Editor vi wieder)
vi /home/Benutzername/webprojektmond/htdocs/logs/access.log
:wq (legt die Datei error.log an und schließt den Editor vi wieder)
chomd 664 /home/Benutzername/webprojektmond/htdocs/logs/*
mkdir /home/Benutzername/webprojektsterne
mkdir /home/Benutzername/webprojektsterne/htdocs
mkdir /home/Benutzername/webprojektsterne/htdocs/logs
mkdir /home/Benutzername/webprojektsterne/htdocs/cgi-bin
chmod 664 /home/Benutzername/webprojektsterne/htdocs
chmod 777 /home/Benutzername/webprojektsterne/htdocs/cgi-bin
vi /home/Benutzername/webprojektsterne/htdocs/logs/error.log
:wq (legt die Datei error.log an und schließt den Editor vi wieder)
vi /home/Benutzername/webprojektsterne/htdocs/logs/access.log
:wq (legt die Datei error.log an und schließt den Editor vi wieder)
chomd 664 /home/Benutzername/webprojektsterne/htdocs/logs/*
-------------------------------------------------------------------------------
4.) VirtualHosts in Apache einrichten
Jeder vhost hat bei mir eine eigene Datei erhalten. Abgelegt sind diese Dateien unter: /etc/apache2/vhost.d
Die Datei wurde von mir benannt in:
webprojektsonne.conf, webprojektmond.conf, und webprojektsterne.conf
Eintrag in die Datei webprojektsonne.conf :
- Code: Select all
### vhost webprojektsonne.local ###
<VirtualHost 192.168.178.11:80>
ServerAdmin webmaster@webprojektsonne.local
DocumentRoot /home/benutzername/webprojektsonne/htdocs
ServerName www.webprojektsonne.local
ErrorLog /home/benutzername/webprojektsonne/htdocs/logs/error.log
CustomLog /home/benutzername/webprojektsonne/htdocs/logs/access.log common
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
AccessFileName .htaccess
<Location /cgi-bin>
Options +ExecCGI
Action application/x-httpd-php /php4/php.exe
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Die beiden anderen Dateien entsprechend...
Apach2-Server neustarten
- Code: Select all
root:~ # /etc/init.d/apache2 restart
-------------------------------------------------------------------------------
5.) Editieren der Datei hosts
Ein DNS-Server ist bei nicht in Betrieb. Die Namensauflösung erfolgt über die Datei hosts im Verzeichnis: /etc/
Datei mit Editor geöffnet und folgende Zeilen hinten dran gehängt:
- Code: Select all
192.168.178.11 www.webprojektsonne.local
192.168.178.12 www.webprojektmond.local
192.168.178.13 www.webprojektsterne.local
------------------------------------------------------------------------------
5. Datenbank mit Passwort schützen (Vergabe eines eigenen/neuen Passwortes)
Shellkommando als root:
- Code: Select all
root:~ # mysqladmin -u root password eigenespassworthierfestlegen
------------------------------------------------------------------------------
6.) phpMyAdmin-Konfigurationsdatei config.inc.php im Verzeichnis: /srv/www/htdocs/phpMyAdmin/<config.inc.php> anpassen
Dort befinden sich in der
Zeile 39 folgende Zeilen:
- Code: Select all
$cfg['PmaAbsoluteUri'] = '';
Diese ändern in:
- Code: Select all
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin/';
Zeile 69 sollte folgende Zeile stehen (überprüfen):
- Code: Select all
$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address
Zeile 84 folgende Zeilen eintragen/überprüfen:
- Code: Select all
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed
Anmerkung: Da nur ich allein für alle drei Webprojekte Zugriff haben möchte reicht mir die Einrichtung von phpMyAdmin in nur diesem Verzeichnis völlig aus. Würde ich verschiedenen Benutzern einen Zugriff auf die MySQL-Datenbank gewähren wollen, so würde ich in jedem htdocs-Verzeichnis der entsprechenden Webprojekte phpMyAdmin einmal hinterlegen und entsprechend anpassen müssen. Dies ist hier meines Wissens nach für mein Vorhaben jedoch nicht erforderlich.
-------------------------------------------------------------------------------
7.) Erstellen und ablegen der Datei phpinfo.php zu Testzwecken
Editor geöffnet, neue Datei mit folgenden Zeilen erstellt:
- Code: Select all
<?php
phpinfo();
?>
Anschließend festgelegt:
Berechtigung = 644
Gruppe = users
Benutzer= Benutzername
Anschließend diese Datei jeweils in folgenden Verzeichnissen abgelegt
/home/Benutzername/webprojektsonne/htdocs
/home/Benutzername/webprojektmond/htdocs
/home/Benutzername/webprojektsterne/htdocs
-------------------------------------------------------------------------------
8.) Erstellen und ablegen der Datei index.html zu Testzwecken
Editor geöffnet, neue Datei mit folgenden Zeilen erstellt:
- Code: Select all
<html>
<head>
<title>Sonne</title>
</head>
<body bgcolor= "Lightblue">
<h1 align="center">
Webprojekt Sonne
</h1>
</body>
</html>
Datei als index.html abgespeichert
Folgende Rechte vergeben:
Rechte 664
Benutzer: Benutzername
Gruppe: users
Datei mit entsprechend jeweilig korrgiertem Titel in die Verzeichnisse:
/home/Benutzername/webprojektsonne/htdocs
/home/Benutzername/webprojektmond/htdocs
/home/Benutzername/webprojektsterne/htdocs
abgelegt.
-------------------------------------------------------------------
9.) Anlegen + Rechtevergabe der Datei .htaccess (Zwecks Zugriffbeschränkung von außerhalb meines Netzwerkes)
- Code: Select all
Order deny, allow
deny from all
allow from 192.168.178.10 192.168.178.12 192.168.178.13
Rechte 664
Benuter: Benutzername
Gruppe: users
Ablegen dieser Datei in den drei Verzeichnissen:
/home/benutzername/webprojektsonne/htdocs
/home/benutzername/webprojektmond/htdocs
/home/benutzername/webprojektsterne/htdocs
-------------------------------------------------------------------
10.) Überprüfung Einstellung der Firewall
YAST-Sicherheit und Benutzer-Firewall-Schnittstellen:
Es sind folgende Schnittstellen eingetragen:
Gerät----------------------Schnittstelle oder String----------------------Konfiguriert in
DSL-Verbindung--------------------dsl0-------------------------------Keine Zone zugewiesen
Meine Netzwerkkarte-----------eth-id-00----------------------------------Externe Zone
Erlaubte Dienste:
Es sind folgende Dienste erlaubt:
HTTP-Server
-------------------------------------------------------------------
11.) Testen der Gesamtkonfiguration
Eingabe in die Adresszeile des Browsers:
www.webprojektsonne.local # Es sollte die index.html-Seite mit dem Webprojekt Sonne im Titel erscheinen (bisher ohne Erfolg)
www.webprojektsonne.local/phpinfo.php # Es sollte die phpinfo-Seite ausgegeben werden. (bisher ohne Erfolg)
(Für Webprojektmond und Webprojektsterne entsprechend...)
-------------------------------------------------------------------