Virtuelles Apache-Massenhosting & suexec & fcgid

Virtuelles Apache-Massenhosting & suexec & fcgid

ich folgteFalcos Tutorialund jetzt funktioniert alles wie erwartet für 2 Benutzer (z. B. John und Alice) mit ihren relevanten Verzeichnissen ( /var/www/johnund /var/ww/alice).

Nun möchte ich zum nächsten Level übergehen: Anstatt verschiedene virtuelle Hosts zu definieren /etc/apache2/sites-available/<username>und Apache neu zu starten, benötige ich dynamisch konfiguriertes virtuelles Massenhosting (http://httpd.apache.org/docs/2.2/vhosts/mass.html). Angenommen, mein DNS-Server hat Einträge für: another.site.example.com, dann soll sich sein Home-Verzeichnis unter befinden /var/www/another.site/web.

Das Problem sind all diese Konfigurationseinstellungen für suexec und mod_fcgid. Ich bin bei diesem Entwurf gelandet httpd.conf(oder sollte ich eine Datei wie diese erstellen /etc/apache2/sites-available/mass_virtual?):

NameVirtualHost *:80

#default virtual host
<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias example.com
  ServerAdmin [email protected]
  DocumentRoot /var/www/root/web/

  <IfModule mod_fcgid.c>
    SuexecUserGroup web-admin web-admin
    <Directory /var/www/root/web/>
      Options +ExecCGI
      Options -Indexes
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/root/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  # ErrorLog /var/log/apache2/error.log
  # CustomLog /var/log/apache2/access.log combined
  ServerSignature Off

</VirtualHost>

#3rd-level subdomain virtual hosts
<VirtualHost *:80>
  UseCanonicalName Off
  ServerAlias *.example.com
  #problematic email!
  ServerAdmin [email protected]
  #is this /var/www/another.site/web or /var/www/www.another.site/web for
  #a request for www.another.site.example.com ?
  VirtualDocumentRoot /var/www/%-3+/web

  <IfModule mod_fcgid.c>
    #problematic group and user!
    SuexecUserGroup web1 web1
    <Directory /var/www/*/web/>
      Options +ExecCGI
      Options -Indexes
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/*/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  # ErrorLog /var/log/apache2/error.log
  # CustomLog /var/log/apache2/access.log combined
  ServerSignature Off

</VirtualHost>
  1. Wie Sie den Kommentaren entnehmen können, habe ich ein problematisches , ein und eine Konfiguration!ServerAdmin [email protected]SuexecUserGroup web1 web1VirtualDocumentRoot /var/www/%-3+/web

  2. Darüber hinaus sollte es meiner Meinung nach aus Sicherheitsgründen IfModulenicht existieren - wenn mod_fcgidnicht geladen werden kann, sollte auch der Server nicht geladen werden und

  3. stattdessen Alow from allsollte ich meiner Meinung nach Deny from allein PHP-Bibliotheksverzeichnis öffnen!

  4. Wie gesagt, meine Absicht ist eine Anfrage, dass www.another.site.example.com an den Benutzer unter /var/www/another.site/web weitergeleitet wird, aber wie ich unter "Verwenden von suEXEC„Wir können suexec ohne die SuexecUserGroup-Direktive in VirtualHost-Definitionen aufrufen, aber mit Hilfe von mod_userdir! Was also, wenn eine Anforderung mit Hilfe von mod_rewrite www.another.site.example.comtransparent in umgewandelt wird und dann mod_userdir verwendet wird, um suexec zu aktivieren???www.example.com/~another.site

Irgendwelche Ideen oder Richtlinien zur Umsetzung all dieser Dinge?

Danke.

Antwort1

in der Praxis ist die dynamische Vhost-Funktion nicht optimal, da Sie nicht flexibel genug sind (.htaccess ist in einigen Fällen nicht ausreichend). Verwenden Sie ein Skript zum Generieren der Vhosts oder etwas wie Puppet zum Definieren der Vhosts (https://github.com/puppetlabs/puppetlabs-apache).

Übrigens: Für Ihr PHP-Setup würde ich PHP-FPM (OnDemand) mit (mod_proxy_fcgi oder mod_fastcgi) verwenden. Mit PHP-FPM benötigen Sie kein Suexec – jeder Benutzer erhält seinen eigenen Port oder Socket.

verwandte Informationen