# ISPConfig 3 auf Debian Wheezy



## edvjellissen (17. Sep. 2015)

Hallo,
ich habe mir die Tage auf meinem virtuellen Server ISPConfig installiert. Das Betriebssystem ist Debian Wheezy.
Nach einiger Zeit und nach dpkg-configure postfix habe ich nun den Mail Server ans laufen bekommen. Ich habe allerdings noch Probleme mit dem Apache. Wenn ich Änderungen an den vhosts mache im Webinterface (ISPConfig 3) z.B. das DocumentRoot Verzeichnis ändern möchte. Übernimmt er das nicht in der vhost Datei. Er aktualisiert also den Apache Webserver nicht. 

Kann mir da jemand helfen? Ich habe keinen vergleichbaren Thread hier im Forum gefunden.


Vielen Dank für Eure Hilfe.


----------



## robotto7831a (17. Sep. 2015)

Wie änderst Du denn den DocumentRoot über ISPConfig?


----------



## edvjellissen (17. Sep. 2015)

Hallo,
ich bin im Endkunden unter Webseiten --> Webseite --> {Domain auswählen] --> Registerkarte Umleitung --> Weiterleitungspfad.


----------



## robotto7831a (17. Sep. 2015)

Ähm da stellt man aber nicht den DocumentRoot ein. Erzähl doch einfach was Du einstellen willst.


----------



## edvjellissen (18. Sep. 2015)

Ich möchte gerne meine Hauptdomain von dem Verzeichnis/web in das Verzeichnis /web/joomla umleiten.  Mehr nicht


----------



## Till (18. Sep. 2015)

Ich würde ja einfach den Inhalt des Verzeichnisses "foomla" direkt nach web kopieren, das docroot sollte man nie ändern. Wenn Du private Daten hast die nicht ins eb root sollen dann gehören die nach private.

wenn Du wirklich das docroot ändern willst Und Dir bewusst ist dass Dinge wie Statistiken dann nicht mehr gehen werden dann kannst Du eine eigene DocumentRoot Direktive in das apache Direktiven Feld welche den vollen Pfad zu website enthält einfügen.


----------



## edvjellissen (18. Sep. 2015)

Zitat von Till:


> ... kannst Du eine eigene DocumentRoot Direktive in das apache Direktiven ...


Wo bitte finde ich das Feld?


----------



## Till (18. Sep. 2015)

Optionen tab der webseite.


----------



## edvjellissen (18. Sep. 2015)

Ich habe nur die Registerkarten Domain, Umleitung, SSl, Statistiken und Backup.


----------



## Till (18. Sep. 2015)

Dann bist Du nicht als administrator eingelogged.


----------



## edvjellissen (18. Sep. 2015)

Gut, jetzt habe ich die Registerkarte Optionen mit PHP open_basedir etc.
{DOCROOT} /var/www/edv-jellissen.de/web/joomla/
Ist das so richtig?

1. Soll das heißen das meine Kunden nicht selbständig das Document Root Verzeichnis ändern dürfen?
2. Wie ich das mit Subdomains, wo werden die umgeleitet?
3. Wofür ist denn dann bitte die Einstellung unter der Registerkarte "Umleitung" --> Weiterleitungspfad usw.
Das ist doch dann sinnfrei oder?



Danke für die Antwort.


----------



## Till (18. Sep. 2015)

Zitat von edvjellissen:


> Gut, jetzt habe ich die Registerkarte Optionen mit PHP open_basedir etc.
> {DOCROOT} /var/www/edv-jellissen.de/web/joomla/
> Ist das so richtig?


Nein, siehe apache Doku zum Theme document root. apache kennt keine Platzhalter a la {DOCROOT}. Ein apache Document root wird durch die Direktive "DocumentRoot definiert, also so:

DocumentRoot /var/www/edv-jellissen.de/web/joomla

Wie schon im vorigen post gesagt ist das eine blöde idee und unnötig. Aber du scheinst es ja auf die harte tour selbst lernen zu wollen.



Zitat von edvjellissen:


> 1. Soll das heißen das meine Kunden nicht selbständig das Document Root Verzeichnis ändern dürfen?


Richtg, denn sonst könnte Kunde a mal schnell das docroot seiner seite auf das des Kunden b legen, sich aus dessem shop die kreditkartendaten runter laden und einen schönen Urlaub in der karibik machen oder er legt es mal auf das ispconfig verzeichnis und übernimmt Deinen server und sperrt dich aus 



Zitat von edvjellissen:


> 2. Wie ich das mit Subdomains, wo werden die umgeleitet?


Reiterkarte umleitung. Das docroot hat aber mit umleitungen nichts zu tun, dennn das docroot definiert das basisverzeichnis des vhost und eine umleitung ist eine funktion des apache zum umschreiben von URL's ( siehe rewriting im apache handbuch).

Und wenn eine subdomain ein eigenes verzeichnis haben soll weil dort andere software installiert ist als ind er hauptdomain dann legt man sie als eigene website an, so wie es im handbuch steht. denn kann kann ispconfig dafür sorgen dass deren inhalte sauber von der hauptdomain getrennt sind und die scripte unter einem anderen user laufen.



> 3. Wofür ist denn dann bitte die Einstellung unter der Registerkarte "Umleitung" --> Weiterleitungspfad usw.
> Das ist doch dann sinnfrei oder?


Eine Umleitung ist eine Umleitung und wird auf dem Reiter Umleitung definiert. Dass das docroot keine umleitung ist habe ich oben ja schon geschrieben, ich empfehle da mal die apache doku für Grundlagen was umleitungen (rewrites) sind und wie sie funktionieren.


----------



## edvjellissen (18. Sep. 2015)

Hallo. Danke erstmal. Natürlich weiß ich das Apache keine Variablen wie  {DOCROOT} kennt. ISPConfig hat mir das aber angeboten die Variable zu verwenden. Wie auch immer. Ich habe jetzt DocumentRoot ausgeschrieben und das gewünschte Verzeichnis direkt dahinter(wie es auch in der .vhost Datei stehen muss. Er übernimmt die Einstellungen nicht.


----------



## robotto7831a (18. Sep. 2015)

Kann ich nicht bestätigen. Gerade eben selber ausprobiert für einen Spezialfall.

Hast Du auch gewartet bis die Datei neu geschrieben wurde?


----------



## Till (18. Sep. 2015)

Die Einstellung wird dann nicht pbernommen wenn apache mit der neuen config nicht gestartet ist, Du erhältst dann eine .err Datei im sites-available Verzeichnis mit der fehlerhaften config.


----------



## edvjellissen (18. Sep. 2015)

So, jetzt sieht meine .vhost Datei so aus das es zwei Einträge DocumentRoot gibt.
Einmal ziemlich weit oben in <VirtualHost> mit dem falschen Eintrag und einmal vor dem Ende der Datei (vor </VirtualHost>)
Er nimmt natürlich den ersten (falschen) Eintrag DocumentRoot. :-( :-( :-( Was mache ich falsch?

Ich bin nach der Anleitung bei der Installation vorgegangen. https://www.howtoforge.com/perfect-server-debian-wheezy-apache2-bind-dovecot-ispconfig-3


----------



## robotto7831a (18. Sep. 2015)

Das funktioniert. Poste doch mal was du genau geschrieben hast.


----------



## edvjellissen (18. Sep. 2015)

Ich habe genau das geschrieben. 
DocumentRoot /var/www/edv-jellissen.de/web/joomla


----------



## robotto7831a (18. Sep. 2015)

Spielt dir vielleicht dein Browsercache einen Streich?


----------



## edvjellissen (18. Sep. 2015)

Leider nicht. Die v.host Datei sieht bei mir so aus

```
<Directory /var/www/edv-jellissen.de>
        AllowOverride None
                Order Deny,Allow
        Deny from all
        </Directory>

<VirtualHost *:80>
                    DocumentRoot /var/www/edv-jellissen.de/web
          
        ServerName edv-jellissen.de
        ServerAlias www.edv-jellissen.de
    ServerAlias wiki.edv-jellissen.de
        ServerAdmin webmaster@edv-jellissen.de

        ErrorLog /var/log/ispconfig/httpd/edv-jellissen.de/error.log

        Alias /error/ "/var/www/edv-jellissen.de/web/error/"
        ErrorDocument 400 /error/400.html
        ErrorDocument 401 /error/401.html
        ErrorDocument 403 /error/403.html
        ErrorDocument 404 /error/404.html
        ErrorDocument 405 /error/405.html
        ErrorDocument 500 /error/500.html
        ErrorDocument 502 /error/502.html
        ErrorDocument 503 /error/503.html

        <IfModule mod_ssl.c>
        </IfModule>

        <Directory /var/www/edv-jellissen.de/web>
                # Clear PHP settings of this website
                <FilesMatch ".+\.ph(p[345]?|t|tml)$">
                        SetHandler None
                </FilesMatch>
                Options +FollowSymLinks
                AllowOverride All
                                Order allow,deny
                Allow from all
              
                # ssi enabled
                AddType text/html .shtml
                AddOutputFilter INCLUDES .shtml
                Options +Includes
        </Directory>
        <Directory /var/www/clients/client1/web1/web>
                # Clear PHP settings of this website
                <FilesMatch ".+\.ph(p[345]?|t|tml)$">
                        SetHandler None
                </FilesMatch>
                Options +FollowSymLinks
                AllowOverride All
                                Order allow,deny
                Allow from all
              
                # ssi enabled
                AddType text/html .shtml
                AddOutputFilter INCLUDES .shtml
                Options +Includes
        </Directory>

        <IfModule mod_ruby.c>
            <Directory /var/www/edv-jellissen.de/web>
                Options +ExecCGI
            </Directory>
            RubyRequire apache/ruby-run
            #RubySafeLevel 0
            AddType text/html .rb
            AddType text/html .rbx
            <Files *.rb>
                SetHandler ruby-object
                RubyHandler Apache::RubyRun.instance
            </Files>
            <Files *.rbx>
                SetHandler ruby-object
                RubyHandler Apache::RubyRun.instance
            </Files>
        </IfModule>

        <IfModule mod_perl.c>
            PerlModule ModPerl::Registry
            PerlModule Apache2::Reload
            <Directory /var/www/edv-jellissen.de/web>
                PerlResponseHandler ModPerl::Registry
                PerlOptions +ParseHeaders
                Options +ExecCGI
            </Directory>
            <Directory /var/www/clients/client1/web1/web>
                PerlResponseHandler ModPerl::Registry
                PerlOptions +ParseHeaders
                Options +ExecCGI
            </Directory>
            <Files *.pl>
                SetHandler perl-script
            </Files>
        </IfModule>

        <IfModule mod_python.c>
            <Directory /var/www/edv-jellissen.de/web>
                <FilesMatch "\.py$">
                    SetHandler mod_python
                </FilesMatch>
                PythonHandler mod_python.publisher
                PythonDebug On
            </Directory>
        </IfModule>

        # cgi enabled
    <Directory /var/www/clients/client1/web1/cgi-bin>
                        Order allow,deny
            Allow from all
                    </Directory>
        ScriptAlias  /cgi-bin/ /var/www/clients/client1/web1/cgi-bin/
        <FilesMatch "\.(cgi|pl)$">
            SetHandler cgi-script
        </FilesMatch>
        # suexec enabled
        <IfModule mod_suexec.c>
            SuexecUserGroup web1 client1
        </IfModule>
        # php as fast-cgi enabled
    # For config options see: http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
        <IfModule mod_fcgid.c>
                IdleTimeout 300
                ProcessLifeTime 3600
                # MaxProcessCount 1000
                DefaultMinClassProcessCount 0
                DefaultMaxClassProcessCount 100
                IPCConnectTimeout 3
                IPCCommTimeout 600
                BusyTimeout 3600
        </IfModule>
        <Directory /var/www/edv-jellissen.de/web>
                <FilesMatch "\.php[345]?$">
                    SetHandler fcgid-script
                </FilesMatch>
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php3
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php4
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php5
                Options +ExecCGI
                AllowOverride All
                                Order allow,deny
                Allow from all
                        </Directory>
        <Directory /var/www/clients/client1/web1/web>
                <FilesMatch "\.php[345]?$">
                    SetHandler fcgid-script
                </FilesMatch>
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php3
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php4
                FCGIWrapper /var/www/php-fcgi-scripts/web1/.php-fcgi-starter .php5
                Options +ExecCGI
                AllowOverride All
                                Order allow,deny
                Allow from all
                        </Directory>


        # add support for apache mpm_itk
        <IfModule mpm_itk_module>
            AssignUserId web1 client1
        </IfModule>

        <IfModule mod_dav_fs.c>
        # Do not execute PHP files in webdav directory
            <Directory /var/www/clients/client1/web1/webdav>
                <ifModule mod_security2.c>
                    SecRuleRemoveById 960015
                    SecRuleRemoveById 960032
                </ifModule>
                <FilesMatch "\.ph(p3?|tml)$">
                    SetHandler None
                </FilesMatch>
            </Directory>
            DavLockDB /var/www/clients/client1/web1/tmp/DavLock
            # DO NOT REMOVE THE COMMENTS!
            # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
      # WEBDAV BEGIN
            # WEBDAV END
        </IfModule>

DocumentRoot /var/www/edv-jellissen.de/web/joomla
</VirtualHost>
```
Ich habe gerade mal die Datei index.html zum testen in das Verzeichnis error verschoben.
Demnach sollte er ja im DocumentRoot Verzeichnis keine index Datei finden und eine Fehlermeldung ausgeben. Das tut er nicht. Zum anderen wird die Datei in dem Ordner error auch nicht gefunden und kann nicht aufgerufen werden :-( :-( :-(
Genau das gleiche habe ich auch unter einer anderen Domain getestet. Das gleiche Problem.


----------



## nowayback (18. Sep. 2015)

trägt er den 2. document root tatsächlich so ein ?

meines Wissens nach, darf der nur 1x vorkommen pro virtualhost ohne mod_vhost_alias


----------



## Till (18. Sep. 2015)

An sich ist es im Apache so dass nachfolgende Direktive die vorherigen überschreiben. Ich hab das auch schon mehrfach mit dem documentroot gemacht.


----------



## nowayback (18. Sep. 2015)

Zitat von Till:


> An sich ist es im Apache so dass nachfolgende Direktive die vorherigen überschreiben. Ich hab das auch schon mehrfach mit dem documentroot gemacht.


mir war/ist das neu, zumal hier doch eher der docroot ersetzt werden sollte anstatt ein 2. eingetragen oder? schließlich ist ja der erste auch schon ein platzhalter im template, sodass das kein problem sein sollte, oder?


----------



## Till (19. Sep. 2015)

Zitat von nowayback:


> mir war/ist das neu, zumal hier doch eher der docroot ersetzt werden sollte anstatt ein 2. eingetragen oder?


Ja. Das ersetzen macht apache aber selbst, zumindest bei mir. Wenn Du z.B. oben in der apache 2.conf den zugriff auf ein verzeichnis verbietest und im soäteren verlauf der config datei den zugriff wieder erlaubst kannst Du darauf zugreifen. Ist ja bei den meisten programmen so dass du in einer config datei eine weiter oben getroffene einstellung durch ein weiteres einfügen der selben einstellung überschreiben kannst, denn die meisten apps werden einstellungen in einem array / hash sammeln wenn sie ihre config datei lesen und dabei wird halt ein alter (oder standard) eintrag durch einen neuen der später definiert wurde überschrieben.



Zitat von nowayback:


> schließlich ist ja der erste auch schon ein platzhalter im template, sodass das kein problem sein sollte, oder?


Der Platzhalter enthält den pfad zum docroot damit Du ihn in Deiner config verwenden kannst, also {DOCROOT} = /var/www/domain.de/web/


----------



## edvjellissen (19. Sep. 2015)

Kann mir denn einer sagen was ich falsch mache?
Ich trage das 
	
	



```
DocumentRoot /var/www/edv-jellissen.de/web/joomla/
```
 unter dem Punkt, Apache Direktiven, ein. Bei mir überschreibt er eben nicht die erste Direktive.


----------



## robotto7831a (19. Sep. 2015)

Starte mal testweise deinen Apache neu.


----------



## edvjellissen (19. Sep. 2015)

und was soll da passieren? Hab ich schon etliche Male nach einer Änderung getan.


----------



## robotto7831a (19. Sep. 2015)

Wenn Du schon neu gestartet hast, dann bringt es nicht. Ich hatte überlegt, ob vielleicht der Restart nicht funktioniert haben könnte und darum die neue Konfiguration im Apache nicht gültig geworden ist.


----------



## edvjellissen (19. Sep. 2015)

nein. Der Restart funktionierte jedesmal einwandfrei. Ich habe allerdings auch bei der jetzigen Konfiguration mit dem doppelten Document Root Eintrag keine .err Datei.


----------



## robotto7831a (19. Sep. 2015)

Andere Idee. Könnte es vielleicht sein, dass ein anderer Vhost sich für zuständig fühlt und die Anfrage bearbeitet?

Ist dein Webseitenaufruf in der Logdatei von der "richtigen" Webseite?


----------



## edvjellissen (20. Sep. 2015)

Das ist nicht der Fall. Ich habe eben nochmal alles frisch nach der Anleitung aufgesetzt. Er fügt immer noch zwei DocumentRoot zur .vhost Datei hinzu und nimmt die erste Einstellung.


----------



## robotto7831a (20. Sep. 2015)

Ich habe es an zwei verschiedenen Servern ausprobiert und es läuft bei mir perfekt.


----------



## edvjellissen (20. Sep. 2015)

sorry, bei mir läuft es jetzt auch.  *freu


----------



## robotto7831a (20. Sep. 2015)

Und was hast du geändert?


----------



## Till (20. Sep. 2015)

So, jetzt habe ich es nochmal getestet:

1) neues verzeichnis im web angelegt mit namen "new"
2) darun habe ich eine index.php datei angelegt die mir eine bestimmte Ausgabe macht um zu erkenne  dass ich das richtige verzeichnis aufrufe, in meinem Fall:

<?php
echo "Hello New";
?>

3) Ordner new und dessen inhalt gehören dem Linux user und der Gruppe des webs!
4) In das apache Direktiven Feld habe ich eingefügt:

DocumentRoot {DOCROOT}/new

Dies führt zu einer 2. DocumentRoot Direktive im vhost:

DocumentRoot /var/www/test.int/web/new

Dann habe ich test int im Browser aufgerufen und die Ausgabe im Browser ist "Hello New". geht also alles so wie beschrieben.


----------



## Adegrue (25. Sep. 2015)

ihr habt mir wirklich sehr geholfen coque samsung galaxy s6 etui protection galaxy s6


----------

