mupx with install graphicsmagick

ช่วงนี้ผมทำเว็บไซต์ด้วย Meteor JS Framework ก็จะมีปัญหานู่นนี่นั่น สำหรับคนที่เพิ่งจะมาจับ Node.js เป็นเรื่องปกติของทุกภาษาเนอะ แต่ตอนนี้มีบางสิ่งบางอย่างที่ผมได้ทำเพิ่มขึ้นมาก็คือการได้ใช้งาน Amazon EC2 ซึ่งทำให้ผมต้อง Config, Install, Setting ทุกอย่างเองทั้งหมด แม้บางอย่างทางระบบจะเตรียมมาให้แล้วใช้งานไม่ยาก แต่ก็มีบางอย่างที่ยากเอาการอยู่เหมือนกัน

เช่นปัญหาอันนี้ซึ่งสำหรับเว็บผมว่ามันเป็นปัญหาค่อนข้างใหญ่นะ เพราะผมใช้ GraphicsMagick เพื่อใช้ในการ Resize รูปและ Crop รูปทั้งหมดด้วย แต่เมื่อวันก่อนผมพบว่า ทางเว็บที่ผมทำการ mupx deploy ขึ้นไปนั้นไม่สามารถใช้คำสั่ง gm ซึ่งเป็นคำสั่งของ GraphicsMagick ได้เนื่องจากอะไรบางอย่าง

ผมใช้เวลาหลายวันเลยทีเดียวแหละกว่าจะพบคำตอบวิธีทำซึ่งก็ไม่ได้คิดเองนะ Search Google จนเจอคำตอบนึง แต่เห็นว่าตอนแรกหาอะไรบางอย่างไม่เจอ และมันยุ่งยากเกินไป จึงไปลองวิธีอื่นๆ ก่อน สุดท้ายจึงมาใช้วิธีของเค้านั่นแหละ แล้วก็ได้เลย

ก่อนจะเล่าถึงวิธีการแก้ไขปัญหานี้ได้ผมขอเล่าให้ฟังก่อนว่า ก่อนที่จะทำนั้นผมได้ลองอะไรไปบ้างเท่าที่ผมคิดได้ เรียกได้ว่าเป็นมหากาพย์กันเลยทีเดียว

  1. ลองติดตั้ง graphicsmagick บน Ubuntu Server ด้วยคำสั่ง sudo apt-get install graphicsmagick
  2. เห็น Error ทาง Logs บอกให้เช็คว่า $PATH ลิงก์ไปที่ Binaries ก็จัดการแก้ $PATH
  3. เมื่อเริ่มสังเกตุว่า mupx ใช้ docker ในการ deploy เลยใช้คำสั่ง docker exec -it <containerName> apt-get install graphicsmagick ซึ่งติดตั้งได้ ตอนนี้ docker เห็นคำสั่ง gm แล้ว แต่บนเว็บยังไม่สามารถใช้งานได้

จนมาเจอวิธีที่แก้ปัญหาได้คือ ต้องสั่ง RUN apt-get install graphicsmagick ก่อนที่ docker จะทำการ run ซึ่งต้องไปแก้ที่ start.sh จะอยู่ใน /opt/<containerName>/config สามารถสั่ง vim /opt/<containerName>/config/start.sh ทำการแก้ไขได้เลย

[js]
โดยแก้จาก
set e+
docker pull meteorhacks/meteord:base
set e-

เป็น
set e-
docker build -t meteorhacks/meteord:app – << EOF
FROM meteorhacks/meteord:base
RUN apt-get update
RUN apt-get install graphicsmagick -y
EOF

และส่วนด้านล่างของ start.sh ใน docker run
ให้แก้ทุกจุดที่เป็น meteorhacks/meteord:base
เป็น meteorhacks/meteord:app ทั้งหมด
ซึ่งมันก็มีอยู่แค่ 2 จุดแหละ
[/js]

หลังจากแก้เสร็จสั่ง mupx restart เลย … ปั๊บ!! ใช้งานได้ วู้ววววว นี่แหละสวรรค์… แต่เดี๋ยวก่อน… ลอง Deploy ใหม่ …. อ้าว start.sh กลับเป็นค่าเดิมอีกแล้ว ถ้าอย่างนั้นทุกครั้งที่เรา mupx deploy เราต้องมาแก้ใหม่ทุกครั้งอย่างนั้นหรอ มันดูจะไม่เวิร์คนะ

ก็เลยไปหาอีกว่าตัวหลักมันอยู่ตรงไหนก็ไปเจอใน StackOverflows อีกตามเคย เว็บคู่ใจชาวโปรแกรมเมอร์อย่างเราจริงๆ

เราก็ไปตามที่อยู่นี้ในเครื่องของเราเลย

[js]/usr/local/lib/node_modules/mupx/templates/linux[/js]

พอเข้าไปจะเจอไฟล์ start.sh ที่เป็น readonly file ก่อนจะแก้ใช้  sudo กันด้วยนะเพื่อให้บันทึกได้

เข้าไปแก้ที่ template หลักนี้ก็แก้เหมือนกับที่แก้บน Server จริงเลย แต่ทีนี้เราก็ไม่ต้องคอยมาแก้อีกรอบแล้ว

เรียบร้อย!!! การแก้ให้ใช้งาน GraphicsMagick ได้อย่างสมบูรณ์แล้ว จบไปอีก 1 ปัญหา