การ backup moodle ทำเพื่อความปลอดภัยในการใช้งาน Moodle หากมีปัญหาการใช้งานเราก็สามารถกู้ระบบคืนได้โดยง่าย
ดังนั้นเราจึงควรสำรองระบบทั้งหมดมาไว้ที่ Server จำลองในเครื่องของเราซึ่งติดตั้งด้วย Appserv
ในตัวอย่างจะเป็นการสำรองระบบ e-learning ของโรงเรียนมะขามสรรเสริญ
ข้อมูลใน Server Moodle ที่เป็น Server จริง
IP Server 202.143.137.38
โฟลเดอร์ moodledata อยู่ที่ /var/www
โฟลเดอร์ mkcel อยู่ที่ /var/www/html เป็นโฟลเดอร์ที่ใช้ติดตั้ง Moodle ดังนั้นเวลาเข้าใช้งานต้องเรียก http://202.143.137.38/mkcel
ขั้นตอนโดยสรุปของการสำรองระบบ
1. zip โฟลเดอร์ moodledata ซึ่งเป็นโฟลเดอร์ที่บรรจุข้อมูล ไฟล์ การบ้าน งาน และภาพต่างๆ ที่ user upload ขึ้นมา
2. zip โฟลเดอร์ mkcel ซึ่งเป็นโฟลเดอร์ที่ติดตั้ง Moodle
3. Export ฐานข้อมูล mkcel โดยใช้คำสั่ง mysql หรือ phpMyAdmin แนะนำว่าใช้ phpMyAdmin ง่ายและสะดวกที่สุด
4. นำข้อมูลข้อ 1-3 ย้ายกลับมาที่ Appserv
5. เปลี่ยนแปลงรายละเอียดในไฟล์ config.php
6. ทดสอบการใช้งาน
ต่อไปก็เป็นรายละเอียดในการทำของ 6 ข้อข้างต้น
วิธี backup Moodle จาก Server จริงมาไว้ใน AppServ
1. ใช้คำสั่ง tar สำเนาโฟลเดอร์ moodledata (ข้อความหลัเครื่องหมาย # เป็นคำอธิบาย)
cd /var/www/ #เข้าไปยังโฟลเดอร์ที่ moodledata อยู่
tar -zcvf /home/moddata.tar.gz moodledata #zip โฟลเดอร์ moodledata ไปไว้ที่ /home
2. ใช้คำสั่ง tar สำเนาโฟลเดอร์ mkcel (ข้อความหลัเครื่องหมาย # เป็นคำอธิบาย)
cd /var/www/html/ #เข้าไปยังโฟลเดอร์ที่ mkcel อยู่
tar -zcvf /home/mkcel.tar.gz mkcel #zip โฟลเดอร์ mkcel ไปไว้ที่ /home
3. Export ฐานข้อมูล mkcel โดยใช้คำสั่ง mysql ดังนี้
mysqldump -u root -p mkcel > mkcel.sql #mkcel คือชื่อฐานข้อมูลที่เราต้องการ backup และบันทึกไว้เป็นไฟล์ชื่อ mkcel.sql
ในการ Export ฐานข้อมูลนี้ถ้าจะให้สะดวก รวดเร็วพบปัญหาน้อยที่สุดแนะนำว่าใช้ phpMyAdmin ช่วยดีกว่าซึ่งมีวิธีการง่ายๆด้งนี้
3.1 เปิด phpMyAdmin แล้วเลือกฐานข้อมูลที่ต้องการตามภาพด้านล่าง
3.2 คลิก ส่งออก (Export)
3.3 คลิก เลือกทั้งหมด (Select All) แล้วคลิกช่อง Creation/Update/Check dates ให้มีเครื่องหมายถูก แล้วคลิก ลงมือ ตามภาพด้านล่าง
3.4 เลือกข้อความทั้งหมดแล้วคัดลอกข้อความทั้งหมด
3.5 เปิดโปรแกรม Notepad แล้ววางข้อความที่คัดลอก ลงไป เสร็จแล้วคลิก File -> Save As
3.6 ตรงช่อง Flie name ตั้งชื่อไฟล์ตามต้องการนามสกุล .sql ตรงช่อง Save as type เลือกเป็น All Files (*.*) ตรงช่อง Encoding เลือกรายการ UTF-8 แล้วคลิก Save
4. ย้าย mkcel.tar.gz , moddata.tar.gz , mkcel.sql มาไว้ที่เครื่อง AppServ ด้วย FTP
ใช้ winrar แตกไฟล์ mkcel.tar.gz , moddata.tar.gz
ใช้ editplus เปิดไฟล์ mkcel.sql ค้นหาแล้วเปลี่ยนรายละเอียดดังนี้
/var/www เป็น C:\\AppServ (แก้ไขตำแหน่ง moodledata)
http://202.143.137.38 เป็น http://127.0.0.1 (แก้ไขตำแหน่ง moodle)
ก่อนบันทึกไฟล์ ตรวจสอบอีกครั้งให้แน่ใจว่าแก้ไขหมดแล้ว เคยพบปัญหาว่าบางบรรทัดยังเป็น mkc.ac.th
เมื่อนำไป restore ใน phpMyAdmin พอเปิดเข้าใช้งานเว็บจะพบปัญหา require once คือหาตำแหน่งไฟล์ไม่พบ
5. เปลี่ยนแปลงรายละเอียดในไฟล์ /mkcel/config.php
$CFG->dbuser เปลี่ยน admin เป็น root หรือชื่อผู้ใช้ที่ติดต่อกับฐานข้อมูลได้
$CFG->dbpass เปลี่ยน เป็นรหัสผ่านของ mysql ใน Appserv
$CFG->wwwroot เปลี่ยน wwwroot เป็น http://127.0.0.1
$CFG->dirroot เปลี่ยน dirroot เป็น C:\AppServ\www\mkcel
$CFG->dataroot เปลี่ยน dataroot เป็น C:\AppServ/moodledata
$CFG->passwordsaltmain เปลี่ยน passwordsaltmain ให้ตรงกับ config.php ของ Server จริง ถ้าเป็นการสำรองข้อมูลจาก Server จริงมาไว้ใน Appserv ก็ไม่ต้องเปลี่ยนอะไร ปัญหาของ passwordaltmain ที่ไม่ถูกต้องคือเปิดหน้าเว็บได้แต่จะไม่สามารถ Login เข้าระบบได้ แม้ว่าจะพิมพ์ชื่อผู้ใช้และรหัสผ่านอย่างถูกต้องแล้วก็ตาม
คัดลอกโฟลเดอร์ mkcel ไปไว้ที่ C:\AppServ\www
คัดลอกโฟลเดอร์ moodledata ไปไว้ที่ C:\AppServ
ระวัง โฟลเดอร์มันซ้อนกันด้วย เช่น moodledata/moodledata/ หรือ mkcel/mkcel
ใช้ phpMyAdmin สร้างฐานข้อมูลชื่อ mkcel อย่าลืมเลือก encoding เป็น UTF-8
ใช้ phpMyAdmin คืนค่าฐานข้อมูลที่ backup กลับเข้าไปไว้ที่ฐานข้อมูล mkcel ที่สร้างไว้เมื่อครู่
ไฟล์ที่ใช้คืนค่าก็คือไฟล์ mkcel.sql
ดูการเปลี่ยน config.php จากตัวอย่างด้านล่างประกอบ ให้ดูที่ตัวหนาจะเป็นการเปลี่ยนแปลง
<?php /// Moodle Configuration File
unset($CFG);
$CFG = new stdClass();
$CFG->dbtype = ‘mysql’;
$CFG->dbhost = ‘localhost’;
$CFG->dbname = ‘mkcel’;
$CFG->dbuser = ‘root‘; เปลี่ยนเป็นชื่อผู้ใช้ที่ติดต่อกับ mysql ใน appserv
$CFG->dbpass = ‘123456‘; เปลี่ยนเป็นรหัสผ่านผู้ใช้ที่ติดต่อกับ mysql ใน appserv
$CFG->dbpersist = false;
$CFG->prefix = ‘mdl_’;
$CFG->wwwroot = ‘http://127.0.0.1/mkcel‘; เปลี่ยนเป็น path ของ appserv
$CFG->dirroot = ‘C:\AppServ\www\mkcel‘; เปลี่ยนเป็น path ของ appserv
$CFG->dataroot = ‘C:\AppServ/moodledata‘; เปลี่ยนเป็น path ของ appserv เครื่องหมาย / อย่าเปลี่ยนเป็น \
$CFG->admin = ‘admin’;
$CFG->directorypermissions = 00777; // try 02777 on a server in Safe Mode
$CFG->passwordsaltmain = ‘;<b2gYaF+h9Qyl8R%w~nthcR(2Fi‘; ตรงนี้ต้องเหมือนกับ config.php
ใน moodle ของ server จริงถ้าเป็นการ backup จาก Server จริงมาไว้ใน Appserv ไม่ต้องแก้ไขอะไร
สำคัญเพราะเคยไม่เปลี่ยนแล้ว Login เข้าสุ่ระบบไม่ได้แม้ว่าจะพิมพ์ชื่อผู้ใช้กับรหัสผ่านถูกต้องกี่ครั้งก็ตาม
require_once(“$CFG->dirroot/lib/setup.php”);
// MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS ON THE NEXT LINE.
?>
6. เสร็จแล้วก็ทดสอบการใช้งาน
ไฟล์ที่ backup มาทุกไฟล์ให้เก็บไว้ หากวันไหน Server Moodle มีปัญหาต้องติดตั้งระบบใหม๋
ให้อ่าน blog หัวข้อ วิธีคืนค่า moodle ที่ backup มา เพื่อคืนค่าระบบให้เหมือนเดิม