เรื่อง hands on backup joomla website and restore นี้จัดเตรียมโดยใช้ Oracle VM VirtualBox เพื่อฝึกปฏิบัติเกี่ยวกับการ backup website ในตัวอย่างจะใช้ joomla web site ซึ่งการ backup คงจะมีหลายแบบตามชนิดของการตั้ง website ในกรณีนี้ก็จะเป็นแบบตั้ง server เองแล้วใช้ apache web server + mysql server ที่ติดตั้งเอง
สภาพแวดล้อมที่เตรียมมีดังนี้
ubuntu router: มี Fix IP Address 10.0.100.1 (แจก DHCP IP Address ให้แก่ server1, server2 และ client)
server1: 10.0.100.206 (joomla website รันบน apache web server)
server2: 10.0.100.207 (backup)
client: 10.0.100.205 (เพื่อใช้งาน ssh ผ่านทาง terminal และเพื่อใช้งาน firefox web browser)
รูปภาพระบบทดสอบนี้
การเตรียม VM
ดาวน์โหลด [ ubunturouter-dhcp.ova 1.1GB ] [ ubuntuserver-lamp.ova 1.2GB ] [ linuxmint15-live.ova 81KB] [ linuxmint-15-mate-dvd-32bit.iso 1.0GB ] หรือได้รับแผ่น DVD ไฟล์ทั้งหมดนี้
แล้วทำดังนี้
1. ทำ import ไฟล์ ubunturouter-dhcp.ova ตั้งชื่อว่า ubuntu router ตั้ง network adapter1: NAT, ตั้ง network adapter2: internal network (ตั้ง name: intnet1)
2. ทำ import ไฟล์ ubuntuserver-lamp.ova ตั้งชื่อว่า server1 ตั้ง network adapter1: internal network (ตั้ง name: intnet1)
3. ทำ import ไฟล์ ubuntuserver-lamp.ova อีกครั้ง ตั้งชื่อว่า server2 ตั้ง network adapter1: internal network (ตั้ง name: intnet1)
4. ทำ import ไฟล์ linuxmint15-live.ova ตั้งชื่อว่า client ตั้ง network adapter1: internal network (ตั้ง name: intnet1) และตั้งค่า Storage ใช้ CD/DVD ด้วยไฟล์ linuxmint-15-mate-dvd-32bit.iso
หมายเหตุ เครื่อง 1,2 และ 3 เปิดเครื่องเข้าใช้ด้วย login mama / password 123456
การเตรียมทำ joomla site ทดสอบ
1. สร้าง database ที่ต้องการติดตั้ง ตัวอย่าง สร้าง database ชื่อ testdatabase ใช้คำสั่ง
mysql -uroot -p123456 -e "CREATE DATABASE testdatabase CHARACTER SET 'UTF8';"
2. กำหนดสิทธิ์การใช้ database testdatabase ให้แก่ user ตัวอย่างสร้าง user ชื่อ mamamysql โดยมีรหัสผ่านว่า mamapass ใช้คำสั่ง
mysql -uroot -p123456 -e "grant all privileges on testdatabase.* to 'mamamysql'@'localhost' identified by 'mamapass' ;"
3. เตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ /var/www/testjoomla ด้วยคำสั่ง
sudo mkdir -p /var/www/testjoomla
4. ดาวน์โหลดแฟ้ม joomla 2.5.9 มาเก็บไว้ด้วยคำสั่ง
wget http://ftp.psu.ac.th/pub/joomla/Joomla_2.5.9-Stable-Full_Package.tar.gz -P /tmp
แล้วแตกแฟ้มออกมาเก็บไว้ที่ /var/www/testjoomla ด้วยคำสั่ง
sudo tar -zxvf /tmp/Joomla_2.5.9-Stable-Full_Package.tar.gz -C /var/www/testjoomla
5. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ apache ด้วยคำสั่ง
sudo chown -R www-data.www-data /var/www/testjoomla
6. ต่อไปต้องติดตั้งปรับแต่งระบบ joomla ครั้งแรก เปิด browser (firefox, chrome, Internet Explorer ฯลฯ) แล้วพิมพ์
http://10.0.100.206/testjoomla
(หมายเหตุ 10.0.100.206 คือ ip address server ที่ติดตั้ง Joomla)
ขั้นตอน 1 : Choose language (เลือกภาษา) ให้ click ปุ่ม Next (หรือต่อไป)
ขั้นตอน 2 : Pre-Installation Check(ตรวจสอบระบบก่อนติดตั้ง) ให้ click ปุ่ม Next (หรือต่อไป)
ขั้นตอน 3 : License(ลิขสิทธิ์) ให้ click ปุ่ม Next (หรือต่อไป)
ขั้นตอน 4 : Database Configuration(การตั้งค่าฐานข้อมูล) ให้ใส่ค่าดังนี้ (อย่าลืมใส่ข้อมูลชิดซ้าย ห้ามมีช่องว่าง)
Database type = mysqli(เลือกที่มี i) (ความแตกต่างระหว่าง mysqli และ mysql)
Host Name = localhost
Username = mamamysql
Password = mamapass
Database Name = testdatabase เสร็จแล้ว click Next (หรือต่อไป)
ขั้นตอน 5 : FTP Configuration (ตั้งค่า FTP) ให้ click ปุ่ม Next (หรือต่อไป)
ขั้นตอน 6 : Main Configuration (ตั้งค่าหลักของ เว็บ) ให้ใส่ค่าดังนี้
Admin Username = ไม่ต้องแก้ไข ทิ้งไว้เหมือนเดิมคือ admin
Admin Password = 123456
Confirm Admin Password = 123456
อย่าลืม ต้อง Click Install Sample Data (ติดตั้งข้อมูลตัวอย่าง) แล้วกด Next (หรือ ต่อไป)
ขั้นตอนที่ 7 : Finish (เสร็จสิ้น) (ขั้นตอนสุดท้าย)
7. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ user ที่ไม่ใช่ www-data ด้วยคำสั่ง
sudo chown -R mama.mama /var/www/testjoomla
การตั้งค่าการสำรองข้อมูลข้ามเครื่องโดยไม่ต้องถามรหัสผ่าน
1. ใช้คำสั่งดังนี้คือ
ssh-keygen -t dsa
ได้ผลข้อความตัวอย่างว่า
Generating public/private dsa key pair.
Enter file in which to save the key (/home/User/.ssh/id_dsa):
ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
Enter passphrase (empty for no passphrase):
ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
Enter same passphrase again:
ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
Your identification has been saved in /home/User/.ssh/id_dsa.
Your public key has been saved in /home/User/.ssh/id_dsa.pub.
The key fingerprint is:
66:ce:cc:8d:33:0d:49:9a:05:26:77:95:1a:3e:96:5f User1@Server1
ถึงตอนนี้ ระบบจะสร้างแฟ้ม ~/.ssh/id_dsa และ ~/.ssh/id_dsa.pub ขึ้นมา
2. ให้นำแฟ้ม ~/.ssh/id_dsa.pub จากเครื่องนี้ ไปเก็บไว้ที่ home ของ User2 ปลายทาง @server2
ด้วยตัวอย่างคำสั่งว่า ssh-copy-id -i ~/.ssh/id_dsa.pub User2@Server2 เช่น
ssh-copy-id -i ~/.ssh/id_dsa.pub mama@10.0.100.207
อาจมีการถามรหัสผ่านของ User2@Server2 ให้ป้อนรหัสผ่านให้ถูกด้วย
หากสำเร็จถูกต้อง ข้อมูลจะถูกเก็บที่ home ของ User2 ปลายทาง @server2 ในแฟ้ม ~/.ssh/authorized_keys
3. เพื่อความปลอดภัย ให้กำหนดสิทธิ์เฉพาะเจ้าของจึงจะอ่านแฟ้มเหล่านีได้ ด้วยตัวอย่างคำสั่ง
chmod 600 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
การตั้งค่า cron เพื่อ backup server1 (10.0.100.206) ไปยัง server2 (10.0.100.207)
1. ขั้นตอนนี้ต้องเข้าเป็น username root ด้วยคำสั่ง
sudo su -
2. สร้างแฟ้ม /etc/cron.d/cron-backup
nano /etc/cron.d/cron-backup
ใส่คำสั่งดังนี้
0 4 * * * root sh /root/backup-joomla.sh
3. สร้างแฟ้ม /root/mydaily.sh ด้วยคำสั่ง
nano /root/backup-joomla.sh
มีข้อมูลคำสั่งต่างๆที่ต้องการสั่งให้ทำงาน ดังนี้
#!/bin/bash TODAY=$(date "+%Y%m%d%H%M") mysqldump -u mamamysql -pmamapass testdatabase > /root/testjoomla_${TODAY}.sql scp -i /home/mama/.ssh/id_dsa /root/testjoomla_${TODAY}.sql mama@10.0.100.207:backup_testjoomla tar -zcp -f /root/testjoomla_${TODAY}.tgz -C /var/www/testjoomla . scp -i /home/mama/.ssh/id_dsa /root/testjoomla_${TODAY}.tgz mama@10.0.100.207:backup_testjoomla
4. เตรียมเสร็จ ให้ลองทดสอบระบบ
login เข้าไปที่ server2 ด้วย ssh เพื่อสร้างไดเรกทอรี
ssh -i /home/mama/.ssh/id_dsa mama@10.0.100.207 "mkdir backup_testjoomla"
ทดสอบ run script นี้สัก 1 ครั้ง
sh /root/backup-joomla.sh
ตรวจสอบดูว่ามีการส่งไฟล์ไปเก็บจริงไม๊
ssh -i /home/mama/.ssh/id_dsa mama@10.0.100.207 "ls -l backup_testjoomla"
5. เสร็จแล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง
service cron restart
6. ออกจาก sudo su ด้วยคำสั่ง
exit
การ restore joomla web site
1. สร้าง database ที่ต้องการติดตั้ง ตัวอย่าง สร้าง database ชื่อ testdatabase ใช้คำสั่ง
mysql -uroot -p123456 -e "CREATE DATABASE testdatabase CHARACTER SET 'UTF8';"
2. กำหนดสิทธิ์การใช้ database testdatabase ให้แก่ user ตัวอย่างสร้าง user ชื่อ mamamysql โดยมีรหัสผ่านว่า mamapass ใช้คำสั่ง
mysql -uroot -p123456 -e "grant all privileges on testdatabase.* to 'mamamysql'@'localhost' identified by 'mamapass' ;"
3. เตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ /var/www/testjoomla ด้วยคำสั่ง
sudo mkdir -p /var/www/testjoomla
4. แตกแฟ้มที่ backup นั้น (testjoomla_201309031231.tgz) ออกมาเก็บไว้ที่ /var/www/testjoomla ด้วยคำสั่ง
sudo tar -zxvf backup_testjoomla/testjoomla_201309031231.tgz -C /var/www/testjoomla/
5. import ข้อมูล เข้า ด้วยคำสั่ง
mysql -uroot -p123456 testdatabase < backup_testjoomla/testjoomla_201309031231.sql
6. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ user ที่ไม่ใช่ www-data ด้วยคำสั่ง
sudo chown -R mama.mama /var/www/testjoomla
7. ก็จะสามารถเข้า server2 ได้ที่ http://10.0.100.207/testjoomla