ปรับปรุง moodle จาก 1.54 มาเป็น 1.9

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 12-05-2552

ดูแลโดย WIPAT


ล้าสมัย ยกเลิกการใช้งาน

  • หาก upgrade moodle จากรุ่นเก่าเช่น 1.5.x ไม่ถูกต้อง จะเจอปัญหาภาษาไทยของเก่าที่เป็นแบบ 8 bit ใช้กับรุ่นใหม่ตั้งแต่ 1.6 ซึ่งเป็นแบบ uft8
  • เป็นข้อมูลเก่าที่เก็บไว้ ซึ่งอาจเป็นประโยชน์ต่อคนอื่นๆ
  • เป็นเพียงตัวอย่างเท่านั้น ให้ปรับปรุงเปลี่ยนแปลงตามสภาพการทำงานจริง
  • สมมติว่า server มีเลข ip เป็น 10.0.0.124
  • ทดสอบกับ ubuntu 8.04


  1. ลอง upgrade ไล่ตั้งแต่ moodle เวอร์ชั่น 1.5.4

    สร้าง database ชื่อ moodle154 และ grant สิทธิ์ให้แก่ผู้ใช้ mysql ชื่อ moodleuser รหัสผ่านว่า yourpassword
    ใช้คำสั่ง mysql -u root -p แล้วต่อด้วยคำสั่ง
    mysql> CREATE DATABASE moodle154 CHARACTER SET lantin1;
    mysql> GRANT ALL ON moodle154.* TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
    mysql> quit

    สร้าง directory ใหม่ชื่อ /var/www/html/test154 รอไว้ก่อนด้วยคำสั่ง sudo mkdir -p /var/www/html/test154
    ดาวน์โหลดโปรแกรม moodle จาก ftp://ftp.psu.ac.th/pub/moodle/moodle-1.5.4.tgz
    แตกแฟ้มออกมาเก็บไว้ด้วยคำสั่ง sudo tar -zxvf moodle-1.5.4.tgz -C /var/www/html/test154
    สร้าง directory ใหมชื่อ /var/www/html/test154/moodledata ด้วยคำสั่ง sudo mkdir -p /var/www/html/test154/moodledata
    เปลี่ยนสิทธิ์เจ้าของให้เป็น apache ด้วยคำสั่ง sudo chown -Rv www-data /var/www/html/test154/*
    สร้างแฟ้ม config ของ moodle ด้วยคำสั่ง sudo cp /var/www/html/test154/moodle/config-dist.php /var/www/html/test154/moodle/config.php

    แก้ไขแฟ้ม /var/www/html/test154/moodle/config.php ให้มีค่าดังนี้
    $CFG->dbhost = 'localhost';
    $CFG->dbname = 'moodle154';
    $CFG->dbuser = 'moodleuser';
    $CFG->dbpass = 'yourpassword';
    $CFG->wwwroot = 'http://10.0.0.124/test154/moodle';
    $CFG->dirroot = '/var/www/html/test154/moodle';
    $CFG->dataroot = '/var/www/html/test154/moodledata';

    ทดสอบผลงานได้ที่ http://10.0.0.124/test154/moodle ตอนเข้าเวบครั้งแรก ต้องปรับแต่งระบบโต้ตอบข้อความที่มาทางหน้าจอ

    การถ่ายโอน moodle จากเวบไซต์เดิม ทำดังนี้
    ให้ backup พื้นที่ moodle และ moodledata ของเดิมมาทั้งหมด แล้วนำไปใส่ไว้ในเวบใหม่ที่เดียวกันกับของเดิมคือ moodle และ moodledata
    ให้ backup database ของเดิมด้วยคำสั่งประมาณว่า
    mysqldump -u root -p --default-character-set=latin1 --skip-set-charset my-old-moodle | sed "s/DEFAULT CHARSET=latin1//" > mybackup.sql
    แล้วนำไปใส่ restore คืนไว้ในเวบใหม่ด้วยคำสั่งประมาณว่า
    mysql -u root -p --default-character-set=latin1 moodle154 < mybackup.sql
    แค่นี้ก็เสร็จแล้ว หน้าตาเหมือนเก่าเด๊ะเล

  2. ต่อไปต้อง upgrade จาก moodle 1.54 ให้เป็น moodle 1.6.6  ซะก่อน
    (ปัจจุบันมีแต่ moodle 1.6.9 ก็ให้เปลี่ยนข้อความในบันทึกนี้ประมาณว่าจากเลข 6 เป็นเลข 9 เช่น 1.6.6 เป็น 1.6.9 )

    สร้าง database ชื่อ moodle166 และ grant สิทธิ์ให้แก่ผู้ใช้ mysql ชื่อ moodleuser รหัสผ่านว่า yourpassword
    ใช้คำสั่ง mysql -u root -p แล้วต่อด้วยคำสั่ง
    mysql> CREATE DATABASE moodle166 CHARACTER SET utf8 ;
    mysql> GRANT ALL ON moodle166.* TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
    mysql> quit

    สร้าง directory ใหม่ชื่อ /var/www/html/test166 รอไว้ด้วยคำสั่ง sudo mkdir -p /var/www/html/test166
    ดาวน์โหลดโปรแกรม moodle จาก ftp://ftp.psu.ac.th/pub/moodle/moodle-1.6.6.tgz
    แตกแฟ้มออกมาเก็บไว้ด้วยคำสั่ง sudo tar -zxvf moodle-1.6.6.tgz -C /var/www/html/test166
    สร้าง directory ใหมชื่อ /var/www/html/test166/moodledata ด้วยคำสั่ง sudo mkdir -p /var/www/html/test166/moodledata
    เปลี่ยนสิทธิ์เจ้าของให้เป็น apache ด้วยคำสั่ง sudo chown -Rv www-data /var/www/html/test166/*
    สร้างแฟ้ม config ของ moodle ด้วยคำสั่ง sudo cp /var/www/html/test166/moodle/config-dist.php /var/www/html/test166/moodle/config.php

    แก้ไขแฟ้ม /var/www/html/test166/moodle/config.php ให้มีค่าดังนี้
    $CFG->dbhost = 'localhost';
    $CFG->dbname = 'moodle166';
    $CFG->dbuser = 'moodleuser';
    $CFG->dbpass = 'yourpassword';
    $CFG->wwwroot = 'http://10.0.0.124/test166/moodle';
    $CFG->dirroot = '/var/www/html/test166/moodle';
    $CFG->dataroot = '/var/www/html/test166/moodledata';

    การ upgrade moodle จากเดิมรุ่น 1.5.4 เป็นรุ่น 1.6.6 ทำดังนี้
    ให้คัดลอกข้อมูลทั้งหมดในพื้นที่ moodledata จากรุ่น 1.5.4 มาไว้ที่ moodledata ของรุ่น 1.6.6
    ให้ backup database ของเดิมรุ่น 1.5.4 ด้วยคำสั่งประมาณว่า
    mysqldump -u root -p --default-character-set=latin1 --skip-set-charset moodle154 | sed "s/DEFAULT CHARSET=latin1//" > mybackup154.sql
    แล้วนำไปใส่ restore คืนพร้อม upgrade เป็น utf8 ไว้ในรุ่น 1.6.6 ด้วยคำสั่งประมาณว่า
    mysql -u root -p --default-character-set=tis620 moodle154 < mybackup154.sql

    ทดสอบผลงานได้ที่ http://10.0.0.124/test166/moodle
    ตอนเข้าเวบครั้งแรกอาจเจอ error เยอะแยะ ไม่ต้องตกใจปล่อยไปก่อน สาเหตุเพราะ database ยังเป็นของเก่ารุ่น 1.5.4 พอ upgrade เสร็จจะหายเอง
    ตอนนี้ให้ login เข้าด้วย admin รหัสผ่านอันเดิมไปก่อน ระบบจะถามให้ยืนยัน upgrade แล้วรอโต้ตอบระบบไปเรื่อยๆจนเสร็จ

    ต่อไปก็เติมภาษาไทยเข้าไปในระบบ สร้าง directory สำหรับภาษาไทยชื่อ /var/www/html/test166/moodledata/lang
    ด้วยคำสั่ง mkdir -p /var/www/html/test166/moodledata/lang
    ดาวน์โหลดภาษาไทยสำหรับ moodle จาก ftp://ftp.psu.ac.th/pub/moodle/th_utf8.zip
    แตกแฟ้มออกมาเก็บไว้ด้วยคำสั่ง sudo unzip th_utf8.zip -d /var/www/html/test166/moodledata/lang
    เปลี่ยนสิทธิ์เจ้าของให้เป็น apache ด้วยคำสั่ง sudo chown -Rv www-data /var/www/html/test166/*

    ผลทดสอบการแสดงผลภาษาไทยมี bug บางส่วน เช่นที่บาง block แต่พอ upgrade เป็น moodle 1.9 ก็กลับคือสู่ปรกติ

  3. ต่อไปก็ upgrade จาก moodle 1.6.6  เป็น moodle 1.9
    (ปัจจุบันเป็น moodle 1.9.4 แล้ว ก็ให้เปลี่ยนข้อความในบันทึกนี้ประมาณว่าเช่น 1.9 เป็น 1.9.4 )

    สร้าง database ชื่อ moodle19 และ grant สิทธิ์ให้แก่ผู้ใช้ mysql ชื่อ moodleuser รหัสผ่านว่า yourpassword
    ใช้คำสั่ง mysql -u root -p แล้วต่อด้วยคำสั่ง
    mysql> CREATE DATABASE moodle19 CHARACTER SET utf8 ;
    mysql> GRANT ALL ON moodle19.* TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
    mysql> quit

    สร้าง directory ใหม่ชื่อ /var/www/html/test19 รอไว้ด้วยคำสั่ง mkdir -p /var/www/html/test19
    ดาวน์โหลดโปรแกรม moodle จาก ftp://ftp.psu.ac.th/pub/moodle/moodle-1.9.tgz
    แตกแฟ้มออกมาเก็บไว้ด้วยคำสั่ง sudo tar -zxvf moodle-1.9.tgz -C /var/www/html/test19
    สร้าง directory ใหมชื่อ /var/www/html/test19/moodledata ด้วยคำสั่ง sudo mkdir -p /var/www/html/test19/moodledata
    เปลี่ยนสิทธิ์เจ้าของให้เป็น apache ด้วยคำสั่ง sudo chown -Rv www-data /var/www/html/test19/*
    สร้างแฟ้ม config ของ moodle ด้วยคำสั่ง sudo cp /var/www/html/test19/moodle/config-dist.php /var/www/html/test19/moodle/config.php
    แก้ไขแฟ้ม /var/www/html/test/moodle/config.php ให้มีค่าดังนี้
    $CFG->dbhost = 'localhost';
    $CFG->dbname = 'moodle19';
    $CFG->dbuser = 'moodleuser';
    $CFG->dbpass = 'yourpassword';
    $CFG->wwwroot = 'http://10.0.0.124/test19/moodle';
    $CFG->dirroot = '/var/www/html/test19/moodle';
    $CFG->dataroot = '/var/www/html/test19/moodledata';

    การ upgrade moodle จากเดิมรุ่น 1.6.6 เป็นรุ่น 1.9 ทำดังนี้
    ให้คัดลอกข้อมูลทั้งหมดในพื้นที่ moodledata จากรุ่น 1.6.6 มาไว้ที่ moodledata ของรุ่น 1.9
    ให้ backup database ของเดิมรุ่น 1.6.6 ด้วยคำสั่งประมาณว่า
    mysqldump -u root -p --default-character-set=utf8 --skip-set-charset moodle166 > mybackup166.sql
    แล้วนำไปใส่ restore คืนเป็น utf8 ไว้ในรุ่น 1.9 ด้วยคำสั่งประมาณว่า mysql -u root -p --default-character-set=utf8 moodle19 < mybackup166.sql

    ทดสอบผลงานได้ที่ http://10.0.0.124/test19/moodle ตอนเข้าเวบครั้งแรก ต้องปรับแต่งระบบโต้ตอบข้อความที่มาทางหน้าจอ

  4. เป็นอันจบสิ้นภาระกิจย้ายข้อมูลของ moodle จาก 1.5.x มาเป็น 1.9.x