การดีพลอยขึ้นเว็บ

บทแทรก 2.5

แปลไปแล้ว

ในบทนี้ คุณจะได้

  • รู้วิธีดีพลอยไปที่ Meteor.com
  • รู้วิธีดีพลอยไปที่ Modulus
  • รู้วิธีดีพลอยขึ้นเซิร์ฟเวอร์ของคุณเองด้วย Meteor Up
  • คนบางคนชอบที่จะทำงานเงียบๆ จนกว่าโครงการจะเสร็จสมบูรณ์ ในขณะที่คนอื่นๆ อดใจรอไม่ไหวที่จะแสดงให้โลกรับรู้ในทันทีที่ทำได้

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

    โดยเราจะมาเรียนวิธีการดีพลอยแอพ Meteor หลายๆแบบ ซึ่งคุณสามารถนำแบบไหนไปใช้ก็ได้ในระหว่างที่คุณกำลังสร้างแอพ ไม่ว่าคุณกำลังสร้างแอพ Microscope หรือแอพ Meteor ตัวอื่นๆ ถ้าพร้อมแล้วก็มาเริ่มกันเลย!

    รู้จักกับบทแทรก

    บทเรียนนี้เป็น บทแทรก (sidebar) ซึ่งเจาะลึกลงไปในเรื่องของ Meteor มากขึ้นและเนื้อหาก็แยกออกมาจากเรื่องอื่นในหนังสือ

    ดังนั้นถ้าคุณต้องการจะสร้างแอพ Microscope คุณก็สามารถข้ามบทนี้ไปก่อนได้ แล้วค่อยกลับมาอ่านอีกครั้ง

    ดีพลอยไปที่ Meteor

    การดีพลอยไปที่โดเมนย่อยของ Meteor (เช่น http://myapp.meteor.com) เป็นทางเลือกที่ง่ายที่สุด และเป็นวิธีแรกที่เราจะลองกัน วิธีนี้ช่วยให้คุณสามารถโชว์แอพให้คนอื่นๆเห็นได้ตั้งแต่ตอนเริ่มทำ หรือใช้เพื่อทำเป็นเซิร์ฟเวอร์ทดสอบชั่วคราวก่อนนำไปใช้งานจริงก็ได้

    ดีพลอยไปที่ Meteor นั้นง่ายมาก แค่เปิดเทอร์มินอล แล้วไปที่โฟลเดอร์แอพ Meteor ของคุณ จากนั้นก็พิมพ์ :

    meteor deploy myapp.meteor.com
    

    โดยคุณต้องเปลี่ยนชื่อ “myapp” ด้วยชื่อที่คุณเลือกไว้ และยังไม่มีใครเอาไปใช้

    ถ้าคุณทำการดีพลอยเป็นครั้งแรก คุณจะถูกขอให้สร้างบัญชีผู้ใช้ที่ Meteor เมื่อคุณดำเนินการเสร็จ ไม่กี่วินาทีหลังจากนั้นคุณก็สามารถเรียกใช้แอพของคุณได้ที่ http://myapp.meteor.com

    ทั้งนี้คุณสามารถใช้ หน้าเอกสารหลักของ Meteor เพื่อค้นหาข้อมูลเพิ่มเติม เช่น การเข้าถึงฐานข้อมูลที่แอพคุณกำลังใช้ หรือการใช้ชื่อโดเมนอื่นกับแอพของคุณ

    ดีพลอยไปที่ Modulus

    Modulus เป็นทางเลือกที่เยี่ยมอันหนึ่งในการดีพลอยแอพ Node.js ทั้งยังเป็นหนึ่งในไม่กี่ตัวซึ่งเป็น Paas (platform-as-a-service) ที่รองรับการใช้งาน Meteor อย่างเป็นทางการ และก็มีบางคนรันแอพที่ใช้งานจริงอยู่บนนั้นด้วย

    ซึ่งคุณสามารถศึกษาข้อมูลเพิ่มเติมเกี่ยวกับ Modulus โดยอ่านเพิ่มเติมได้จาก คู่มือการดีพลอยแอพ Meteor ที่เว็บ Modulus

    ดีพลอยด้วย Meteor Up

    ถึงแม้ว่าจะมีบริการคลาวด์เซิร์ฟเวอร์ใหม่ๆเกิดขึ้นทุกวัน มันก็มักจะมาพร้อมกับปัญหาและข้อจำกัดอยู่เสมอ ดังนั้น ณ วันนี้ การดีพลอยแอพไปที่เซิร์ฟเวอร์ของคุณเองก็ดูจะเป็นวิธีดีที่สุดที่จะนำแอพ Meteor มาใช้งานจริง สิ่งเดียวที่จะเป็นปัญหาก็คือ การดีพลอยด้วยตัวคุณเองนั้นไม่ใช่เรื่องง่าย โดยเฉพาะเมื่อคุณต้องการดีพลอยขึ้นไปใช้กับงานจริง

    Meteor Up (หรือเรียกสั้นๆว่า mup) เป็นความพยายามที่จะแก้ปัญหานั้น โดยโปรแกรมเสริมแบบคอมมานด์ไลน์นี้จะช่วยคุณติดตั้งและดีพลอยแอพได้ ดังนั้นเราจะมาดูวิธีการดีพลอยแอพ Microscope ด้วย Meteor Up กัน

    ก่อนอื่นเราจำเป็นต้องมีเซิร์ฟเวอร์ที่ใช้ดีพลอย เราขอแนะนำที่ Digital Ocean ซึ่งเริ่มที่แค่ $5 ต่อเดือน หรือที่ AWS ที่มี Micro instances ให้ใช้ฟรื (เมื่อใช้ไปซักพักคุณก็จะพบข้อจำกัดเรื่องการขยายระบบ แต่มันก็เพียงพอที่คุณจะทดสอบการใช้ Meteor Up)

    ทั้งนี้ไม่ว่าคุณจะใช้บริการที่ไหน สิ่งที่คุณได้มาก็คือ หมายเลขไอพีของเซิร์ฟเวอร์, ชื่อล็อกอิน (ปกติจะเป็น root หรือ ubuntu) และรหัสผ่าน ให้เก็บข้อมูลพวกนี้ไว้ในที่ปลอดภัย เพราะเราจำเป็นต้องใช้ในไม่ช้านี้ !

    เตรียมการใช้ Meteor Up

    แรกสุด เราจำเป็นต้องติดตั้ง Meteor Up ด้วย npm ดังนี้

    npm install -g mup
    

    จากนั้นเราจะสร้างโฟลเดอร์พิเศษแยกออกมาต่างหากเพื่อเก็บค่าการติดตั้งของการดีพลอยแต่ละตัว ที่เราต้องแยกโฟลเดอร์ออกมานั้นมีเหตุผลสองอย่าง อันดับแรกก็คือ มันจะดีที่สุดถ้าเราแยกข้อมูลสำคัญส่วนตัวออกมาจาก Git repo โดยเฉพาะเมื่อคุณกำลังทำงานกับโค้ดที่ใครก็เข้าถึงได้

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

    ตอนนี้เราก็มาสร้างโปรเจกต์ Meteor Up กัน โดยเราจะสร้างโฟลเดอร์ขึ้นใหม่ และเตรียมการดีพลอยด้วยคำสั่งดังนี้

    mkdir ~/microscope-deploy
    cd ~/microscope-deploy
    mup init
    

    แบ่งปันด้วย Dropbox

    วิธีการอันยอดเยี่ยมที่จะช่วยให้คุณและทีมคุณใช้ข้อมูลการดีพลอยเหมือนกันได้ก็คือ สร้างโฟลเดอร์เก็บค่าการติดตั้งของ Meteor Up ไว้ภายในโฟลเดอร์ Dropbox หรือบริการอื่นๆที่คล้ายคลึงกัน

    การตั้งค่าให้ Meteor Up

    ในขณะที่กำลังเตรียมการดีพลอยในโปรเจกต์ใหม่นั้น Meteor Up จะสร้างไฟล์ขึ้นมาสองไฟล์ให้คุณคือ mup.json และ settings.json

    mup.json จะเก็บค่าที่เกี่ยวข้องกับการดีพลอยไว้ทั้งหมด ส่วน settings.json จะเก็บค่าที่เกี่ยวข้องกับแอพ เช่น โทเคนของ OAuth , โทเคน analytic และอื่นๆ

    ขั้นตอนต่อไปคือการตั้งค่า mup.json ของคุณ โดยที่คุณต้องทำทั้งหมดคือ เติมข้อมูลลงไปในไฟล์ตั้งต้น mup.json ที่สร้างจาก mup init ดังนี้

    {
      //server authentication info
      "servers": [{
        "host": "hostname",
        "username": "root",
        "password": "password"
        //or pem file (ssh based authentication)
        //"pem": "~/.ssh/id_rsa"
      }],
    
      //install MongoDB in the server
      "setupMongo": true,
    
      //location of app (local directory)
      "app": "/path/to/the/app",
    
      //configure environmental
      "env": {
        "ROOT_URL": "http://supersite.com"
      }
    }
    
    mup.json

    ตอนนี้เราจะมาดูค่าแต่ละตัวกัน

    ข้อมูลการพิสูจน์ตัวตนบนเซิร์ฟเวอร์ (server authentication info)

    คุณจะสังเกตุได้ว่า Meteor Up รองรับทั้งการพิสูจน์ตัวตนด้วยรหัสผ่าน และการใช้คีย์ส่วนตัว (PEM) ดังนั้นมันจึงใช้งานได้กับแทบทุกบริการบนคลาวด์

    สิ่งสำคัญ ถ้าคุณใช้การพิสูจน์ตัวตนด้วยรหัสผ่าน คุณต้องมั่นใจว่าได้ติดตั้งโปรแกรม sshpass ไว้แล้วนะ (ดูวิธีการได้ที่นี้)

    ข้อมูลการติดตั้ง MongoDB (install MongoDB in the server)

    ต่อมาคือการตั้งค่าฐานข้อมูล MongoDB ให้แอพคุณ เราขอแนะนำให้ใช้ Compose หรือบริการ MongoDB บนคลาวด์เจ้าไหนก็ได้ เนื่องจากเราจะได้ทั้งการช่วยเหลือแบบมืออาชีพและเครื่องมือจัดการฐานข้อมูลที่ดีกว่า

    และถ้าคุณเลือกที่จะใช้ Compose ก็ให้ตั้งค่า setupMongo เป็น false และเพิ่มตัวแปรระบบ MONGO_URLเข้าไปในบล็อก env ของไฟล์ mup.json แต่ถ้าคุณเลือกให้ Meteor Up ติดตั้ง MongoDB คุณก็แค่ตั้งค่า setupMongo เป็น true แค่นี้ Meteor Up ก็จะจัดการส่วนที่เหลือให้เอง

    พาธของแอพ Meteor (location of app)

    เนื่องจากข้อมูลค่าการติดตั้งของ Meteor Up อยู่คนละโฟลเดอร์กับแอพ เราจึงจำเป็นต้องบอกให้ Meteor Up รู้ว่าแอพอยู่ที่ไหนด้วยการตั้งค่า app คุณก็แค่ป้อนค่าพาธของแอพที่อยู่บนเครื่องคุณเข้าไป โดยคุณสามารถหาค่าพาธนี้ได้โดยเปิดโปรแกรมเทอร์มินอล แล้วไปที่โฟลเดอร์แอพ จากนั้นก็ป้อนคำสั่ง pwd คุณก็จะได้ค่าพาธของแอพออกมา

    ตัวแปรระบบ (configure environmental)

    คุณสามารถที่จะกำหนดค่าตัวแปรระบบของแอพคุณทั้งหมด เช่น ROOT_URL, MAIL_URL, MONGO_URL และอื่นๆ ได้ภายในบล็อก env

    Setting Up and Deploying

    ก่อนที่เราจะสั่งดีพลอย เราก็ต้องติดตั้งเซิร์ฟเวอร์ให้พร้อมสำหรับการรันแอพ Meteor ซึ่ง Meteor Up ได้ทำให้ขั้นตอนนี้ง่ายเหลือเพียงแค่คำสั่งเดียว!

    mup setup
    

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

    mup deploy
    

    ซึ่งจะทำการผนวกแอพ Meteor ของคุณเข้าด้วยกัน แล้วดีพลอยไปที่เซิร์ฟเวอร์ที่เราเพิ่งติดตั้งไว้

    การแสดงล็อก

    ล็อกการใช้งานเป็นสิ่งสำคัญที่จำเป็น และ Meteor Up ก็ได้เตรียมวิธีการง่ายๆให้เราจัดการมันโดยการจำลองคำสั่ง tail -f ด้วยคำสั่งนี้

    mup logs -f
    

    ถึงตรงนี้ เราก็ได้เห็นภาพรวมการใช้งาน Meteor Up กันแล้ว ถ้าคุณต้องการข้อมูลมากกว่านี้ เราแนะนำให้คุณไปที่ หน้า GitHub ของ Meteor Up

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