เรื่อง 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)

KM4-backup-diagram

รูปภาพระบบทดสอบนี้

 

การเตรียม 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

Share the Post:

Related Posts

PSU One Passport (Authentik)

Post Views: 106 คลิก “ลงชื่อเข้าใช้ด้วย PSU PASSPORT” จะได้หน้าดังภาพ เมื่อได้หน้านี้มี 2 ทางเลือกคือ

Read More