Friday, October 12

How to setup WebServer, DatabaseServer on Raspberry Pi

    ในตอนนี้ เรากำลังเข้าใกล้การควบคุม Raspberry Pi ผ่าน network แล้ว อีกหนึ่ง package ที่น่าสนใจ ก็คือ การทำให้บอร์ด Raspberry Pi ของเรากลายเป็น Server ย่อมๆ ที่กินไฟน้อยที่สุดในโลกเลยก็ว่าได้ โดยในตอนนี้ เราจะมาทำให้กลายเป็น Web server (ที่ให้บริการเกี่ยวกับเว็บเพจ) และ Database Server (ให้บริการเกี่ยวกับฐานข้อมูล)

    แน่นอนว่า ถ้าเป็นระบบปฏิบัติการ Linux แล้วหล่ะก็ เรามักนิยมใช้โปรแกรม Apache ซึ่งจะทำให้เครื่องคอมพิวเตอร์เครื่องใดๆ ก็ได้ที่ลงโปรแกรมนี้ จะกลายเป็น Web server ทันที เพียงแค่เราอ้างอิงหมายเลขไอพี ผ่านโปรโตคอล http หน้าเว็บบราวเซอร์  เช่น http://192.168.2.111 ก็จะทำให้บอร์ด Raspberry Pi ของผมกลายเป็น Web server แล้วส่งหน้าเว็บเพจที่ชื่อ index.php หรือ index.html กลับไปที่บราวเซอร์ที่เรียกมาทันที  ส่วนฐานข้อมูลที่นิยมกัน ได้แก่ Mysql , sqlite, PostgreSQL และอื่นๆ อีกหลายตัว  นอกจากนี้ เรายังสามารถที่จะเพิ่มตัวแปรภาษาสคริปต์ เพื่อทำให้ web server ของเรามีความสามารถมากขึ้นนอกจากจะเป็นเพียงแค่ เว็บให้บริการหน้าเว็บเพจ อาจจะมีการเพิ่มการเก็บข้อมูล การเรียกดูข้อมูล จากฐานข้อมูลได้อีกด้วย พวกภาษาสคริปต์ ก็มีหลายตัว แล้วแต่เราจะถนัด และชอบ ได้แก่ ภาษา PHP , Perl , Python ซึ่งสามารถเข้ากันได้ดีกับตัวฐานข้อมูลที่ได้กล่าวไปแล้วข้างต้น 

เอาหล่ะ มัดมือชก เลยหล่ะกัน :P เราจะมาติดตั้ง

- Apache2 เพื่อทำให้ Raspberry Pi ของเรากลายเป็น Web server
- MySQL Server เพื่อทำให้ Raspberry Pi ของเรากลายเป็น Database Server
- PHP5 เพื่อให้ Raspberry Pi ของเรามีตัวแปลภาษาสคริปต์ เพื่อติดต่อกับ Database Server และเขียนภาษาสคริปต์ได้

หลังจากที่ login ผ่าน SSH เข้ามาแล้ว ก็ให้อัพเดท package ที่เคยติดตั้งไว้แล้ว ว่ามีอะไรอัพเดทใหม่บ้าง

sudo apt-get update

จากนั้นทำการโหลด package apache2,php5,ibapache2-mod-php5   เข้ามาต่อเลย ด้วยคำสั่ง

sudo apt-get install apache2 php5 libapache2-mod-php5

แต่โดยปกติแล้ว ผมจะโหลดทีละ package เพราะดูเหมือนโหลดพร้อมๆ กันแล้วมันจะ Error บ่อย  U_U

sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5

sudo apt-get install apache2

ติดตั้งเสร็จแล้ว ตัว apache เองจะทำการ restart apache service อาจจะมีการแจ้งเตือน Fail ขึ้นมา

sudo groupadd www-data ให้เราทำการแก้ไขด้วย
sudo groupadd www-data
และ
sudo usermod -g www-data www-data

เพื่อเพิ่ม กรุ๊ปใหม่ และทำการโมดิฟายกรุ๊ปนั้น จากนั้น เราจะต้องทำการกำหนดสิทธิ์ให้ผู้ใช้สามารถเข้าถึง director ใดได้บ้างใน path ที่เก็บเกี่ยวกับหน้าเว็บเพจ ตรงนี้ ถ้าสนใจ ให้หาข้อมูลเพิ่มเติมเกี่ยวกับ htaccess file ทำการแก้ไขไฟล์ 000-default ด้วยคำสั่ง

sudo nano /etc/apache2/sites-enabled/000-default

จากนั้น มองหาบรรทัดที่เขียนว่า AllowOverride None ให้แก้เป็น AllowOverride ALL แล้วทำการบันทึกไฟล์ และออกจากโปรแกรม nano

sudo nano /etc/apache2/sites-enabled/000-default

ทำการรีสตาร์ทเซอร์วิส ของ Apache2 อีกครั้งเพื่อให้เซอร์วิส นี้นำค่าใหม่ไปใช้

sudo service apache2 restart

ในส่วนของการติดตั้ง package เพื่อให้ Raspberry Pi ของเราเสร็จเรียบร้อยแล้ว หากต้องการเพียงแค่ให้ Raspberry Pi แสดงข้อความหน้าเว็บเพจ เราก็ทำได้เลย โดยการใส่ไฟล์ที่เขียนด้วยภาษา HTML แล้วเราไปวางที่ /var/www/ (ด้วยวิธีการ FTP จากตอนที่แล้ว) จากนั้น ลองทำการเรียกดูข้อมูลผ่านหน้าเว็บบราวเซอร์ ที่เครื่องคอมพิวเตอร์ของเรา โดยอ้างอิงไปที่ IP ของบอร์ด Raspberry Pi เช่น  http://192.168.2.111/ไฟล์.html  ก็จะปรากฏเนื้อหาที่เราเขียนลงไปในไฟล์ html นั้น 

http://192.168.2.111


ต่อมาเราจะทำให้ php5 ของเราที่ได้ติดตั้งไว้แล้ว สามารถเรียกข้อมูลจฐานข้อมูลที่เราจะติดตั้งต่อไปนี้ได้ 

ทำการติดตั้ง  mysql-server, mysql-client และ php5-mysql  ด้วยคำสั่ง

sudo apt-get install mysql-server mysql-client php5-mysql

sudo apt-get install mysql-server mysql-client php5-mysql

ในระหว่างขั้นตอนนี้ จะมีการให้ตั้งค่า password ของ root ที่จะ login เข้าในฐานข้อมูล Mysql ซึ่งเราอาจจะตั้ง password ใหม่ ที่ไม่เหมือนกับ password ของ root ที่ login เข้าใช้ raspberry pi ก็ได้ หรือจะให้เหมือนกันก็ไม่เป็นไร แล้วแต่สะดวกหล่ะกัน

root password for MySQL

เมื่อติดตั้งเรียบร้อยแล้ว ให้ทดสอบ login ใช้ฐานข้อมูล Mysql  เพื่อความแน่ใจ ให้ลองรีสตาร์ทเซอร์วิส Mysql ดูสักครั้งก่อน

sudo service mysql restart

จากนั้น ให้พิมพ์คำสั่งเข้าใช้ MySQL ด้วยคำสั่ง

sudo service mysql restart

รอจนเซอร์วิสสตาร์ทเรียบร้อยให้ใช้คำสั่ง

mysql -u root -p

แล้วทำการใส่ password ของ root ที่เราได้กำหนดไปเมื่อสักครู่ (อย่าบอกว่า ลืมนะ!!!  งานเข้าแน่ๆ หล่ะ)

เมื่อเข้ามาได้แล้ว prompt จะเปลี่ยนไปเป็น mysql>  ให้เราใช้ภาษา SQL (ต้องเรียนรู้เพิ่มอีกแหละ U_U ) เพื่อขอดู database ที่มีอยู่ตอนนี้

mysql> show databases;   จะปรากฏดังภาพ (เป็นค่ามาตรฐานที่ติดตั้งมา)

Mysql database on Raspberry Pi

ในตอนหน้า ผมจะแนะนำโปรแกรม MySQL Front ที่ใช้สำหรับรีโมทจากเครื่องคอมพิวเตอร์ของเรา เพื่อเข้าถึงฐานข้อมูลที่อยู่บน Raspberry Pi เพื่อให้การใช้งาน สร้าง แก้ไข ปรับปรุง เพิ่ม ลบ ข้อมูล ในดาต้าเบสเกิดความง่ายดายขึ้น ไม่ต้องมาพิมพ์ภาษา SQL ทั้งหมด (แต่รู้ไว้บ้างก็ดี :P )  และการแก้ไข หากเพื่อนๆ ลืม password ของ root ที่ใช้เข้า login mysql

ขอบคุณรูปประกอบบางส่วนจาก http://www.instructables.com

5 ความคิดเห็น:

TonDE on 3 February 2013 at 06:46 said...

ผมไม่รู้จะเริ่มยังไงอะครับ
ใครช่วยผมได้ติดต่อผมหน่อยได้ไหมครับ
มือใหม่อะครับ supatap@hotmail.com

Wisit.P on 3 February 2013 at 08:57 said...

ให้มองว่า Raspberry Pi คือ PC เครื่องเก่าๆ เครื่องนึงที่สามารถลง Debian (Linux ตระกูลหนึ่ง) ได้ เพราะฉะนั้น หากเราเขียนโปรแกรมบน Linux ได้ เราก็เล่น Raspberry Pi ได้ครับ

เจ๊กบิ๊ก on 21 April 2014 at 02:57 said...

กำลังทำโปรเจคเกี่ยวกับเรื่องนี้เลย ขอบคุณบล็อกนี้มากครับ

Unknown on 4 October 2016 at 08:34 said...

ผมทำตามแล้วอะครับ แต่ เหมือนมันยังเปิดไฟล์ PHP ไม่ได้อะครับ
ของผมเป็น PI3 อะครับ ทำยังไงครับ

Unknown on 10 November 2016 at 06:23 said...

webserver พอเข้าใจว่าเก็บไว้บน HW ได้ แล้ว database จะเซฟไว้ส่วนไหนล่ะครับ

 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

ติดตาม Blog นี้

Blog อื่นๆของฉัน

  • Test AMR Fleet Management program - ระบบบริหารจัดการจราจรและจัดคิวงานของรถ AMR (Autonomous Mobile Robot) ที่พัฒนาโดยบริษัท WP Solution Co., Ltd. จากภาษา C# ทั้งในส่วนของ Backend (Service app...
  • Gearset matching 2021 program - เป็นงานใหญ่ที่เพิ่งจบไป ที่ระยอง ปลวกแดง บริษัทผลิตชิ้นส่วนรถยนต์ คอนเซปต์ คือต้องการเก็บค่าหลังจากการทดสอบชิ้นส่วยรถยนต์ เพื่อเก็บไว้ในฐานข้อมูลให้แผนกถ...
  • Free Screen Capture โปรแกรมบันทึกหน้าจอ ฟรีๆ - หากเพื่อนๆ จะมองหาโปรแกรม ที่ไว้สำหรับบันทึกหน้าจอคอมพิวเตอร์ ไม่ว่าจะบันทึกในรูปของภาพนีิ่ง (Screen shot) หรือแบบบันทึกเป็นภาพเคลื่อนไหว ( screencas...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Microcontroller Electronics update

สถิติเยี่ยมชมบล๊อก