2012-03-28 45 views
1

我已經在Ubuntu 11.10上設置了基本的LAMP服務器,並且有關於虛擬主機的目錄結構的一些問題。我的「要求」是我想主辦兩個網站(即:www.site1.com和www.site2.com),並且我想使用Zend框架。用於虛擬主機的Zend目錄結構的Ubuntu LAMP

目前,公共文件夾是/ var/www /。 「Projects」文件夾通常包含所有通常由Zend項目文件夾(公共,測試,庫等)組成的Web應用程序代碼?

你通常在哪裏存儲Zend框架文件夾?我正在考慮將它存儲在我的〜/目錄中,並將每個項目的庫文件夾創建一個符號鏈接到Zend庫文件夾。這是推薦/皺眉?

我是新來的這個剛開設置,但這裏是我腦子裏至今:

在你的home目錄(〜/)創建一個項目文件夾。在那裏,有不同的網絡應用程序(〜/ Projects/site1和〜/ Projects/site2)。從/ var/www/site1創建一個指向〜/ Projects/site1/Public的符號鏈接,對於site2也是一樣的。將DocumentRoot設置爲/ var/www/site1,併爲site2設置相同的虛擬主機文件。

任何人都可以闡明這個可能的陷阱嗎?這樣做可以嗎?任何建議?我知道有很多版本應該如何在SO上設置目錄,但找不到任何具體解決這些問題的答案,所以如果這是重複的話,我很抱歉。

任何幫助表示讚賞。

回答

3

是的,有很多方法可以做到這一點,只需記住幾件事情:

  • 擁有的HTML/PHP文件,用戶不應該是相同的運行Web用戶服務器進程。
  • ZF項目文件應該位於Web服務器的文檔根目錄之外。
  • 如果您現在進行設置有利於擁有多個開發人員,那麼您將不必在稍後進行重大更改。

我通常會做一些類似於使用常規/ home/site目錄的「site」用戶。這使得站點文件與您的個人文件分開,並且更容易支持可能需要登錄的多個管理員/開發人員。你也可以把它放在/ opt/site或/ usr/local/site或任何地方。我喜歡/ home,因爲shell骨架文件已經存在,我可以輕鬆地添加我想訪問的人的SSH密鑰。我會碰到這樣的:

/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/ 

然後,你的虛擬主機文檔根目錄的設置將指向/home/site/site/domain1.com/public和/home/site/site/domain2.com/public

1

目錄結構是不是有一個正確或錯誤的方法做,很多人做到這一點的方式不同,這裏是我與Ubuntu和一些應用程式的CakePHP

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

兩個主要部分的配置是在apache中完成的,我將vhost的文檔根目錄設置爲web根目錄的確切位置爲/srv/site1/webroot/,然後通過在vhost中使用php_value include_path ".:/share/cakephp/2.0/lib"將CakePHP放入包含路徑中(您可以對Zend執行相同的操作)配置。

我這樣做是因爲它允許我輕鬆地將CakePHP升級到所有站點(即不應該破壞任何內容的站點),並且新版本將保證新文件夾(即2.1)和升級站點使用它只是編輯apache配置(或.htaccess)並重新啓動服務器的情況。

這也使我不必在我的應用程序中包含任何類型的包含路徑(因此也包含版本控制),因此它在不同的開發/分期設置中儘可能便攜。

當然,正如我所說,沒有一個「正確」的方式。

+0

我有一個一般的虛擬主機問題:該文件是否照顧重定向?你的根文件夾(/ var/www)中是否有任何內容,或者虛擬主機文件是否根據服務器名稱自動重定向到公用文件夾?謝謝 – 2012-03-28 15:29:38

+1

研究[設置虛擬主機](http://www.thegeekstuff.com/2011/07/apache-virtual-host/),您可以在您的服務器上將域設置爲您喜歡的任何DocumentRoot。我從來沒有碰過'/ var/www' – Dunhamzzz 2012-03-28 15:35:50