บทความนี้จะทำให้ Raspberry Pi ของเราเป็นเว็บเซิร์ฟเวอร์ ที่สามารถเข้าถึงด้วยโดเมนเนมได้จากทั่วโลก ด้วยการติดตั้งโปรแกรม Apache 2 โปรแกรม MySQL พร้อมทั้งติดตั้งภาษา PHP และโปรแกรม phpMyAdmin จากนั้นจึงติดตั้ง Dynamic Update Client ของ No-IP และตั้งค่า DMZ ในเราเตอร์ของเรา
ขั้นตอนการทำ Raspberry Pi ให้เป็น web server
- ติดตั้งระบบปฏิบัติการให้กับ Raspberry Pi
- ปรับปรุงระบบปฏิบัติการ
- ติดตั้ง Apache2
- ติดตั้ง PHP
- ติดตั้ง MySQL
- ตั้งรหัสผ่านให้กับ Root
- ติดตั้ง phpMyAdmin
- การกำหนดสิทธิโฟล์เดอร์
ขั้นตอนการติดตั้ง DDNS ของ No-IP
- สมัครสมาชิก No-IP.com https://www.noip.com/
- ติดตั้ง Dynamic Update Client ของ No-IP
- ตั้งค่า DMZ ในเราเตอร์
ติดตั้งระบบปฏิบัติการให้กับ Raspberry Pi
ก่อนอื่นต้องติดตั้งระบบปฏิบัติการให้กับ Raspberry Pi ของเราก่อน สามารถดูวิธีการติดตั้ง ได้จากบทความ การติดตั้งระบบปฏิบัติการ Raspbian ให้กับ Raspberry Pi แบบไม่ต่อจอ
ปรับปรุงระบบปฏิบัติการ
เมื่อติดตั้งระบบปฏิบัติการและตั้งค่าต่าง ๆ ให้กับ Raspberry Pi เรียบร้อยแล้ว ให้ทำการ Remote ไปยัง Raspberry Pi ผ่านโปรโตรคอล Secure Shell ด้วยโปรแกรม Putty แล้วทำการอัพเดทและอัพเกรดระบบปฏิบัติการ ด้วยคำสั่ง
sudo apt-get update
sudo apt-get upgrade -y
ติดตั้ง Apache
จากนั้น ทำการติดตั้งโปรแกรมเว็บเซิร์ฟเวอร์ด้วยคำสั่ง
sudo apt-get install apache2
ติดตั้ง PHP
และติดตั้งภาษา PHP ด้วยคำสั่ง
sudo apt-get install php php-mbstring
ติดตั้ง MySQL
แล้วติดตั้ง ระบบฐานข้อมูล MySQL ด้วยคำสั่ง
sudo apt-get install mysql-server php-mysql -y
ตั้งรหัสผ่านให้กับ Root
ทำการลบชื่อผู้ใช้ root และสร้างชื่อผู้ใช้ root ขึ้นมาใหม่ พร้อมตั้งรหัสผ่านและกำหนดสิทธิ์ให้กับผู้ใช้ root โดยการพิมพ์
sudo mysql --user=root
DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
quit
ติดตั้ง phpMyAdmin
แล้วจึงติดตั้ง phpMyAdmin เพื่อใช้ในการจัดการฐานข้อมูล MySQL ด้วยคำสั่ง
sudo apt-get install phpmyadmin -y
และเมื่อมีหน้าต่างแสดงขึ้นมา ให้กด Tab เพื่อเลือก Apache2 และ เลือก No ในหน้าต่าง dbconfig-common
การกำหนดสิทธิโฟล์เดอร์
sudo chown -R pi:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/
เสร็จแล้วครับ กับการการทำ raspberry pi ให้เป็น web server เราลองมาทดสอบกันดูครับ ว่าใช้งานได้หรือไม่ ด้วยการสร้างไฟล์ info.php ในโฟลเดอร์ /var/www/html และเพิ่มข้อความ ดังนี้
sudo nano /var/www/html/info.php
พิมพ์ความภายในไฟล์ info.php
<?php
phpinfo();
?>
เมื่อสร้างเสร็จให้กด Ctrl+x และ Ctrl+y แล้วให้ลองเข้าเว็บไซต์จากเครื่องคอมพิวเตอร์เครื่องอื่น ที่อยู่ในวง Lan เดียวกันกับ Raspberry Pi ของเรา โดยการพิมพ์ หมายเลข LAN IP ของ Raspberry Pi ในช่อง URL ของ Web browser ตามด้วยไฟล์ info.php ที่เราสร้างขึ้น
http://Raspberry Pi's LAN IP Address/info.php
ถ้าเว็บเซิร์ฟเวอร์ของเราใช้งานได้ จะแสดงรายละเอียดของ Web Server ออกมา ซึ่งแสดงว่า Raspberry Pi พร้อมที่จะเป็น Web Server แล้วครับ
และคราวนี้ถึงเวลาที่เราจะทำให้ Raspberry Pi ของเราสามารถเข้าถึงได้ด้วยโดเมนแบบ Dynamic DNS ด้วยการติดตั้ง Dynamic Update Client ของ No-IP และตั้งค่า DMZ ที่เราเตอร์ของเรา
การสมัครสมาชิก No-IP.com
สามารถสมัครสมาชิก No-IP ได้ที่ https://www.noip.com/ กดปุ่ม SIGN UP กรอกอีเมล์ของเราลงไป และตั้งรหัสผ่านตามที่ต้องการ แต่ต้องไม่น้อยกว่า 6 ตัวอักษร จากนั้นทำการเลือกชื่อโฮส (Hostname) ที่คุณต้องการใช้ และเลือกโดเมนเนม ที่ No-IP ได้เตรียมไว้ให้ใช้ฟรี ได้แก่ hopto.org zapto.org sytes.net ddns.net แล้วจึง กดปุ่ม Free Sign up
ติดตั้ง Dynamic Update Client ของ No-IP
สร้างโฟลเดอร์ noip ในโฟลเดอร์ /home/pi/ สำหรับโปรแกรม DUC ของ No-IP ใน Raspberry Pi ของเรา โดยใช้คำสั่ง
mkdir /home/pi/noip
และเข้าไปยังโฟลเดอร์ที่สร้างขึ้นแล้วทำการดาวน์โหลดโปรแกรม NoIP DUC
cd /home/pi/noip
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
จากนั้นทำการแตกไฟล์ และเข้าไปยังโฟลเดอร์ที่ได้ เพื่อทำการติดตั้งโปรแกรม
tar vzxf noip-duc-linux.tar.gz
cd noip-2.1.9-1
sudo make
sudo make install
จะมีข้อความแจ้งให้กรอกชื่อผู้ใช้และรหัสผ่าน ให้เราทำการกรอกชื่อผู้ใช้ และรหัสผ่าน ของ No-IP ที่ได้สมัครไว้แล้ว และกรอกเลข 5 ในช่อง interval หมายถึง ระยะห่างที่ต้องการให้โปรแกรมทำการปรับปรุงหมายเลข Public IP ที่ Router ได้รับจากผู้ให้บริการอินเตอร์เน็ต โดยมีหน่วยเป็นนาที (แนะนำ 5 นาที)
กรอกอีเมล์ (email) ที่ใช้สมัคร No-IP
กรอกรหัสผ่าน (Password) ที่ได้กำหนดไว้ตอนสมัคร No-IP
กรอกระยะห่าง (Interval ) 5 (ไม่ควรเกิน 30)
Tips :
สามารถเปลี่ยนแปลงการปรับปรุงหมายเลข IP ของโปรแกรม No-IP DUC ได้ เช่น ถ้าต้องการให้โปรแกรมทำการปรับปรุงหมายเลข IP ทุก ๆ 5 นาที ให้ใช้คำสั่ง
sudo /usr/local/bin/noip2 -U 5
สามารถดูคำสั่งทั้งหมดของโปรแกรม No-IP DUC ด้วยคำสั่ง
sudo /usr/local/bin/noip2 -h
แล้วจึงสั่งทำให้โปรแกรมทำงาน ด้วยคำสั่ง
sudo /usr/local/bin/noip2
sudo noip2 -S
และเพิ่มข้อความ ในไฟล์ /etc/rc.local เพื่อให้โปรแกรม No-IP ทำงานทุกครั้งหลังเปิดเครื่อง ด้วยการเพิ่มข้อความ /usr/local/bin/noip2 ก่อนบรรทัด exit 0 ที่ท้ายไฟล์
sudo nano /etc/rc.local
...
fi
/usr/local/bin/noip2
exit 0
เท่านี้ก็เป็นอันเสร็จสิ้นการติดตั้ง Dynamic Update Client ของ No-IP แต่ยังต้องทำการตั้งค่า DMZ ในเราเตอร์ของเรา เพื่ออนุญาตให้เข้าถึงหมายเลข LAN IP ของเครื่อง Raspberry Pi จากเครือข่ายภายนอกได้
การตั้งค่า DMC ใน Router
การตั้งค่า DMZ (DeMilitarized Zone) เป็นขั้นตอนสุดท้ายที่จะต้องทำเพื่อให้ติดต่อ Raspberry Pi ผ่านชื่อโดเมนได้ ก็คือ การตั้งค่า DMZ ในเราเตอร์ของเรา เพื่ออนุญาตให้เข้าถึงหมายเลข LAN IP ของเครื่อง Raspberry Pi จากเครือข่ายภายนอกได้

Tips :
ถ้าหากทำตามทุกขั้นตอนแล้ว ยังไม่สามารถเข้าถึง Raspberry Pi ได้ด้วยโดเมนเนมของ No-IP ให้ทำการตรวจสอบหมายเลข Public IP ที่ Dynamic Update Client ของ No-IP ได้รับ จากเว็บไซต์ noip.com และหมายเลข Public IP ใน Wan ของ Router ที่ได้จากผู้ให้บริการอินเทอร์เน็ต (ISP) ถ้าได้หมายเลข IP ไม่ตรงกัน อาจจะเกิดจาก ผู้ให้บริการอินเตอร์เน็ต ได้ทำการ NAT Public IP เอาไว้ ให้โทรศัพท์ไปยังผู้ให้บริการอินเตอร์เน็ต และแจ้งว่า “จะทำ DDNS สำหรับกล้องวงจรปิด แต่หมายเลข Public IP ได้มาไม่ตรงกัน” เดี๋ยวทางผู้ให้บริการอินเตอร์เน็ตก็จะทำการตั้งค่าใหม่ให้ครับ