2012-03-28 17 views
1

Ich habe den grundlegenden LAMP-Server auf Ubuntu 11.10 eingerichtet und hatte ein paar Fragen zur Verzeichnisstruktur mit Webhosting. Meine "Anforderungen" sind, dass ich zwei Websites hosten möchte (dh: www.site1.com und www.site2.com) und dass ich auch das Zend-Framework verwenden möchte.Ubuntu LAMP mit Zend Verzeichnisstruktur für Webhosting

Derzeit ist der öffentliche Ordner/var/www /. Ist es üblich, irgendwo einen "Projects" -Ordner zu haben, der den gesamten Web-Anwendungscode enthält, der normalerweise aus den Zend-Projektordnern besteht (öffentlich, Tests, Bibliothek, usw.)?

Wo speichern Sie normalerweise den Zend Framework-Ordner? Ich dachte daran, nur in meinem ~/Verzeichnis zu speichern und einen Symlink aus dem Bibliotheksordner jedes Projekts in den Zend-Bibliotheksordner zu erstellen. Ist das empfohlen/verpönt?

Ich bin neu in diesem und nur Setup bekommen, aber hier ist das, was ich im Sinn hatte, so weit:

erstellen Projekte Ordner in Ihrem Home-Verzeichnis (~ /). Dort haben Sie Ihre verschiedenen Web-Apps (~/Projects/site1 und ~/Projects/site2). Erstellen Sie einen Symlink von/var/www/site1, der auf ~/Projects/site1/Public verweist, und dasselbe für site2. Richten Sie die Datei der virtuellen Hosts mit DocumentRoot ein, das auf/var/www/site1 und dasselbe für site2 festgelegt ist.

Kann jemand die möglichen Fallstricke beleuchten? Wäre das in Ordnung? Irgendwelche Empfehlungen? Ich weiß, dass es viele Versionen davon gibt, wie man Verzeichnisse hier auf SO einrichten sollte, aber ich konnte keine Antworten finden, die diese Dinge spezifisch ansprachen, also entschuldige ich mich, wenn das eine Wiederholung ist.

Jede Hilfe wird geschätzt.

Antwort

3

Ja, es gibt viele Möglichkeiten, es zu tun, halten nur ein paar Dinge zu beachten:

  • Der Benutzer, der die HTML/PHP-Dateien sollten nicht die gleiche sein wie der Benutzer besitzt, der die Bahn läuft Serverprozess.
  • Die ZF-Projektdateien sollten sich außerhalb des Dokumentstammverzeichnisses des Webservers befinden.
  • Wenn Sie jetzt ein Setup durchführen, das mehrere Entwickler unterstützt, müssen Sie später keine großen Änderungen vornehmen.

Ich mache normalerweise so etwas wie eine "Website" Benutzer mit einem regulären/home/Site-Verzeichnis. Dies hält die Site-Dateien von Ihren persönlichen Dateien getrennt und erleichtert die Unterstützung mehrerer Admins/Devs, die sich möglicherweise anmelden müssen. Sie können dies auch in/opt/site oder/usr/local/site oder wo auch immer einfügen. Ich mag/home, weil die Shell-Skelett-Dateien bereits da sind und ich einfach SSH-Schlüssel der Personen hinzufügen kann, auf die ich zugreifen möchte. Ich werde so etwas wie:

/home/site/ 
    library/ 
     fuel/ 
     geshi/ 
     sencha-touch-2.0.0-gpl/ 
     ZendFramework/ 
      ZendFramework-1.11.10/ 
      ZendFramework-1.11.11/ 
      latest -> ZendFramework-1.11.11 
    site/ 
     domain1.com/ 
      application/ 
      library/ 
       MyApp/ 
       Zend -> /home/site/library/ZendFramework/latest/library/Zend 
      public/ 
      scripts/ 
     domain2.com/ 
      application/ 
      library/ 
       MyApp/ 
       Zend -> /home/site/library/ZendFramework/latest/library/Zend 
      public/ 
      scripts/ 

Dann Ihre vHost Document-Root-Einstellungen zeigen würde /home/site/site/domain1.com/public und /home/site/site/domain2.com/public

1

Verzeichnisstrukturen sind nicht etwas, dass es eine richtige oder falsche Art und Weise ist eine Menge Leute zu tun, es zu tun auf unterschiedliche Weise, hier ist meine mit Ubuntu und einige CakePHP apps

/srv 
    /site1/ 
      /app 
      /webroot 
      /cache 
      /tmp 
    /site2/ 
      /app 
      /webroot 
      /cache 
      /tmp 
    /share/ 
      /CakePHP 
        /1.3/ 
        /2.0/ 

Die beiden Hauptteile der Konfiguration sind in Apache getan, ich legte die Document Root des vhost auf den genauen Speicherort der Webroot auf /srv/site1/webroot/, dann legte ich CakePHP in den Include-Pfad (Sie könnten das gleiche mit Zend) mit der php_value include_path ".:/share/cakephp/2.0/lib" in der vhost Konfig.

Ich mache dies, weil es mir erlaubt, CakePHP mit Maintenance Releases leicht auf alle Seiten zu aktualisieren (dh solche, die nichts kaputt machen sollten) und eine neue Version einen neuen Ordner (dh 2.1) garantiert und eine Site aktualisiert Um es zu verwenden, müssen Sie lediglich die Apache-Konfiguration (oder .htaccess) bearbeiten und den Server neu starten.

Dies hält mich auch davon ab, jede Art von Include-Pfad in meiner App (und damit Versionskontrolle) einzuschließen, so dass es so portabel wie möglich über verschiedene Dev/Staging-Setups ist.

Natürlich wie gesagt, es gibt keinen "richtigen" Weg.

+0

Ich habe eine allgemeine virtuelle Host-Frage: Ist diese Datei für die Umleitung zuständig? Haben Sie etwas in Ihrem Stammordner (/ var/www) oder leitet die virtuelle Host-Datei basierend auf dem Servernamen automatisch zum öffentlichen Ordner um? Danke –

+1

Schauen Sie in [vhosts einrichten] (http://www.thegeekstuff.com/2011/07/apache-virtual-host/), Sie können eine Domain auf Ihrem Server zu einem beliebigen DocumentRoot einrichten. Ich habe '/ var/www' nie berührt – Dunhamzzz

Verwandte Themen