Subdomain auf DocumentRoot

Shocktale

Registered User
Hi @All

Habe da ein kleines Problem mit den Subdomains.
Habe Suse Linux 9.3 mit Plesk 7.5.4 auf meinem ROOT-Server.

Habe in Plesk meine Subdomain angelegt unter der Hauptdomain.
nun will ich, dass wenn man im Browser http://sub.domain.de eingibt automatisch auf das physische Verzeichnis /home/httpd/vhosts/domain.de/httpdocs/sub zugreift und nicht wie in Plesk auf "/home/httpd/vhosts/domain.de/subdomains/sub/httpdocs"

habe aus diesem Zweck im Verzeichnis "/home/httpd/vhosts/domain.de/subdomains/sub/conf" die datei vhost.conf angelegt und folgende Zeile reingeschrieben:

DocumentRoot /home/httpd/vhosts/domain.de/httpdocs/sub

aber das funtzt net.
 
Kann so auch nicht funzen.
Du brauchst pro Subdomain einen eigenen VirtualHost.

Erstmal das hier lesen: http://www.huschi.net/25_85_de.html

Dann die vhost.conf bearbeiten:
Code:
</VirtualHost>
<VirtualHost my.ip:80>
ServerName sub.domain.tld
[etc]
#!!!! nicht so abschliessen:
#</VirtualHost>

Ne andere Methode wäre mit mod_rewrite und einem "ServerAlias sub.domain.tld".

huschi.
 
Danke für deine Antwort.
Habe in der:

Code:
/home/httpd/vhosts/domain.de/httpdocs/conf

eine Datei vhost.conf und sie mit

Code:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=domain.de

und

Code:
/etc/init.d/apache2 reload
eingebunden und den Apachen neu gestartet.
Die einstellungen wurden auch übernommen.

dann habe ich im Plesk eine Subdomain unter der Domain angelegt. Die zeigt ja auf den Physischen Ordner /home/httpd/vhosts/domain.de/subdomains/sub/httpdocs

dort habe ich auch eine vhost.conf im conf Verzeichnis.

dort steht nur drin
Code:
DocumentRoot /home/httpd/vhosts/domain.de/httpdocs/sub
und versucht mit
Code:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=sub.domain.de

und

Code:
/etc/init.d/apache2 reload
die einzubinden, aber der apache übernimmt die einstellungen für die Subdomain nicht.
Habe bestimmt ein Verständnissproblem. Oder?

Die Methode mit dem ServerAlias in der domain.de (vhost.conf) zeigt aber dann auf das httpdocs-Verzeichnis, ich wills aber in ein Verzeichnis haben /httpdocs/sub.
 
Last edited by a moderator:
Shocktale said:
Habe bestimmt ein Verständnissproblem.
Ja.
Der DocumentRoot wird nicht überschrieben. (warum auch immer...)
Vergiss die Plesk-Subdomain und mach es wie ich oben geschrieben hab.

Die Methode mit dem ServerAlias in der domain.de (vhost.conf) zeigt aber dann auf das httpdocs-Verzeichnis.
Und genau dafür nimmt man in dem Fall mod_rewrite. (Boardsuche/Googlen)

huschi.
 
Also wenn ich das richtig verstanden habe, dann lösche ich die Subdomain in Plesk und trage in der vhost.conf der Hauptdomain folgende Zeilen ein:

Code:
<VirtualHost die_ip:80>
	ServerName   sub.domain.de:80
	SuexecUserGroup         webmaster psacln
	DocumentRoot /home/httpd/vhosts/domain.de/httpdocs/sub
	CustomLog  /home/httpd/vhosts/domain.de/statistics/logs/access_log plesklog
	ErrorLog   /home/httpd/vhosts/domain.de/statistics/logs/error_log
	ScriptAlias  /cgi-bin/ /home/httpd/vhosts/domain.de/cgi-bin/
	<IfModule mod_ssl.c>
		SSLEngine off
	</IfModule>
	<Directory  /home/httpd/vhosts/domain.de/httpdocs/sub>
	<IfModule mod_perl.c>
	<Files ~ (\.pl$)>
		SetHandler perl-script
		PerlHandler ModPerl::Registry
		Options ExecCGI
		allow from all
		PerlSendHeader On
	</Files>
	</IfModule>
	<IfModule mod_perl.c>
	<Files ~ (\.asp$)>
		SetHandler perl-script
		PerlHandler Apache::ASP
		PerlSetVar Global /tmp
	</Files>
	</IfModule>
	<IfModule sapi_apache2.c>
		php_admin_flag engine on
		php_admin_value open_basedir "/home/httpd/vhosts/domain.de/httpdocs/sub:/tmp"
	</IfModule>
	<IfModule mod_php5.c>
		php_admin_flag engine on
		php_admin_value open_basedir "/home/httpd/vhosts/domain.de/httpdocs/sub:/tmp"
	</IfModule>
		Options +Includes +ExecCGI
	</Directory>
	Alias "/error_docs" "/home/httpd/vhosts/domain.de/error_docs"
	ErrorDocument 400 /error_docs/bad_request.html
	ErrorDocument 401 /error_docs/unauthorized.html
	ErrorDocument 403 /error_docs/forbidden.html
	ErrorDocument 404 /error_docs/not_found.html
	ErrorDocument 500 /error_docs/internal_server_error.html
</VirtualHost>

Oder?

Hmm da gibts fehler...!!
Dieser Virtualhost teil, ist der nicht für die httpd.conf gedacht?
Und vor allem wird das, wenn ich die ändere, nicht von Plesk überschrieben?
 
Last edited by a moderator:
Ok, glaub die eintragung in der httpd.conf wird nicht überschrieben.
Hab das eingetragen und es läuft... "freu"
 
Shocktale said:
Hmm da gibts fehler...!!
Weil Du oben nicht richtig gelesen hast!

Ich wiederhole:
Code:
[b]</VirtualHost>[/b]
<VirtualHost my.ip:80>
ServerName sub.domain.tld
[etc]
[b]#!!!! nicht so abschliessen:
#</VirtualHost>[/b]

Die nötige Erklärung findet man in der include.http im selben Verzeichnis.

huschi.
 
Ich stehe gerade vor dem selben Problem, wenn ich
Code:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=sub.domain.de
ausführen will kommt:
Code:
 Syntax error on line 1 of /srv/www/vhosts/domain.de/subdomains/subdomain/conf/vhost.conf: </VirtualHost> without matching <VirtualHost> section

So sieht meine vhost.conf aus:
Code:
</VirtualHost>
<VirtualHost IP:80>
ServerName sub.domain.de
DocumentRoot /srv/www/vhosts/domain.de/httpdocs/subdomain
SuexecUserGroup domainuser.de psacln
#!!!! nicht so abschliessen:
#</VirtualHost>

Das scheint also unter Plesk 9.0.1 mit Suse nicht mehr zu gehen!
 
Nicht Plesk ist schuld sondern Apache.
Früher hat Apache alle Conf-Dateien zu einer großen gemerged und dann geparst um seine Konfiguration fest zu legen.
Seit geraumer Zeit wurde dies umgestellt und jede Conf muss ein abgeschlossenes Selbst sein.

Daher funktioniert diese veraltete Anleitung nicht mehr.
Was nicht weiter schlimm ist da es ja den Subdomain-Manager gibt.
Alternativ kannst Du auch in /etc/apache/conf.d/ (o.ä.) Deine Subdomain definieren.

huschi.
 
Moin! :)

Jo den Subdom Manager habe ich schon ausprobiert, hatte kleinere Schwierigkeiten bei der Installation aber er müsste nun eigentlich laufen.. Rechte angepasst, wrapper kompiliert etc.

Ich bekomme zwar alles richtig angezeigt und auch eine positive Meldung nachdem ich z.b. für eine Subdomain den DocRoot geändert habe, ausgeführt werden die Änderungen aber nicht.

Ist eigentlich auch nicht weiter tragisch, denn das einfache setzen von DocumentRoot in der vhosts.conf der Domain führt einwandfrei dazu, dass die Domain auf das entsprechende Verzeichnis zeigt.

Was allerdings nicht geht, ist dass PHP ausgeführt wird, trotz engine on.

Die vhost.conf habe ich so geändert, ohne VirtualHost:
Code:
ServerName sub.domain.de
DocumentRoot /srv/www/vhosts/domain.de/httpdocs/sub
php_admin_flag engine on
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
AddType application/x-httpd-php-source .phps

Nun habe ich gerade noch versucht, eine manuelle Angabe (Kopiert und Modifiziert von ner funktionierenden Subdomain) für die Subdom in die /etc/apache2/vhosts.d/subdomain.conf zu schreiben. Diese habe ich mit Include als letzte Zeile in der /etc/apache2/httpd.conf eingebunden.

Bringt trotzdem irgendwie alles nix, da PHP auch hier nicht ausgeführt wird. Vielleicht muss ich die Subdomain im Plesk wieder löschen damit das so funktionieren kann?

Edit: apache2 restart natürlich immer gemacht..
 
Beachte Fehlermeldungen und Warnungen im globalen Apache-Error-log als auch im Error-Log des VirtualHosts.

huschi.
 
Habe den Fehler gefunden, in meiner /etc/apache2/vhosts.d/subdomain.conf war das Directory für das PHP eingeschaltet war noch das "alte" der Subdomain und nicht der neue DocRoot. Nun funzt es.

Die Subdomain habe ich in Plesk gelöscht.

Danke für den moralischen Support :D
 
Back
Top