จำได้ว่าเคยเขียนเรื่องนี้ไว้เมื่อนานมาแล้ว มีคนถามเรื่องนี้อีกครั้งก็เลยมาเขียน How-To ไว้สักหน่อย ปัญหาเดิมจากครั้งที่แล้ว เราต้องการเว็บไซต์หลายๆ เว็บโดยใช้ Drupal ตัวเดียว ซึ่ง Drupal เองก็รองรับการทำ Multi Site อยู่แล้ว ยกตัวอย่าง ต้องการสร้างเว็บโดยใช้ Drupal Multi Site
- www.fffee.org
- site1.fffee.org
- site2.fffee.org
วิธีการง่ายๆ ให้คุณตั้งค่า domain www.fffee.org, site1.fffee.org และ site2.fffee.org ชี้ไปยังเครื่องเดียวกัน เพราะเราจะใช้ค่า ServerAlias สำหรับ virtualhost เข้าช่วย มาติดตั้งสิ่งที่จำเป็นแบบเร็วๆ กันก่อน
apt-get install phpmyadmin mysql-server
จากนั้นเข้าไปแก้ไข /etc/apache2/sites-available/000-default.conf เพิ่ม ServerAlias เข้าไปดังนี้
ServerAlias www.fffee.org site1.fffee.org site2.fffee.org
นั่นหมายความว่า default virtualhost จะเข้าได้จาก www.fffee.org, site1.fffee.org และ site2.fffee.org จากนั้นดาวน์โหลด Drupal แล้วแตกไฟล์ไปยัง /var/www/html ดังนี้่
rm -rf /var/www/html/index.html
cd /tmp
wget http://ftp.drupal.org/files/projects/drupal-7.38.tar.gz
tar zxvf drupal-7.38.tar.gz
rsync -av drupal-7.38/ /var/www/html
ถ้าใช้ PHP 5.5.9 จะมี opcache ติดมาด้วย แก้ไขไม่ให้ใช้ opcach เพราะเดี๋ยวจะติดตั้ง Drupal ไม่ได้
nano /etc/php5/apache2/php.ini
แก้ไขตรง [opcache] เอา comment ออกแบบนี้
[opcache] ; Determines if Zend OPCache is enabled opcache.enable=0
จากนั้นสั่ง restart apache 1 รอบ
service apache2 restart
สร้าง Database แยกออกมาเพื่อเก็บข้อมูลแต่ละ site แยกกันดังนี้
mysql -u root -p -e 'create database main'
mysql -u root -p -e 'create database site1'
mysql -u root -p -e 'create database site2'
จากนั้นสั่งติดตั้ง Drupal ที่ site หลักก่อนเปิด browser ไปที่ http://www.fffee.org/install.php ติดตั้งจนเสร็จ จากนั้น copy config ไปยัง site อื่นๆ ดังนี้
cd /var/www/html/sites
cp -rf default site1.fffee.org
cp -rf default site2.fffee.org
แก้ไขไฟล์ settings.php ในทุกๆ site ในส่วนติดต่อกับ Database และกำหนด $base_url ให้ถูกต้อง
จากนั้นเปิด browser ไปยัง http://site1.fffee.org/install.php และ http://site2.fffee.org/install.php เพื่อติดตั้งจนเสร็จ เท่านี้ก็จะได้ Drupal Multi Site แล้ว