Plesk 8: Subdomains nicht über Plesk verwalten

Dawn

Registered User
Hallöchen,

Ich habe mir die für mich intressanten Postings betreffend Subdomains mal näher angeschaut, konnte aber für mein Problem keine Lösung finden. Was ich möchte ist eigentlich relativ simpel (wenn man weiss wie schätze ich mal):

Angenommen der gewünschte Domain ist domain.com. Nun möchte ich einen Blog installieren. Der Blog sollte über http://blog.domain.com, https://blog.domain.com angesprochen werden können. Dies wäre ja rein grundsätzlich kein Problem, wenn man die Subdomain über Plesk anlegen würde. Aber ich möchte nicht für die Subdomain eine eigene Konfiguration anlegen (beziehungsweise sie von Plesk generieren lassen). Ich möchte nur das der Subdomain auf das Verzeichnis /var/www/vhosts/domain.com/httpdocs/blog verweisst. Dies sollte für http und https funktionieren und ansonsten die vhost.conf einstellungen der domain.com übernehmen.

Wäre super wenn mir jemand einen Ratschlag in diesem Zusammenhang geben könnte.

Gruss & besten Dank im Vorraus,
Dawn
 
Last edited by a moderator:
Dawn said:
Aber ich möchte nicht für die Subdomain eine eigene Konfiguration anlegen (beziehungsweise sie von Plesk generieren lassen).
Höre ich da so ein kleines Stampfen von kleinen Füsschen auf den Boden? ;)

Wie stellst Du Dir das sonst vor?
Du hast einen anderen DocumentRoot, also brauchst Du einen eigenen VirtualHost. Wenn Du ihn nicht per Plesk anlegen willst, mußt Du ihn eben selbst anlegen und in die httpd.conf verknüpfen. Da Du auch SSL nutzen willst, mußt Du sogar 2 VirtualHost's anlegen.

Einfacher wäre es mit Plesk und dann in der entsprechenden vhost.conf den DocumentRoot überschreiben.

huschi.
 
@Huschi: *lol* Ja ich glaube du kannst die Erschütterung leicht spüren.. ;)

Diese Möglichkeit gäbe es natürlich nur muss ich dann alle einstellungen welche ich in der vhost.conf und vhost_ssl.conf für die normale Domain habe auch für die Subdomain vornehmen (jedenfalls die für die Anwendung relevanten Einstellungen). Etwas doppelt zu machen finde ich etwas unschön... Aber ja ich sehe momentan auch keinen anderen bzw besseren weg.

@dabauer82: Ein Domainalias ist ja nur ein Alias des Domains und kann nicht direkt auf ein Verzeichnis zeigen. Vielleicht verstehe ich dich aber nicht richtig, wäre für eine Erklärung dankbar...
 
Dawn said:
Etwas doppelt zu machen finde ich etwas unschön...
Wenn Du die eh die wichtigsten Einstellungen in die vhost.conf ausgegliedert hast, dann leg doch einfach ne Kopie der entsprechenden httpd.include nach /etc/apache2/subdomain.conf und ändere einfach die ServerName und DocumentRoot. Setze ein include in die httpd.conf und fertig.
Achte darauf, daß der Include der vhost.conf per absoluten Pfad statt findet.

huschi.
 
Also ich habe meine aktuelle httpd.include aus dem /conf Verezeichnis des betreffenden Domains genommen. Diese habe ich nicht ins /etc/apache2 Verzeichnis kopiert (habe ich nat. auch ausprobiert) sondern ebenfalls ins /conf und blog.domain.com.conf genannt.
In der /etc/apache2/httpd.conf habe ich die folgende Zeile eingetragen:

Code:
Include /var/www/vhosts/domain.com/conf/blog.domain.com.conf

Danach habe den Servername (blog.domain.com:443), ServerAlias (www.blog.domain.com) und den DocumentRoot (/var/www/vhosts/domain.com/httpdocs/blog) angepasst. Das gleiche habe ich natürlich auch für den non SSL Teil erledigt.

Natürlich habe ich danach Apache2 neu gestartet. Hat auch prima ohne Fehlermeldungen funktioniert, nur als ich nacher auf die URL zugreifen wollte bekamm ich die im Browser übliche "Forbidden"-Fehlermeldung.

Was könnte ich nicht beachtet haben? Ich sehe den Fehler nicht... Wenn ich die blog.domain.com.conf hier posten soll nur sagen...
 
Dawn said:
Was könnte ich nicht beachtet haben? Ich sehe den Fehler nicht...
Du hast die Logfiles nicht beachtet! Deshalb siehst Du nicht die vollständige Fehlermeldung.
Apache schreibt bei einem "Forbidden" in irgendein error_log.
Entweder unter /var/log/apache2/ oder in das, welches im VirtualHost mit angegeben ist.

Wenn ich die blog.domain.com.conf hier posten soll nur sagen...
Wäre evtl. Hilfreich. Das Logfile ist aber viel dringlicher.

huschi.
 
Ups, ja darauf hätte ich auch selber kommen können *schäm*. Danke trotzdem für deine Geduld, also hier der Eintrag aus dem "error_log" im Verzeichnis /var/www/vhosts/domain.com/statistics/logs:

Code:
[Tue May 02 23:48:25 2006] [error] [client 80.238.*.*] Directory index forbidden by rule: /var/www/vhosts/domain.com/httpdocs/blog/

Hier die /var/www/vhosts/domain.com/conf/blog.domain.com.conf:

Code:
# ATTENTION!
# DO NOT MODIFY THIS FILE OR ANY PART OF IT. THIS CAN RESULT IN IMPROPER PLESK
# FUNCTIONING OR FAILURE, CAUSE DAMAGE AND LOSS OF DATA. IF YOU REQUIRE CUSTOM
# MODIFICATIONS TO BE APPLIED TO THE CONFIGURATION, PLEASE, PERFORM THEM IN THE
# FOLLOWING FILE(S):
# /var/www/vhosts/domain.com/conf/vhost.conf
# /var/www/vhosts/domain.com/conf/vhost_ssl.conf
# /var/www/vhosts/domain.com/subdomains/<subdomain-name>/conf/vhost.conf

<IfModule mod_ssl.c>

<VirtualHost 217.20.*.*:443>
        ServerName   blog.domain.com:443
        ServerAlias  www.blog.domain.com
        UseCanonicalName Off
                SuexecUserGroup         domain psacln
        ServerAdmin  irgendjemand.gmx.net
        DocumentRoot /var/www/vhosts/domain.com/httpdocs/blog
        CustomLog  /var/www/vhosts/domain.com/statistics/logs/access_ssl_log plesklog
        ErrorLog     /var/www/vhosts/domain.com/statistics/logs/error_ssl_log
<IfModule mod_userdir.c>
        UserDir /var/www/vhosts/domain.com/web_users
</IfModule>
        ScriptAlias  /cgi-bin/ /var/www/vhosts/domain.com/cgi-bin/
        Alias  /plesk-stat /var/www/vhosts/domain.com/statistics/
        Alias  /webstat /var/www/vhosts/domain.com/statistics/webstat
        Alias  /webstat-ssl /var/www/vhosts/domain.com/statistics/webstat-ssl
        Alias  /ftpstat /var/www/vhosts/domain.com/statistics/ftpstat
        Alias  /anon_ftpstat /var/www/vhosts/domain.com/statistics/anon_ftpstat
        SSLEngine on
        SSLVerifyClient none
        SSLCertificateFile /opt/psa/var/certificates/certXf97VIR
        <Directory /var/www/vhosts/domain.com/httpdocs>
        <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 mod_php4.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/var/www/vhosts/domain.com/httpdocs:/tmp"
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/var/www/vhosts/domain.com/httpdocs:/tmp"
        </IfModule>
        <IfModule mod_python.c>
        <Files ~ (\.py$)>
                SetHandler python-program
                PythonHandler   mod_python.cgihandler
        </Files>
        </IfModule>
                SSLRequireSSL
                Options +Includes +ExecCGI
        </Directory>
        <Directory /var/www/vhosts/domain.com/web_users>
        <IfModule mod_php4.c>
                php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine off
        </IfModule>
        </Directory>
        <Directory "/var/www/vhosts/domain.com/statistics">
                AuthType Basic
                AuthName "Domain statistics"
                AuthUserFile /var/www/vhosts/domain.com/pd/d..httpdocs@plesk-stat
                require  valid-user
        </Directory>
        Alias "/error_docs" "/var/www/vhosts/domain.com/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
        Include /var/www/vhosts/domain.com/conf/vhost_ssl.conf
</VirtualHost>

</IfModule>

<VirtualHost 217.20.*.*:80>
        ServerName   blog.domain.com:80
        ServerAlias  www.blog.domain.com
        UseCanonicalName Off
        SuexecUserGroup         domain psacln
        ServerAdmin  "irgendjemand.gmx.net"
        DocumentRoot /var/www/vhosts/domain.com/httpdocs/blog
        CustomLog  /var/www/vhosts/domain.com/statistics/logs/access_log plesklog
        ErrorLog   /var/www/vhosts/domain.com/statistics/logs/error_log
<IfModule mod_userdir.c>
        UserDir /var/www/vhosts/domain.com/web_users
</IfModule>
        ScriptAlias  /cgi-bin/ /var/www/vhosts/domain.com/cgi-bin/
        Redirect permanent /plesk-stat https://domain.com/plesk-stat
        Redirect permanent /webstat https://domain.com/webstat
        Redirect permanent /webstat-ssl https://domain.com/webstat-ssl
        Redirect permanent /ftpstat https://domain.com/ftpstat
        Redirect permanent /anon_ftpstat https://domain.com/anon_ftpstat
        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>
        <Directory /var/www/vhosts/domain.com/httpdocs>
        <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 mod_php4.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/var/www/vhosts/domain.com/httpdocs:/tmp"
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
                php_admin_value open_basedir "/var/www/vhosts/domain.com/httpdocs:/tmp"
        </IfModule>
        <IfModule mod_python.c>
        <Files ~ (\.py$)>
                SetHandler python-program
                PythonHandler   mod_python.cgihandler
        </Files>
        </IfModule>
                Options +Includes +ExecCGI
        </Directory>
        <Directory /var/www/vhosts/domain.com/web_users>
        <IfModule mod_php4.c>
                php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine off
        </IfModule>
        </Directory>
        Alias "/error_docs" "/var/www/vhosts/domain.com/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
        Include /var/www/vhosts/domain.com/conf/vhost.conf
</VirtualHost>

Ich weiss nicht obs dann vielleicht am Script oder so liegt, auf jeden Fall um das auch noch genannt zu haben, ich nutze "Serendipity 1.0-beta2".

Bemerkung: Mein Domain heisst natürlich nicht "domain.com", der User heisst auch nicht "domain", die Email nicht "irgendjemand@gmx.net" und die IP habe ich natürlich auch "zensiert" ansonsten ist alles 1:1

PS: Was ich übrigends merkwürdig finde ist das in der SSL Konfiguration die Email ohne " " steht, aber in der normalen Config mit " ". Aber ich denke das ist ein Plesk-Bug und wird so falsch generiert (kann ich mir nicht anders erklären). Ich weiss aber natürlich das dies nicht das Problem ist.
 
Last edited by a moderator:
Dawn said:
Directory index forbidden by rule: /var/www/vhosts/domain.com/httpdocs/blog/
Das heißt, daß er keine index.html|.php etc. gefunden hat. Darauf hin versucht er einen Directory-Index aufzubauen, was aber schief läuft, weil dies für diesen VirtualHost nicht frei geschaltet ist.

Lösung:
Sorge dafür, daß eine Datei so heißt, wie es in der DirectoryIndex (irgendwo in /etc/apache2/*.conf) steht.

huschi.
 
Wäre eine Idee gewesen nur habe ich in der /etc/apache2/apache2.conf nachgeschaut:

Code:
DirectoryIndex at_domains_index.html index.html index.cgi index.pl index.php index.xhtml index.shtml index.cfm index.htm

Ausserdem habe ich auch das Blog-Verzeichnis unter die Lupe genommen: Es befindet sich darin eine Datei namens "index.php".

Gruss,
Dawn
 
Ich glaube jetzt sind wir auf der richtigen Spur... Ich hatte die gleiche Idee und hab inzwischen auch rasch ne "Hello World" HTML-Datei erstellt (index.htm). Diese und die PHP-Datei (index.php) können aufgerufen werden... (über die URL blog.domain.com/index.htm bzw. index.php).

Was jedoch wieder merkwürdig ist, ist dass CSS total falsch angezeigt wird.. Irgend ein Grundsätzliches Problem scheint noch vorhanden zu sein...
 
Huschi: Habe schon gedacht: Das ist es. Aber nein, es existiert nur folgende .htaccess-Datei und im Script selber ist URL-Rewriting auch deaktiviert...:

Code:
# BEGIN s9y
DirectoryIndex /blog/index.php
php_value session.use_trans_sid 0
php_value register_globals off

<Files *.tpl.php>
    deny from all
</Files>

<Files *.tpl>
    deny from all
</Files>

<Files *.sql>
    deny from all
</Files>

<Files *.inc.php>
    deny from all
</Files>

<Files *.db>
    deny from all
</Files>

# END s9y

flyingoffice: Wenn ich die Page so aufrufe geht alles problemlos...
 
Dann hast Du ein Problem mit den Pfadangaben in den Quelltexten.
Code:
# BEGIN s9y
DirectoryIndex [COLOR="Red"][B]/blog/[/B][/COLOR]index.php
Kommt Dir der rot markierte Teil nicht merwürdig vor?
Bei einem Aufruf über Deine "Hautpdomain" paßt das, wenn Du es aber über die Subdomain aufrufst ist ein Ordner /blog/ ja nicht vorhanden, sondern Dein DocumentRoot.

Gruß flyingoffice
 
Last edited by a moderator:
@dawn

Ein http://www.domain.tld/ordern/ = http://ordner.domain.tld ist immer problematisch wenn die Pfade in den Quelltexten nicht sauber (relativ) angegeben sind. Folgende Möglichkeiten:

1) alle Pfade in den Quelltexte überarbeiten
2) Subdomain über Plesk anlegen und blog dort installieren (eigener Ordner)
2a) in domain.tld/blog/ eine .htaccess mit redirect auf die Subdomain
2b) in domain.tld/blog/ eine index.html mit Frameweiterleitung auf Subdomain

Gruß flyingoffice
 
Ups ja den Eintrag hatte ich übersehen. Ich bin eh ziemlich überrascht das das so problematisch sein soll und habe darum beschlossen blog.domain.com auf domain.com/test umzuleiten.

Ich wollte diese jedoch nicht mit einer .htacces-Datei tun sondern direkt schon über Apache2.

Ich habe darum folgendes Config angelegt und dieses in der httpd.conf included:
Code:
<IfModule mod_ssl.c>
<VirtualHost 217.20.*.*:443>
        ServerName   blog.domain.com:443
        ServerAlias  www.blog.domain.com
        Redirect / https://www.domain.com/blog
</VirtualHost>
</IfModule>

<VirtualHost 217.20.117.30:80>
        ServerName   blog.domain.com:80
        ServerAlias  www.blog.domain.com
        Redirect / http://www.domain.com/blog
</VirtualHost>

Dies funktioniert auch wirklich problemlos nur habe ich etwas sehr merkwürdiges festgestellt: Da ich mehrere Subdomains auf diese Art nutze habe ich auch mehrere Include-Einträge in der httpd.conf. Wenn ich nun irgendetwas.domain.com im Browser eintippe wird die Anfrage immer auf den ersten Include Eintrag (den ersten Subdomain) umgeleitet obwohl dafür gar kein ServerName/ServerAlias besteht. Ich verstehe den Grund dafür nicht wirklich...

Beispiel:

Folgende Subdomains sind mit solchen Configs included worden:
blog.domain.com
faq.domain.com
gallery.domain.com

Bei Eingabe im Browser von blabla.domain.com oder asfjfkfjdkldsf.domain.com wird der Benutzer ebenfalls auf blog.domain.com umgeleitet. Die Umleitungen für faq.domain.com und gallery.domain.com funktionieren aber problemlos.
 
Last edited by a moderator:
Dawn said:
Ich bin eh ziemlich überrascht das das so problematisch sein soll
Was war daran problematisch?
Du hattest lediglich einen Fehler in der .htaccess.
Solange Du dort den Pfad im DirectoryIndex weg läßt (oder besser das ganze DirectoryIndex), ist doch alles in Butter.

Wenn ich nun irgendetwas.domain.com im Browser eintippe wird die Anfrage immer auf den ersten Include Eintrag (den ersten Subdomain) umgeleitet obwohl dafür gar kein ServerName/ServerAlias besteht.
Dann mußt Du eben einen Default-vHost einrichten. Einen ohne ServerName und ohne ServerAlias.

huschi.
 
Back
Top