PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aliaspfade für Apache2



be27
28.08.07, 20:39
Hallo zusammen,

vor paar Tagen habe ich gepostet, dass mein Apache2 nicht starten kann.
Jetzt kann der Apache starten aber ich habe Schwierigkeiten mit "Alias" für Apache2.

Also ich möchte phpmyadmin über http://localhost/phpmyadmin/ aufrufen und http://localhost/joomla_1.0.12 aufrufen können.

Wenn ich jetzt nur http://localhost aufrufe wird automatisch nur joomla aufgerufen.

/etc/apache2/sites-available/
joomla_1.0.12:


<VirtualHost *>
ServerAdmin webmaster@localhost

ServerName localhost

DocumentRoot /var/www/joomla_1.0.12/
Alias /joomla_1.0.12/ /var/www/joomla_1.0.12/
<Directory "/var/www/joomla_1.0.12/">
Order Deny,Allow
Allow from all
Options -Indexes
</Directory>

ErrorLog /var/log/apache2/error_joomla_1.0.12.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/joomla_1.0.12_access.log combined
</VirtualHost>

phpmyadmin:


<VirtualHost *>
ServerAdmin webmaster@localhost

ServerName localhost

DocumentRoot /var/www/phpmyadmin/
Alias /phpmyadmin/ /var/www/phpmyadmin/
<Directory "/var/www/phpmyadmin/">
Order Deny,Allow
Allow from all
Options -Indexes
</Directory>

ErrorLog /var/log/apache2/error_phpmyadmin.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/phpmyadmin_access.log combined
</VirtualHost>

Laut der log Datei beim Aufruf von phpmyadmi sucht Apache zuerst im joomla Verzeichnis, was natürlich falsch ist:


[Tue Aug 28 21:17:33 2007] [error] [client 127.0.0.1] File does not exist: /var/www/joomla_1.0.12/phpmyadmin

Wie müssen die korrekten Aliaspfade für Joomla und phpmyadmin sei?

KUbuntu 7.04, Apache 2.2.3, PHP 5.2.1, MySQL 5.0.38

Grüße be27

cane
28.08.07, 22:36
Sind beide Vhosts enabled (a2ensite)?

mfg
cane

be27
29.08.07, 17:01
Hallo,

leider kann ich das nicht beruteilen, ich weiß leider nicht wo sich diese Option befindet :(

grüße be27

Tosog
29.08.07, 22:31
Huhu,

du hast das mit den vhosts falsch verstanden. Virtual Hosts sind dazu da, um auf einem Apacheserver mehrere domains bzw. subdomains (also mehrere hostnames) laufen zu lassen. So ein hostname ist z.B. linuxforen.de, www.redhat.com oder auch localhost.

Würdest du die default Installation ohne vhosts unangerührt lassen, so würden z.B. http://www.deinedomain.de und http://www.einekomplettanderedomain.de auf den selben Webspace landen, was aber nicht Zweck der Sache ist.

Deshalb legt man für jeden hostnamen, der auf deinen Server verweist, einen eigenen virtuellen Host an. Also einen für www.deinedomain.de, eine für www.einekomplettanderedomain.de und für dich eben auch eine eigene für localhost.

Ich weiß jetzt nicht genau, was du mit deiner Apache Umgebung vor hast, ich nehm aber an dass es nur eine Testumgebung für dich sein soll. In diesem Fall brauchst du keine virtuellen Hosts. Außer einen, den default. Normalerweise braucht man ihn nicht, da deine Kubuntu Installation das aber so vorgeschlagen hat, würd ich das auch so lassen.

Was du jetzt tun musst:
- Lösch alle aktivierten vhosts aus dem /etc/apache2/sites-enabled/ Ordner raus (nicht sites-available!).

- Da ich glaub ich in deinem andern Thread (mag jetzt nicht suchen) geschrieben hast, dass du den vhost für default gelöscht hast, leg sie mit diesem Inhalt neu an:

/etc/apache2/sites-available/default

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>

- danach musst du diesen vhost enablen:

a2ensite default
Das erstellt einen symbolischn Link namens 000-default unter /etc/apache2/sites-enabled/ (000 deshalb da der 1. gefundene vhost der default ist, also wenn für eine andere domain die auch auf deinen apache verweist, kein vhost vorhanden ist, wird der default verwendet)

- Wenn du alles richtig gemacht hast, sollte unter
ls -la /etc/apache2/sites-enabled/ nur folgender Eintrag zu finden sein:
lrwxrwxrwx 1 root root 36 2007-04-26 22:03 000-default -> /etc/apache2/sites-available/default

- Ist das der Fall, restarte den Webserver.

Gehst du jetzt auf http://localhost/ kommst du zum Inhalt des Ordners /var/www/. Liegt in diesem Ordner der Ordner von phpmyadmin (/var/www/phpmyadmin/) ist es unter http://localhost/phpmyadmin/ erreichbar. Liegt unter /var/www/ auch joomla_1.0.12, ist es unter http://localhost/joomla_1.0.12 erreichbar. Existiert die Datei /var/www/xyz.txt erreichst du sie unter http://localhost/xyz.txt

Du brauchst also keinen vhost für jeden einzelnen Unterordner, weils ja ..hm. nur ein Unterordner ist :)

Das folgende ist offtopic, aber vielleicht interessierts dich trotzdem:
ad vhosts
dein phpmyadmin ist jetzt nicht nur unter http://localhost/phpmyadmin/ erreichbar, sondern auch unter http://127.0.0.1/phpmyadmin/, http://192.168.x.x/phpmyadmin/ usw. Willst du dass es nur unter dem Hostnamen localhost erreichbar sein soll, brauchst du die default nicht anzurühren, sondern erstell einen neuen vhosts in sites-available. Einziger Unterschied sollte sein: a) NameVirtualhost hier raus löschen, b) innerhalb von <VirtualHost> ein "ServerName localhost" hinzufügen und evtl c) einen anderen DocumentRoot setzen, das ist aber nicht unbedingt notwendig

ad Alias
Einen Alias Tag verwendet man, wenn man Ressourcen auf jeder domain haben will, z.B. /webmail oder eben /phpmyadmin. Hier muss man nicht für jeden einzelnen hostnamen (vhost) ein eigenes phpmyadmin installieren, sondern reicht es wenn man ein Alias (sozusagen Verknüpfung) erstellt.

sites-available vs. sites-enabled (beide unter /etc/apache2/)
Das ist glaub ich eine Eigenheit von Debian (bzw. eben verwandten Distributionen wie Ubuntu) und soll das konfigurieren von vhosts erleichtern. vhosts legst du in sites-available an, was aber nicht bedeutet, dass der vhost auch aktiv ist. Apache schaut in diesem Ordner nicht nach, sondern includiert nur die configs, die in sites-enabled drinnen sind. Mit dem Hilfsprogramm a2ensite kann man eben einen symbolischn Link erstellen. ein "a2ensite default" setzt einen link von /etc/apache2/sites-enabled/000-default nach /etc/apache2/sites-available/default

Hoffe geholfen zu haben! Und ich finds irgendwie schade dass hier sonst niemand geantwortet hat, wenns doch offensichtlich is was hier falsch läuft.

be27
30.08.07, 20:15
hallo

interessanter Beitrag, aus Zeitgründen, werde ich ihn leider erst am Wochenende antworten :-(

Grüße be27

be27
02.09.07, 17:39
Hallo Tosog,

vielen Dank für die ausführliche Erklärung, ja es hat mir weiter geholfen :)

Ich habe Dein Rat beherzigt und auf "default" umgestellt,


Ich weiß jetzt nicht genau, was du mit deiner Apache Umgebung vor hast, ich nehm aber an >dass es nur eine Testumgebung für dich sein soll. In diesem Fall brauchst du keine >virtuellen Hosts. Außer einen, den default. Normalerweise braucht man ihn nicht, da deine >Kubuntu Installation das aber so vorgeschlagen hat, würd ich das auch so lassen.

Ja, es handelt sich nur um eine Testumgebung.
Mit den virtuellen Hosts wollte ich etwas experimentieren, leider ist es schief gelaufen :-(
Meine /etc/apache2/sites-available/default sieht folgender Massen aus:


NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>

ErrorLog /var/log/apache2/error_default.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Jetzt installiere ich unterhalb von /var/www/ alle meine Webanwendung und spreche sie an wie Du beschrieben hast über http://localhost/anwendung

Zum testen habe ich Dein Rat befolgt aus dem Abschnitt:


ad vhosts
dein phpmyadmin ist jetzt nicht nur unter http://localhost/phpmyadmin/ erreichbar, sondern auch unter http://127.0.0.1/phpmyadmin/, http://192.168.x.x/phpmyadmin/ usw. Willst du dass es nur unter dem Hostnamen localhost erreichbar sein soll, brauchst du die default nicht anzurühren, sondern erstell einen neuen vhosts in sites-available. Einziger Unterschied sollte sein: a) NameVirtualhost hier raus löschen, b) innerhalb von <VirtualHost> ein "ServerName localhost" hinzufügen und evtl c) einen anderen DocumentRoot setzen, das ist aber nicht unbedingt notwendig

und eine zweite Datei, phpmyadmin erstellt, die so aussieht:


<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName localhost
DocumentRoot /var/www/phpmyadmi/phpmyadmin
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>

ErrorLog /var/log/apache2/error_default.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

</VirtualHost>

Apache neu gestartet, es funktioniert ebenfalls :)

Noch eine abschließenden Frage, abgesehen von den Subdomains(man hat nur eine Server und muss oder möchte mehrere Domains betreigen), bringt ein oder mehrere VirtualHost/s Vor oder Nachteile auf einer Testmaschiene wie meine?

Grüße be27

Tosog
02.09.07, 18:34
Huhu, nein hat keine Vor/Nachteile. Vorteil von vhosts is halt dass du mehrere domains hosten kannst *g*

aber wenn bei dir beide files aktiv sind, müsste er eigentlich die 1. (default) datei ignorieren denn sobald du localhost im browser eingibst, greift das "ServerName localhost" der 2. (phpmydadmin) vhost datei zu und verwendet dessen DocumentRoot. Wenn du also eine /var/www/xyz.txt hast, ist sie unter http://localhost/xyz.txt nicht erreichbar, sehr wohl aber unter http://127.0.0.1/xyz.txt

also nochmal, die default (bzw. der virtualhost ohne einem "ServerName"-Eintrag) gilt nur für die hostnamen für die in keinem virtualhost ein "ServerName" zu finden ist.