Redis + Raspberry PI ตอน 3

ในตอนที่หนึ่งเราว่ากันด้วยการสร้างสภาพแวดล้อม ตอนที่สองว่ากันด้วยตัวอย่างการสร้าง Instant Messaging อย่างง่ายกันแต่ก็ยังต้องทำงานกันบนอุปกรณ์ชิ้นเดียวกันทั้งหมด มาตอนนี้เราจะว่ากันต่อด้วยเรื่องการทำให้ระบบ Instant Messaging สามารถทำงานบนอุปกรณ์คนละอุปกรณ์ได้


เริ่มต้นที่ redis.conf


Redis Server จะเก็บค่า configuration ไว้ที่ /etc/redis/redis.conf ครับ การจะแก้ไขอะไรก็ต้องเริ่มต้นจากตรงนี้ก่อน ในกรอบของตอนนี้เราจะมองไปที่สามเรื่องดังนี้

  1. port สื่อสาร
  2. binding address และ
  3. requirepass


ต้องการเปลี่ยนหมายเลข port สื่อสาร ?

ใน redis.conf มองหาบรรทัดที่มีข้อความ

port 6379

เป็นตัวเลขที่ระบุว่า redis server จะใช้ port หมายเลขใดในการสื่อสารกับลูกข่าย เราสามารถเปลี่ยนตัวเลขนี้ได้ แต่ขอให้แน่ใจว่าตัวเลขนั้นจะไม่ไปชนกับงานอื่น

อนุญาตให้ลูกข่ายจากเครื่องอื่นติดต่อได้

มองหาบรรทัดที่มีข้อความ

bind 127.0.0.1

ค่าเดิมที่กำหนดไว้หมายถึง redis server จะอนุญาตให้มีการติดต่อมาได้เฉพาะกับเครื่อง localhost เท่านั้น หากเราต้องการติดต่อมาจากเครื่องคอมพิวเตอร์อื่นที่มี IP address ต่างออกไปก็จะไม่ได้รับอนุญาตให้ทำการอะไร
ในกรณีที่เรามี IP address ที่แน่นอนให้กับ redis server เราก็สามารถเปลี่ยนค่า ip address ให้เป็นตามที่เราได้มาเช่น  192.168.2.2 ฯลฯ   การเปลี่ยนที่อยุ่ในกรณีนี้  Client ที่มี ip address อื่น หรือการเชื่อมต่อมาจากเครื่องอื่น ก็จะต้องกำหนดที่อยู่นีให้กับตัวโปรแกรมของเราด้วย เช่น ในตัวอย่าง
Publisher.py  เราต้องไปแก้ไขในบรรทัด

broker = redis.Redis(host='localhost',port=6379)

ให้เป็น

broker  = redis.Redis(host='192.168.2.2',port=6379)


ในกรณีที่เราไม่สามารถระบุ ip address หรือ domain name ที่ชัดเจนได้ เราสามารถละ directive ตัวนี้ได้ โดยการเติมสัญญลักษณ์ # ไว้ข้างหน้า เช่น 

#bind 127.0.0.1


เพิ่มความมั่นใจด้วย password

ที่กล่าวมาก็เพียงพอแล้วสำหรับการทำให้ระบบเชื่อมต่อกันระหว่างอุปกรณ์ แต่หากเราต้องการเพิ่มความมั่นใจเรื่องความปลอดภัยในอีกระดับด้วยการกำหนด password ก็สามารถทำได้โดย

1. กำหนด password โดยการมองหาบรรทัดที่มีข้อความ

#requirepass  foobared

จะเห็นว่าค่าปริยายนั้นไม่ได้กำหนดให้ใช้ password  ให้เรานำสัญญลักษณ์ # ออกไป แล้วทำการกำหนดค่า password ตามที่เราต้องการ สมมุติว่าเป็น "xxxx"

2. แก้ไข programm
กลับไปที่ Publisher.py และ Subscriber.py เราต้องการแก้ไข

broker = redis.Redis(host='localhost',port=6379)

โดยเพิ่ม password เป็น parameter อีกหนึ่งตัว

broker = redis.Redis(host='192.168.2.2',port=6279,password='xxxx')

หลังเสร็จสิ้นการแก้ไข redis.cof แล้ว เราต้องทำการ restart ตัว redis server ด้วย

$ sudo /etc/init.d/redis restart


ปล. เอกสารที่ใช้ศึกษาเพิ่มเติม

1. https://redis-py.readthedocs.org/en/latest/
2. http://redis.io/topics/security

ความคิดเห็น