2010-11-22 37 views
0

我在一盞燈(debian,apache,php,mysql)服務器上運行Drupal Multisite環境。Drupal:在項目結束後切換站點域的最佳做法

我的新項目當前的工作流程是:

  1. 激活對我公司網站的子域(假設該項目將是foo.com,我激活foo.example.com)
  2. 的Becose Plesk中(這是一個有點不友好的Drupal)我的步驟是:
    1. 創建的Plesk新的子域名,PHP在FastCGI的模式
    2. 運行創建數據庫
    3. 刪除的httpdocs文件夾中,r ecreate,並做出站點文件夾
    4. 做一個simbolic鏈接到每一個文件到文件夾/var/www/vhosts/drupal(Drupal的代碼庫)的網站和tmp目錄,的robots.txt的excapt和.htacces文件(即通常每個域定製)
    5. 文件夾foo.example.comsites,符號鏈接請對/var/www/vhosts/drupal/sites/all文件夾,然後再從sites/foo.com的符號鏈接/var/www/vhosts/drupal/sites/foo.example.com(爲了使drush 看到所有域的一些多點的任務,比如crontab中)
  3. 安裝,在子域中配置drupal,這樣做完成項目

此時需要的萬物,我需要從子域切換項目最終域,foo.com,將駐留啊,我太服務器。我想要最終的項目是一個'乾淨的'(clean在多站點環境中的含義)。我不喜歡很多其他類似的域名黑客攻擊,比如域名重定向。

其實我做的那些步驟:

  1. 創建域(通過Plesk)和數據庫;
  2. 複製子域名的httpdocs到全域的httpdocs(cp -a /var/www/vhosts/example.com/subdomains/foo/httpdocs /var/www/vhosts/foo.com/httpdocs
  3. 更改所有者和httpdocs資料組到域的所有者和組
  4. 登錄比賽拖入Drupal的,改變網站的信息和文件系統路徑。

這讓我做我想做的事,但我有一些節點的html內容的麻煩;特別是那些包含鏈接,圖像和文件的(即使IMCE被配置爲使用相對路徑),將指向/sites/foo.example.com/files/[...]而不是/sites/foo.com/files/[...] ..這也發生在cck文件字段中。

正如我所說的,我需要一個乾淨的解決方案,我知道我可以做從/sites/foo.example.com符號鏈接/sites/foo.com但我真的不喜歡這種方式。

到目前爲止,我tryed搜索/替換所有occourrence到數據庫的SQL轉儲:

sed 's/foo.example.com/foo.com/g' dump.sql > foo.com.sql 

但這似乎剎車出頭;我在boostrap文件中遇到很多錯誤(在緩存unserialize步驟中,即使我在數據庫導出/導入之前和之後清除了所有緩存),看起來像utf-8編碼會被破壞。

我知道最好的交易將是在本地服務器上設置開發區域,但我需要我的客戶從外部訪問它..並且我們的adsl情況(靜態IP等)有點有線。

有什麼想法?

PS:對不起,我的英語不好,如果我的問題是不明確的足夠多的讓我知道,我會提供更多的細節)

回答

0

你的步驟基本上是我做的,但我不使用的Plesk或做多站點安裝。我只是在VPS實例中創建一個新的虛擬主機,然後cp - 一個文檔根目錄,然後重新配置一個新的數據庫DSN。

關於SQL問題,我通常編輯一個UTF-8乾淨編輯器中的SQL轉儲來防止這個問題。在Windows上,我使用Notepad ++。

然後我恢復數據庫,清理所有緩存,編輯設置並運行cron。我通常也會重建搜索索引。

該順序通常有效。

引導問題可能與變量表有關。當你序列化一個字符串(或者一個字符串)時,長度也會被存儲。我將執行搜索和替換,然後打開MySQL查詢瀏覽器,並搜索帶有域名的變量表中的行,然後手動修復長度。另一個選項是確定正在存儲哪個選項,然後重新創建設置。

+0

關於使用編輯器打開sql轉儲:我的轉儲可能約爲〜20Mb,對我來說使用編輯器很困難,因爲它可能很輕巧。 – Strae 2010-11-22 22:24:20