3

我們正在開發將作爲託管解決方案提供的應用程序。我非常理解如何使用具有相同代碼的多個站點而無需複製基本代碼。運行在相同代碼庫上的多個網站?

例如: 網站1:www.example.com和網站2:www.sample.com將運行相同的代碼,但會有不同的配置設置和不同的主題......就像我們運行我們自己的域名在wordpress中。

我想知道我該怎麼做。

也在數據庫的情況下..會更好,我創建每個網站的個人數據庫或使用相同的數據庫與網站ID作爲列在每個表中。

請幫幫我。

[澄清] 它沒有域別名。像...這將是一項服務。其中不同的客戶將以不同的主題在他們自己的域名上提供相同的應用。像什麼Blogger不會。與自己的域名,但同樣的博客應用

[技術] 特別期待在如何使用主機名來確定要使用的配置中,我們使用的是PHP 和MySQL

+0

這不是一個壞問題,但如果您在發佈之前花時間對其進行校對,那本來就不錯。 – 2009-11-15 08:51:42

+0

我確實檢查了以前的問題,發現了這一點。 http://stackoverflow.com/questions/1530286/single-codebase-multiple-websites但無法理解。 – Masade 2009-11-15 08:53:04

+0

正在等待回覆 – Masade 2009-11-15 10:49:42

回答

2

重複使用代碼是絕對需要的。從你的帖子很難想象這些網站會有什麼不同。我們是否在談論徽標,配色方案或不同的功能?

我會以不同的外觀&的感覺開始。我還會假設這是服務器上唯一的應用程序。

我建議仔細規劃你的目錄結構。例如:

www-root/ 
/lib 
/themes 
     /domain1 
     /domain2 


index.php: 

<?php 
$host = $_SERVER['HTTP_HOST']; 
$include_theme = "themes/" . $host . "/configuration.php"; 
//make sure the file exists 
require_once($include_theme); 

這是一個簡單的方法,但有關事情。

+0

這正是我所期待的。只有主題和配置會改變。我將使用數據庫中的配置數據。 – Masade 2009-11-25 14:20:25

+0

謝謝。很高興幫助。如果您有進一步的問題,請在此發佈其他評論。 – 2009-12-01 22:50:34

1

實際上它非常簡單。

您的代碼庫可以並且應該是單一的。您將其上傳到hosting1和hosting2。當您更新代碼時,請立即將其上傳到兩個主機空間。

我想這也是這個網站的工作原理。看看頁面的頁腳。你有那裏的stackoverflow,元,超級用戶和serverfault。如果你看看現在右下角的評論是什麼,那將是「svn revision:5404」。一樣的東西。一個代碼庫發佈到四個站點。當然數據庫是不同的,包含完全不同的內容。

所以可變部分是:

  1. 配置

  2. 設置

  3. 數據

你需要複製那些。

您需要以這種方式對其進行編碼,即配置和設置不是硬編碼的,而是存儲在某個數據庫表中,或者至少存儲在某些外部配置文件中。這些不構成代碼的一部分(或者如果你願意,可以實現),所以它們不需要在代碼中。如果你有他們,把他們拿出來。

+0

我需要使用單個託管來完成。我將主辦大約1000個網站。所以它是不切實際的,我更新所有的託管帳戶 – Masade 2009-11-15 08:56:35

+0

請解釋有多個網站背後的想法是什麼?它只是域名或一個家庭的幾個網站? – 2009-11-15 08:57:27

+0

它沒有域別名。 像...這將是一項服務。其中不同的客戶將以不同的主題在他們自己的域名上提供相同的應用。 類似於博客用自己的域名,但同一個博客應用程序。 – Masade 2009-11-15 09:01:38

1

我想你可能有兩個不同的域指向同一個服務器,並根據主機名設置不同的配置。我不會推薦這個。您可能會遇到穩定性和性能方面的問題,特別是如果您擁有龐大的用戶羣或指向代碼庫的大量域名時。

通常,如果您運行的是多個站點,則每個站點應該有不同的服務器。

編輯:

閱讀對方的回答後評論,我理解你的使用情況好一點。

如果您有大量站點需要使用此設置,如果您正確設計架構,並實施某種類型的負載平衡方案以處理大量用戶負載,則可以使其工作。

要回顧一下:

  • 得到多個服務器,並在它們之間平衡負載。
  • 設計應用程序來處理大量的用戶負載。
  • 使用主機名來確定使用哪個配置。
+0

這會增加我的服務器成本..他們通常如何做呢?博主是我想到的一個例子嗎?他們通常如何做到這一點? – Masade 2009-11-15 09:12:16

+0

看到我的編輯。你用什麼語言來開發這個應用程序?如果我們知道您正在使用什麼來開發應用程序,我們可能能夠幫助您實施。 – 2009-11-15 09:15:18

+0

是的,我們正在計劃這樣做..負載平衡等...... 我無法獲得關於如何做第三部分的代碼 「使用主機名來確定使用哪個配置」 – Masade 2009-11-15 09:17:39

0

我們現在用大約15,000個獨特的域來做到這一點。這並不困難,但確實需要一些設計考慮才能正確實施。

您可以關閉一個代碼庫&服務器,並且基本上只是構建您的代碼,以完全依賴傳入請求的HTTP_HOST值。然後,您的數據庫中的所有內容都將作爲正確分隔數據並用相應的數據/ html回答請求的方式。

0

出於安全原因,你可能會考慮:

A)設置單獨的open_basedir限制每個主機,以便用戶上傳的文件不能被其他網站進行訪問,例如: /SHARED_LIBRARY /主機1/user_images /host2/user_images

您可以在允許的路徑中包含共享和特定於域的目錄。

B)連接到每個主機的不同數據庫,以防止數據庫查詢中的任何錯誤意外地抓取另一個網站的數據,並允許更輕鬆地擴展數據庫服務器(例如將繁忙域移動到不同的數據庫服務器上)

如果你有一個非常簡單的應用程序,你可能會逃脫一個數據庫。

在任何情況下,您都應該制定推出策略,以便在進行更改時不會破壞任何網站。

相關問題