Deploy Ruby on Rails บน Shared Hosting DirectAdmin ทีละขั้นตอน

Ruby on Rails เป็นเฟรมเวิร์ก web ยอดนิยมที่ใช้ภาษา Ruby ในการพัฒนา และมีชุมชนผู้พัฒนาอันแข็งแกร่ง หลายคนอยากสร้าง Rails app ของตัวเองแต่สับสนว่าควรใช้ hosting ประเภทไหน บทความนี้จะอธิบายวิธีติดตั้ง Ruby on Rails บน shared hosting ที่ใช้ DirectAdmin ระบบควบคุมที่ AsiaGB ให้บริการ พร้อมเหตุผลว่าทำไมบางครั้ง VPS ถึงเป็นตัวเลือกที่ดีกว่า

Ruby on Rails คืออะไร

Ruby on Rails (รู้จักกันว่า Rails) เป็นเฟรมเวิร์ก web framework ที่ประกอบด้วยไลบรารี่และเครื่องมือสำหรับสร้าง web application บนภาษา Ruby เร็ว Rails เน้นการพัฒนาอย่างว่องไว (agile development) และ convention over configuration ซึ่งหมายความว่าไม่ต้องตั้งค่ามาก ๆ ผู้พัฒนาก็สามารถเข้มข้นไปในการเขียนโค้ด business logic ได้ Rails ใช้ทั่วไปในการสร้าง e-commerce sites, CMS, social networks และแอปพลิเคชันที่ต้องการฐานข้อมูลที่ซับซ้อน

Shared Hosting มีความสามารถเพียงพอไหม

ที่นี่คือจุดกลายเป็นปัญหาของหลายคน shared hosting เช่น AsiaGB ที่ใช้ DirectAdmin ได้ออกแบบมาสำหรับแอปพลิเคชัน PHP (WordPress, Joomla) เป็นหลัก แม้ว่า SSH access อาจมีให้ แต่การรัน Rails app เต็มตัวต้องการเซิร์ฟเวอร์ web ที่รองรับ Passenger หรือ Puma ซึ่งต้องการการตั้งค่าระดับ root ส่วนใหญ่ shared hosting ไม่ยอมให้ทำอย่างนั้น ดังนั้นก่อนตัดสินใจ ต้องตรวจสอบกับฝ่ายสนับสนุนของ hosting ของคุณว่า:

ความต้องการพื้นฐานสำหรับ Rails บน Shared Hosting

ก่อนติดตั้ง Rails บน shared hosting ต้องแน่ใจว่ามีส่วนประกอบเหล่านี้อยู่เรียบร้อย:

ขั้นตอนติดตั้ง Ruby on Rails บน DirectAdmin

สมมติว่า DirectAdmin อนุญาตให้ติดตั้ง Rails แล้ว ขั้นตอนโดยทั่ว ๆ ไปมีดังนี้:

  1. SSH เข้าสู่เซิร์ฟเวอร์ ด้วย username และ password ของ DirectAdmin
  2. ตรวจสอบ Ruby version รันคำสั่ง ruby -v ดูว่ามี Ruby ติดตั้งหรือไม่
  3. ติดตั้ง Bundler รัน gem install bundler เพื่อให้เตรียมพร้อมสำหรับจัดการ gems
  4. สร้างหรือ clone Rails app นำ code Rails มาใส่ใน public_html หรือ subfolder ที่เหมาะสม
  5. รัน bundle install ในโฟลเดอร์ app เพื่อดึง dependencies ทั้งหมด
  6. ตั้งค่า Passenger config file สร้าง passenger_wsgi.py หรือ config.ru ตามที่ server ต้องการ
  7. ตั้งค่า database สร้างฐานข้อมูล MySQL ใหม่ และปรับ config/database.yml ให้ถูกต้อง
  8. รัน migrations ด้วยคำสั่ง bundle exec rake db:migrate

ข้อจำกัดที่ต้องรับรู้

ปัญหาของการรัน Rails บน shared hosting ส่วนใหญ่มาจากข้อจำกัดของสภาพแวดล้อม คุณอาจจะพบเจอ:

ทำไม VPS จึงเป็นตัวเลือกที่ดีกว่าสำหรับ Rails

หลายคนเมื่อเริ่มใช้ Rails บน shared hosting แล้วติดปัญหาก็เลยเลือก VPS LinuxStandard AsiaGB VPS ราคาเริ่มต้นเพียง 500 บาท/เดือน มี SSH root access เต็มแบบ คุณควบคุมได้ว่า:

AsiaGB VPS ที่ตั้งอยู่ในไทย (CS Loxinfo) หรือสิงคโปร์ (OVHcloud) มีทั้งระบบอัตโนมัติ backup 2 ครั้ง/เดือน และ uptime 99% เหมาะสำหรับ Rails apps ที่เคยทดสอบจากเสร็จแล้วพร้อม production

ขั้นตอนวางแผนทั้งหมด

ถ้าตัดสินใจใช้ Rails กับ hosting ใดๆ ก็ตาม ให้ปฏิบัติตามนี้:

  1. ขั้นที่ 1: ทดสอบบน local machine สร้าง Rails app และทำงานให้เสร็จเต็มตัว ลงท้ายด้วย Git push
  2. ขั้นที่ 2: ตรวจสอบความเข้ากัน ยืนยันกับฝ่ายสนับสนุน hosting ว่า Rails version และ dependencies ของ app รองรับบน server หรือไม่
  3. ขั้นที่ 3: ติดตั้ง staging ตั้ง app test ไว้บน server staging ก่อน ให้ดำเนินการผ่านจนไม่มีปัญหา
  4. ขั้นที่ 4: ไปยัง production เมื่อ staging วิ่งได้แล้ว คู่ config ไปยัง production domain ด้วยความเชื่อมั่น

บอกเด็ดขาด: ถ้า Rails app ที่คุณสร้างเป็นแบบ toy/testing ขนาดเล็ก shared hosting อาจจะพอใช้ได้ แต่ถ้าเป็นแอปฐานรายได้ที่ต้องเชื่อถือได้แนะนำให้ใช้ VPS ของ AsiaGB ราคาเดือนละ 500 บาท พบได้ว่าคุ้มค่ากว่าวุ่นวายกับข้อจำกัดของ shared hosting

คำถามที่พบบ่อย (FAQ)

Shared hosting ทั่วไปของ AsiaGB รองรับ Ruby on Rails ได้ไหม

AsiaGB shared hosting ใช้ DirectAdmin control panel พร้อม SSH access และ Ruby สามารถติดตั้ง Bundler ได้ แต่ต้องตรวจสอบว่าเซิร์ฟเวอร์มี Phusion Passenger สำหรับ Ruby หรือไม่ หากไม่มี ก็ยากที่จะรันเป็น background process ขอแนะนำใช้ VPS แทนเพื่อความจำกัดสูง

Ruby Gem ที่มี native extension ติดตั้งได้ไหมบน shared hosting

ยากมาก เพราะ native extensions ต้องคอมไพล์โค้ด C/C++ ซึ่งต้อง build tools (gcc, make, ruby-dev) ที่ shared hosting ส่วนใหญ่ห้ามติดตั้ง ถ้า Gem ที่ใช้มี dependencies แบบนี้ ควรพิจารณา VPS Linux ที่มี root access แทน

Rails app ต้องรัน background jobs ได้ไหมบน shared hosting

ได้บ้าง ถ้าตั้ง cron jobs ให้ rake tasks ทำงานในช่วงเวลาปกติ แต่ถ้าต้องการ real-time background processing ด้วย Sidekiq/Resque ต้องเปิด Redis connection ตั้งแต่ตัว Rails app ซึ่ง shared hosting ส่วนใหญ่ไม่รองรับ

Database ใช้ MySQL ได้ไหมกับ Rails

ได้ Rails ใช้ MySQL ผ่าน mysql2 gem ได้ดี AsiaGB shared hosting มี MySQL พร้อมใช้ โดยต้องแน่ใจว่า mysql2 gem compile ได้บน server (อาจมีปัญหากับ native extension)

ต้องการความยืดหยุ่นมากขึ้นสำหรับ Rails

VPS Linux AsiaGB เริ่มต้น 500 บาท/เดือน ให้คุณ root access เต็มแบบ ตั้งค่า Ruby, Passenger, และ dependencies ได้อย่างเต็มที่

ดูแพ็กเกจ VPS

ดูแพ็กเกจ Hosting ไทย ราคาถูกทั้งหมด →