Main menu

Multi-site trong Drupal

Submitted by mrsinguyen on Thu, 01/04/2010 - 11:32

Mô hình multi-site trong Drupal

Cơ sở dữ liệu

  • db_website1: sử dụng cho website1.com
  • db_websiten: sử dụng cho websiten.com
  • db_share: cơ sở dữ liệu dùng chung

Kết nối cơ sở dữ liệu

Trong file settings.php của website1.com

<?php
$db_url
= 'mysql://username:<a href="mailto:password@localhost">password@localhost</a>/db_website1';
$db_prefix = array(
 
'default'     => 'w1_',
 
'users'       => 'db_share.',
 
'users_roles' => 'db_share.',
 
'sessions'    => 'db_share.',
 
'role'        => 'db_share.',
 
'authmap'     => 'db_share.',
);
?>

Trong file settings.php của websiten.com

<?php
$db_url
= 'mysql://username:<a href="mailto:password@localhost">password@localhost</a>/db_websiten';
$db_prefix = array(
 
'default'     => 'wn_',
 
'users'       => 'db_share.',
 
'users_roles' => 'db_share.',
 
'sessions'    => 'db_share.',
 
'role'        => 'db_share.',
 
'authmap'     => 'db_share.',
);
?>

Độ ưu tiên trong multi-site

Ví dụ với một site có đường dẫn như sau: http://www.drupal.org/mysite/test/ thì độ ưu tiên trong thư mục sites sẽ là:

1. sites/www.drupal.org.mysite.test
2
. sites/drupal.org.mysite.test
3. sites/org.mysite.test

4. sites/www.drupal.org.mysite
5
. sites/drupal.org.mysite
6. sites/org.mysite

7. sites/www.drupal.org
8
. sites/drupal.org
9. sites/org

10. sites/default

Độ ưu tiên được sắp xếp từ 1 -> 10, nghĩa là khi truy cập vào đường dẫn http://www.drupal.org/mysite/test/ thì hệ thống Drupal sẽ tìm file thông tin cấu hình của site đó theo ưu tiên từ 1 là thư mục sites/www.drupal.org.mysite.test nếu không có thì bỏ qua và tiếp tới các thư mục ưu tiên khác. Nếu có dừng lại đọc thông tin cấu hình trong thư mục đó.

Next post

Cơ chế Hook của Drupal

Read More »

12 comments

trunghaiy's picture

by trunghaiy on Fri, 02/04/2010 - 09:49

Đọc được new theme qua twitter của anh vào xem lại gặp được bài tut multisite của anh ^^.
Anh cho em hỏi thêm là một website bình thường mình chỉ cần config được subdomain là thực hiện multisite với drupal phải không anh?

Bao's picture

by Bao on Fri, 02/04/2010 - 10:29

Thử dùng multi-site với sites + context + purl chưa, cái đó cũng hay lắm, dù là đang phát triển.

mrsinguyen's picture

by mrsinguyen on Fri, 02/04/2010 - 10:43

@trunghaily:
- Cái subdomain trỏ về IP chứa hosting.
- Còn trong thư mục site thì đặt tên của site theo thứ tự ưu tiên:

1. sites/www.drupal.org.mysite.test
2
. sites/drupal.org.mysite.test
3. sites/org.mysite.test

4. sites/www.drupal.org.mysite
5
. sites/drupal.org.mysite
6. sites/org.mysite

7. sites/www.drupal.org
8
. sites/drupal.org
9. sites/org

10. sites/default

@Bao:
Để dùng thử xem sao

mrsinguyen's picture

by mrsinguyen on Fri, 02/04/2010 - 10:46

PS: Hiên tại hai website www.sanglt.comwww.nguyentiensi.com đang chạy multi-site

Nick CHAT yahoo của em là hotro_hbco

Anh nào làm được điều này rồi add nick của em vào cho em học hỏi với ạ

Nếu được thì liên hệ hòm thư dangky@bonghongvang.vn cho em thông tin em sẽ gọi hoặc email liên hệ lại. Em đang làm cái này mã làm mãi chưa được. Hiện em quản lý 20 site khác nhau nên cần cái này lắm.

áo cưới's picture

by áo cưới on Sat, 19/02/2011 - 11:17

Sắp tới cũng phải làm một dự án multi-site cảm ơn những chia sẽ thật bổ ích. :)

kiyo's picture

by kiyo on Fri, 09/09/2011 - 10:41

Em chưa rõ câu anh nói là: tùy vào mục đích cài multisite mà có thể dùng chung database hoặc không?
Nếu mình dùng chung thì cách cài đặt data thế nào, và dùng riêng thì làm thế nào anh? Do thấy anh ghi phần CSDL là:

* db_website1: sử dụng cho website1.com
* db_websiten: sử dụng cho websiten.com
* db_share: cơ sở dữ liệu dùng chung

Mong sớm nhận được hồi âm của anh.
Em cảm ơn nhiều @@

mrsinguyen's picture

by mrsinguyen on Wed, 28/09/2011 - 17:01

Ở trên có 3 Database:

  • db_website1 - chưa các bảng của site 1
  • db_websiten - chứa các bản của site n
  • db_share - chứa các bảng dùng chung

Nếu bạn muốn dùng chung csdl cho user thì nên khai báo để trỏ tới bảng đó trong db_share, tương tự cho các bảng khác ví dụ: sessions,...

kiyo's picture

by kiyo on Fri, 30/09/2011 - 09:26

Thank a em làm được rồi

Hoàng Hiếu's picture

by Hoàng Hiếu on Fri, 11/11/2011 - 22:52

Anh Nguyentiensi cho em hỏi chút, em thấy anh hướng dẫn tạo 2 files settings.php của 2 trang con là website1.com và websiten.com
Em thấy anh có 2 đoạn code cho 2 files đấy, tức là mình sẽ xóa hết code trong file settings.php của 2 trang này và copy nguyên đoạn code anh post vào đúng không ạ?

Còn phần:
$db_prefix = array(
'default' => 'wn_',
'users' => 'db_share.',
'users_roles' => 'db_share.',
'sessions' => 'db_share.',
'role' => 'db_share.',
'authmap' => 'db_share.',
thì theo em hiểu là lấy thông tin từ database share, nhưng em lại không biết rõ là thông tin đấy nó nằm ở bảng nào, (không biết anh có hiểu ý em không ạ :D), ví dụ như trong joomla em thấy những thông tin này sẽ ở trong file configuration.php ấy ạ.
Em đang học drupal, chưa có nhiều kinh nghiệm, nên có thể anh thấy câu hỏi của em hơi ngây ngô, nhưng thực sự em đang rất mong chờ câu trả lời, góp ý của anh.
Em cám ơn anh rất nhiều!

mrsinguyen's picture

by mrsinguyen on Tue, 17/01/2012 - 10:04

Không phải xoá hết file settings.php bạn ạ, trong file settings.php có chổ Database có phần khai báo Db mặc định bạn chỉ thay đổi chổ đó thôi.

Khoa Huynh's picture

by Khoa Huynh on Wed, 23/11/2011 - 11:00

Hello All
Mình đang muốn làm quen và hợp tác với các bạn phát Web Developer trên nền Drupal , liên hệ mình mail vnconsultant@gmail.com nhé.

Post new comment