How to install and Configuration nginx Web-server in Optware (Router DD-WRT)

January 7, 2014 12:54 pm Linux, Network

หลายๆคน คงอยากจะแชร์ไฟล์ที่ดาวน์โหลดมาจากบิตทอเรนมาใช้งาน จากบทความ ติดตั้ง Transmission เพื่อโหลดบิตบน Router ที่ลง dd-wrt firmware แต่ก็ใช้วิธี วิธีการแชร์ไฟล์จาก Router มายังเครื่องในระบบเครือข่ายด้วย SAMBA ไม่ได้ เพราะมือถือบางรุ่น เช่น Windows Phone ใช้งานโปรโตคอล smb ไม่ได้ วันนี้ผมจะทำการแก้ปัญหานี้ ด้วยการใช้โปรโตคอล http เข้ามาแก้ปัญหานี้ พระเอกของงานนี้ คงจะหนี web server ไปได้ ในที่นี้จะใช้งาน ‘nginx’ ครับ

สาเหตุที่เลือกใช้ nginx แทน Web Server ตัวอื่นๆ

  1. นิยมใช้งานกันแพร่หลาย
  2. Config ง่าย ไม่ซับซ้อน
  3. ประหยัดทรัพยากรในการทำงาน (อันนี้สำคัญมากๆ เพราะ Router มี Ram และ CPU ที่ค่อนข้างจำกัด)

วิธีการติดตั้ง

ติดตั้ง Optware

Optware เป็นซอฟแวร์ที่ถูกออกแบบมา ให้เราสามารถ Port Application เพิ่มเติมลงไปใน Router-OS ได้ (ในที่นี้ใช้ DD-WRT ในการทดสอบการใช้งาน) หากท่านทำตามวิธี ติดตั้ง Transmission เพื่อโหลดบิตบน Router ที่ลง dd-wrt firmware มาแล้ว ให้ข้ามขั้นตอนนี้ไปได้เลยนะครับ

อันดับแรก ให้เข้าไปหน้า GUI สำหรับ Config Router ครับ แล้วไปเลือกเมนู Services -> USB -> เปิดใช้งาน Automatic Drive Mount และเลือก Data Mount Point ไปที่ /mnt

Screen Shot 2556-11-24 at 3.57.50 AM
หน้าจอการตั้งค่า USB บน Firmware dd-wrt

หลังจากนั้นให้ทำการ telnet หรือ ssh ไปที่ Router ของคุณ เพื่อเข้าสู่โหมด Sell Command

2556-11-24 at 2.00 PM
หน้าจอการเข้าถึง ssh ผ่าน Application Termnal บน OSX

หลังจากนั้น ให้พิมพ์คำสั่งด้านล่าง เพื่อเรียกดูว่า Harddisk หรือ FlashDrive ของเรา mount อยู่ที่ตำแหน่งใด

df

2556-11-24 at 2.02 PM
ภาพการใช้คำสั่ง df บน ssh

ให้คุณดูตรง /dev/sd(ตัวเลขเรียงไปเรื่อยๆกรณีต่อ Harddisk หรือ FlashDrive หลายตัว) มันจะบอกขนาดและจุดที่มัน Mount เอาไว้ ในที่นี้ Mount ไว้ที่ /tmp/mnt/sdb_part1

ให้เราใช้คำสั่งในการเข้าไปสร้าง Folder สำหรับรองรับการติดตั้งและการดาวน์โหลดไฟล์ของ Transmission ด้วยคำสั่ง ดังนี้ (ในที่นี้ จะใช้ตำแหน่งการ Mount Harddisk ไว้ที่ /tmp/mnt/sdb_part1 ให้คุณนำไปเปลี่ยนแปลงตามรูปแบบของเครื่องของคุณ)

cd /tmp/mnt/sdb_part1
mkdir /tmp/mnt/sdb_part1/opt
mkdir -p /tmp/mnt/sdb_part1/data/torrents
mount /tmp/mnt/sdb_part1/opt /opt

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

wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O /tmp/optware-install.sh
sh /tmp/optware-install.sh

ติดตั้ง nginx

หลังจากที่เราติดตั้ง Optware เสร็จแล้ว เราก็ได้เวลาในการติดตั้งพระเอกของเราลงใน Router ของเราแล้วนะครับ วิธีการติดตั้ง ให้คุณใช้คำสั่งดังนี้

cd /opt/bin
ipkg install nginx

หลังจากนั้น จะเจอ Error ของ ‘libuClibc++.so.0’ อยู่ ตามรูปด้านล่าง

2557-01-07 at 12.36 PMภาพข้อผิดพลาดของ ‘libuClibc++.so.0’ หลังจากติดตั้ง ngnix บน optware

จะเห็นว่าเราต้องทำการติดตั้ง Library เพิ่มเติมเข้าไป ก่อนที่ตัว nginx จะทำงานได้ เราสามารถติดตั้งง่ายๆ โดยใช้คำสั่ง

ipkg install libuclibc++

หลังจากนั้นโปรแกรมจะติดตั้งได้ตามปกติ ก็แสดงว่าเราได้ทำการติดตั้ง nginx เสร็จสิ้นไปเป็นที่เรียบร้อยแล้วครับ

Configuration nginx

ก่อนที่เราจะใช้งานได้ เราก็ต้องตั้งค่ามันก่อน เพราะไม่งั้นแล้ว ค่าของมันจะกลายเป็น default ทำให้ไม่สามารถใช้งานตามที่เราต้องการได้ โดยการตั้งค่า สามารถทำงานได้ ดังนี้

ให้เราเข้าไปแก้ไขไฟล์ nginx.conf ที่อยู่ใน /opt/etc/nginx/ ด้วย editor ชื่อว่า vi ด้วยคำสั่ง ดังนี้

cd /opt/etc/nginx
vi ngnix.conf

หลังจากนั้นให้กดตัว i เพื่อเริ่มแก้ไขไฟล์ ให้คุณไปมองหา ส่วนของ #user nobody; ให้แก้เป็น user root; แล้วก็แก้ไขเพิ่มเติม ตามรายละเอีดยด้านล่าง

location / {                                                          
            root    /tmp/mnt/sdb_part1/data/torrents <แก้ให้เป็นไปตามที่ Harddisk ของ ตัวเอง mount อยู่ ในที่นี้ เป็น  /tmp/mnt/sdb_part1/data/torrents> ;                                                      
            index  index.html index.htm;                                      
            autoindex on;                                                     
        }

หากต้องการให้ nginx สามารถ list รายชื่อภาษาอื่นๆ ที่ไม่ใช่ภาษาอังกฤษได้ ให้แก้ตรง charset ด้วย ให้เป็นแบบด้านล่าง (เอาเครื่องหมาย # ออก)

charset utf-8;

หลังจากนั้น ให้ทำการบันทึก ด้วยการกด ESC หลังจากนั้นให้พิมพ์ wq เพื่อให้ vi บันทึกไฟล์และออกจากโปรแกรม

Start nginx

การเริ่มทำงานของ nginx ทำง่ายๆครับ ด้วยคำสั่ง ดังนี้

cd /opt/sbin
killall nginx #กรณีที่ Run nginx เอาไว้ก่อนหน้านี้
nginx

เข้าใช้งานผ่าน Client

ง่ายครับ เปิด web browser ขึ้นมา พิมพ์ http://<ip router>:8082 แค่นี้ ก็เรียบร้อยครับ

2557-01-07 at 12.57 PM

ภาพการเรียกใช้งานผ่าน Browser Firefox