
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 ของคุณว่า:
- มี Phusion Passenger รองรับ Ruby หรือไม่
- สามารถตั้งค่า Passenger app ด้วย public_html ได้ไหม
- Ruby version ไหน (2.6, 2.7, 3.0 ขึ้นไป) ที่เซิร์ฟเวอร์มี
- มี build tools (gcc, make) สำหรับคอมไพล์ native gems ได้ไหม
ความต้องการพื้นฐานสำหรับ Rails บน Shared Hosting
ก่อนติดตั้ง Rails บน shared hosting ต้องแน่ใจว่ามีส่วนประกอบเหล่านี้อยู่เรียบร้อย:
- SSH Access — ต้องเข้า terminal ของเซิร์ฟเวอร์ เพื่อติดตั้ง Ruby packages และรัน Bundler
- Ruby Runtime — Ruby version 2.6 ขึ้นไป เช่น 3.0 หรือ 3.1 ที่มี native extensions support
- Bundler — เครื่องมือจัดการ dependencies ของ Rails app ต้อง gem install bundler ให้ได้ก่อน
- Passenger หรือ Puma — app server ที่รันตัว Rails application โดยทั่วไป Phusion Passenger บน Nginx/Apache เป็นตัวเลือกจำนวน shared hosting
- MySQL หรือ PostgreSQL — Rails ใช้ฐานข้อมูล AsiaGB shared hosting มี MySQL พร้อมใช้
- Git — ถ้าต้องการดึง code จาก GitHub (ไม่บังคับ)
ขั้นตอนติดตั้ง Ruby on Rails บน DirectAdmin
สมมติว่า DirectAdmin อนุญาตให้ติดตั้ง Rails แล้ว ขั้นตอนโดยทั่ว ๆ ไปมีดังนี้:
- SSH เข้าสู่เซิร์ฟเวอร์ ด้วย username และ password ของ DirectAdmin
- ตรวจสอบ Ruby version รันคำสั่ง
ruby -vดูว่ามี Ruby ติดตั้งหรือไม่ - ติดตั้ง Bundler รัน
gem install bundlerเพื่อให้เตรียมพร้อมสำหรับจัดการ gems - สร้างหรือ clone Rails app นำ code Rails มาใส่ใน public_html หรือ subfolder ที่เหมาะสม
- รัน bundle install ในโฟลเดอร์ app เพื่อดึง dependencies ทั้งหมด
- ตั้งค่า Passenger config file สร้าง
passenger_wsgi.pyหรือconfig.ruตามที่ server ต้องการ - ตั้งค่า database สร้างฐานข้อมูล MySQL ใหม่ และปรับ
config/database.ymlให้ถูกต้อง - รัน migrations ด้วยคำสั่ง
bundle exec rake db:migrate
ข้อจำกัดที่ต้องรับรู้
ปัญหาของการรัน Rails บน shared hosting ส่วนใหญ่มาจากข้อจำกัดของสภาพแวดล้อม คุณอาจจะพบเจอ:
- ไม่มี root access — ห้ามติดตั้ง system packages ใหม่ (เช่น ImageMagick, Redis) ที่ native extensions ต้องการ
- Ruby version ล้าสมัย — บางครั้ง shared hosting มี Ruby 2.5 ซึ่ง Rails 6+ ไม่รองรับ
- ไม่มี background job processing — Sidekiq/Resque ต้อง Redis หรือ message broker ที่ shared hosting ส่วนใหญ่ไม่มี
- Passenger ไม่เข้ากัน — ถ้าเซิร์ฟเวอร์ติดตั้ง mod_passenger แต่ไม่ได้ configure สำหรับ Ruby app จะรันไม่ได้
- Native gem compilation failures — Gems เช่น nokogiri, mysql2 ต้อง build-essential ที่ shared hosting ไม่มี
ทำไม VPS จึงเป็นตัวเลือกที่ดีกว่าสำหรับ Rails
หลายคนเมื่อเริ่มใช้ Rails บน shared hosting แล้วติดปัญหาก็เลยเลือก VPS LinuxStandard AsiaGB VPS ราคาเริ่มต้นเพียง 500 บาท/เดือน มี SSH root access เต็มแบบ คุณควบคุมได้ว่า:
- ติดตั้ง Ruby version ไหนก็ได้ (rbenv, RVM)
- ติดตั้ง Phusion Passenger, Puma, Unicorn เลือกตัวไหนก็ได้
- ติดตั้ง Redis, Sidekiq สำหรับ background jobs
- ติดตั้ง build tools (gcc, make, ruby-dev) เอาไปใช้กับ gems ใด ๆ
- ตั้งค่า Nginx/Apache ให้ตรงกับความต้องการของ app
AsiaGB VPS ที่ตั้งอยู่ในไทย (CS Loxinfo) หรือสิงคโปร์ (OVHcloud) มีทั้งระบบอัตโนมัติ backup 2 ครั้ง/เดือน และ uptime 99% เหมาะสำหรับ Rails apps ที่เคยทดสอบจากเสร็จแล้วพร้อม production
ขั้นตอนวางแผนทั้งหมด
ถ้าตัดสินใจใช้ Rails กับ hosting ใดๆ ก็ตาม ให้ปฏิบัติตามนี้:
- ขั้นที่ 1: ทดสอบบน local machine สร้าง Rails app และทำงานให้เสร็จเต็มตัว ลงท้ายด้วย Git push
- ขั้นที่ 2: ตรวจสอบความเข้ากัน ยืนยันกับฝ่ายสนับสนุน hosting ว่า Rails version และ dependencies ของ app รองรับบน server หรือไม่
- ขั้นที่ 3: ติดตั้ง staging ตั้ง app test ไว้บน server staging ก่อน ให้ดำเนินการผ่านจนไม่มีปัญหา
- ขั้นที่ 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