จำได้ว่าเคยเขียนเรื่องนี้ไว้เมื่อนานมาแล้ว มีคนถามเรื่องนี้อีกครั้งก็เลยมาเขียน 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 เข้าช่วย มาติดตั้งสิ่งที่จำเป็นแบบเร็วๆ กันก่อน


Continue reading

Ghost เป็นระบบ Blog ใช้ Node.js ทำให้มีขนาดเล็กและคล่องตัวในการติดตั้งเพียงใช้ Node.js และ npm เท่านั้น หากต้องการติดตั้ง Ghost เพื่อทำเป็น Blog หลายๆ ตัวในเครื่องเซิร์ฟเวอร์เดียว เราจะต้องใช้บริการ reverse proxy จาก Nginx เข้ามาช่วยเพื่อ redirect traffic จากโดเมนไปยัง Ghost ที่ทำงานอยู่บน port ต่างๆ ที่เรากำหนด เช่น

  • www.fffee.org –> Ghost ทำงาน port 2768
  • andrew.fffee.org –> Ghost ทำงาน port 2769

มาลงมือติดตั้งกันเลย เริ่มจากเครื่องมือที่ต้องใช้กันก่อน

apt-get install unzip curl nginx nodejs npm


Continue reading

ช่วงนี้เป็นช่วงขายไอเดียสำหรับผู้ประกอบการธุรกิจ IT ที่ต้องการสร้างสินค้าและบริการจากซอฟต์แวร์โอเพนซอร์ส ซึ่งงาน MICT สร้างคนสร้างชาติก็กำลังใกล้เข้ามาแล้วครับ เอาล่ะก่อนจะเข้าเรื่องการทำมาหากิน มาดูเรื่องของ Drupal กันก่อน Drupal มีคุณสมบัติพิเศษอย่างหนึ่งที่ CMS อื่นๆ ไม่มีคือสามารถใช้ตัวมันเองสร้างเว็บไซต์ได้อีกหลายๆ เว็บ บางคนก็เรียก sub site, minisite ก็แล้วแต่จะเรียกครับ วิธีการนี้ไม่ใช้วิธีการคัดลอกโค้ดไปยังไดเรคทอรีอื่นแล้วติดตั้งนะครับ เอาละเดี๋ยวนึกภาพกันไม่ออก ขอยกตัวอย่างง่ายๆ ดีกว่าครับ เราจะใช้ Drupal ทำเว็บไซต์ให้กับวิทยาลัยแห่งหนึ่งโดยแต่ละคณะแต่ละสาขาวิชามีเว็บไซต์เป็นของตนเอง นั่นหมายความว่าคุณต้องติดตั้ง Drupal ตามจำนวนคณะและสาขาวิชา เช่น

/var/www/college  <= เว็บวิทยาลัย
/var/www/science  <= เว็บคณะวิทยาศาสตร์
/var/www/science_physic  <= เว็บคณะวิทยาศาสตร์ สาขาวิชาฟิสิกส์
/var/www/science_math  <= เว็บคณะวิทยาศาสตร์ สาขาวิชาคณิตศาสตร์
/var/www/nurse  <= เว็บคณะพยาบาล
/var/www/engieering  <= เว็บคณะวิศวกรรม
/var/www/engieering_comp  <= เว็บคณะวิทยาศาสตร์ สาขาวิชาคอมพิวเตอร์
/var/www/techno  <= เว็บคณะเทคโน
/var/www/techno_food  <= เว็บคณะเทคโนโลยี สาขาวิชาการอาหาร

ก็เล่นไปซะ 9 เว็บ 9 Drupal เข้าไปแล้ว หาก Drupal ของคุณมีเวอร์ชั่นไม่เท่ากันอีกก็กุมขมับเวลาอัพเกรดกันได้เลยครับ แต่หากคุณมีผู้ดูแลระบบที่สามารถดูแลเรื่องการจัดการ Drupal ในเรื่องต่างๆ ได้ เช่น อัพเกรด, อัพเดทโมดูล, อัพเดทธีม ฯลฯ จะใช้วิธี virtual host ก็ไม่ว่ากันครับ หากไม่มีละแย่เลย ต้องดูเว็บไซต์อย่างน้อยก็ 9 เว็บเข้าไปแล้ว วิธีนี้แก้ปัญหาจุกจิกนี้ แก้ได้โดยการใช้ multi site ครับ ซึ่ง เราจะติดตั้ง drupal ไว้ที่เดียวคือ /var/www/college จากนั้นทำ muti site จากจุดนี้ไป แล้วทำยังไง? Drupal ออกแบบเรื่อง multi site ไว้เรียบร้อยแล้ว เพียงสร้างไดเรคอรีเก็บ config และใส่ setting.phpให้แต่ละเว็บไซต์เท่านั้น ลองมาดูกันอีกรอบครับ

/var/www/college <= เราติดตั้ง Drupal ไว้ที่นี่สำหรับเว็บวิทยาลัย
/var/www/college/sites/default/setting.php <= ใส่ configของเว็บวิทยาลัย
/var/www/college/sites/science.mycollege.ac.th/setting.php <= ใส่ configของเว็บคณะวิทยาศาสตร์
/var/www/college/sites/physic.science.mycollege.ac.th/setting.php <= ใส่ config ของเว็บคณะวิทยาศาสตร์ สาขาวิชาฟิสิกส์

ไปเรื่อยๆ จนครบ สำหรับฐานข้อมูลเราสามารถสร้างฐานข้อมูลแยกออกตามคณะและสาขาวิชาได้ จะทำให้การบริการจัดการฐานข้อมูลได้ง่ายขึ้น คิดว่าน่าจะเข้าในในแนวคิดกันแล้วมาดู how-to แบบเต็มๆ ครับ ก่อนลงมือทำเรามาดูว่ามีอะไรกันบ้าง  เรามีโดเมนวิทยาลัยชื่อ mycolledge.ac.th, เรามีเว็บ 9 เว็บไซต์ที่ต้องติดตั้ง drupal แบบ multisite, ใช้ /var/www เป็นที่เก็บเว็บไซต์ เรา config DNS และ Apache Virtual Hostไว้แล้ว ใครยังงงๆ อ่านตอนเก่าๆ ได้ครับ เอาล่ะมาเริ่มกันเลย

แปลงร่างเป็น root ก่อนครับ

sudo -s

จากนั้นย้ายตัวเองไปที่ /var/www

cd /var/www

ดาวน์โหลด Drupal

wget http://ftp.drupal.org/files/projects/drupal-6.12.tar.gz

คลี่ไฟล์

tar zxvf drupal-6.12.tar.gz

เปลี่ยนชื่อไดเรคทอรีจาก  drupal-6.12 เป็น college เพื่อใช้เป็นเว็บหลัก อ้อ อย่าลืมแก้ไข document root ของ default virtual host นะครับ

mv  drupal-6.12  college

สร้างไดเรคทอรีสำหรับเก็บ config ของแต่ละเว็บไซต์

cd college/sites
mkdir science.mycolledge.ac.th
mkdir physic.science.mycolledge.ac.th
mkdir math.science.mycolledge.ac.th
mkdir nurse.mycolledge.ac.th
mkdir engineer.mycolledge.ac.th
mkdir comp.engineer.mycolledge.ac.th
mkdir techno.mycolledge.ac.th
mkdir food.techno.mycolledge.ac.th

สร้าง ฐานข้อมูล mysql ให้แต่ละเว็บครับ

mysql -u root -pmy-root-password -e “create database college”
mysql -u root -pmy-root-password -e “create database science”
mysql -u root -pmy-root-password -e “create database science_physic”
mysql -u root -pmy-root-password -e “create database science_math”
mysql -u root -pmy-root-password -e “create database nurse”
mysql -u root -pmy-root-password -e “create database engineer”
mysql -u root -pmy-root-password -e “create database engineer_comp”
mysql -u root -pmy-root-password -e “create database techno”
mysql -u root -pmy-root-password -e “create database techno_food”

จากนั้น browse เว็บไปที่ mycolledge.ac.th ติดตั้ง drupal สำหรับเว็บหลักให้เรียบร้อย แล้วจึงคัดลอก setting.php ไปยังไดเรคทอรีสำหรับเก็บ config ของแต่ละเว็บไซต์ ดังนี้

cp default/setting.php science.mycolledge.ac.th
cp default/setting.php physic.science.mycolledge.ac.th
cp default/setting.php math.science.mycolledge.ac.th
cp default/setting.php nurse.mycolledge.ac.th
cp default/setting.php engineer.mycolledge.ac.th
cp default/setting.php comp.engineer.mycolledge.ac.th
cp default/setting.php techno.mycolledge.ac.th
cp default/setting.php food.techno.mycolledge.ac.th

แก้ไขชื่อฐานข้อมูลใน setting.php ของแต่ละเว็บให้ถูกต้อง

$db_url = ‘mysqli://username:password@localhost/databasename’;

จากนั้นทะยอยติดตั้งทีละเว็บไซต์โดยเบราส์ไปที่ URL ดังนี้

http://science.mycolledge.ac.th/install.php
http://physic.science.mycolledge.ac.th/install.php
http://math.science.mycolledge.ac.th/install.php
http://nurse.mycolledge.ac.th/install.php
http://engineer.mycolledge.ac.th/install.php
http://comp.engineer.mycolledge.ac.th/install.php
http://techno.mycolledge.ac.th/install.php
http://food.techno.mycolledge.ac.th/install.php

เท่านี้ก็ได้ Drupal ในแบบฉบับ Multi Site แล้ว อ้อลืมไปนิดนึง หากคุณมี module หรือ theme ที่ต้องใช้ร่วมกัน ให้คุณคัดลอก module, หรือ theme ไปยัง sites/all/modules และ sites/all/themes ครับ เอาละ มาดูวิธีการประยุกต์ให้ได้ธุรกิจบริการกันบ้าง จากตัวอย่างข้างต้นคุณสามารถรับจ้างทำเว็บไซต์ได้ง่ายๆ แต่หากเป็นการประยุกต์ในธุรกิจบริการ คุณสามารถใช้ Drupal ติดตั้งแบบ Multi Site นี้ทำอะไรได้บ้าง ?

เว็บบล็อก
เว็บไซต์
เว็บอีคอมเมิร์ซ
เว็บฐานข้อมูลความรู้
ฯลฯ

บริการในรูปแบบธุรกิจบริการได้อย่างสบายๆ สำหรับโมเดลด้านธุรกิจไม่ขอพูดถึง เดี๋ยวโดนดุครับ