ปัญหาหนึ่งของโปรแกรมเมอร์ เอาผมเองเป็นตัวอย่างเลยละกัน ก็คือ เซอวิสบางตัวที่อยากจะทดลองเขียนโค้ด PHP ติดต่อ มันติดตั้งบนวินโดวลำบากมาก บางครั้งก็ติดตั้งไม่ได้เอาเสียเลย อย่าง elasticsearch เงี้ย memcache เงี้ย vanish เงี้ย มันจึงเป็นการสะดวกกว่าหากจำลองเครื่องเซิฟเวอร์ลินุกซ์มาใช้งานเสียเองเลย ทีนี้ มันก็สามารถสร้าง virtual machine แล้วติดตั้ง ubuntu เวอร์ชั่นเซิฟเวอร์ ลงไปเองทั้งหมด มันก็ได้นะ แต่มันเสียเวลาไง คอนฟิกโน่นนี่นั่น ชิบหายกันเลยทีเดียว ไอ้เราเองก็ไม่ได้กะจะเอาดีทางแอดมินอยู่แล้ว กะจะเอาแค่พอใช้พอ มันจึงต้องหาเครื่องมือมาช่วยอำนวยความสะดวก คำตอบนั้นคือ vagrant

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

เครื่องปรุง

  1. virtualbox ไว้สร้างเครื่องจำลอง
  2. vagrant เป็นเครื่องมือไว้ควบคุมเครื่องที่จำลองขึ้นมา
  3. laravel/homestead ไฟล์ Ubuntu ที่ติดตั้งเครื่องมือสำหรับพัฒนาไว้พร้อม
  4. homestead config file
  5. puttygen ไว้สำหรับสร้าง public key และ private key
  6. putty ไว้สำหรับล้อกอินเข้าเครื่องจำลอง

ลำดับขั้นตอนด้านล่าง ถึงถูกแบ่งออกเป็นเซ็กชั่นย่อย ๆ แต่ก็ต้องกระทำการไปตามลำดับ

ติดตั้ง Virtualbox

  1. เข้าเว็บ  https://www.virtualbox.org/wiki/Downloads ดาวน์โหลด virtualbox  เลือก VirtualBox for Windows hosts2014-09-14_1057
  2. ดับเบิลคลิกไฟล์ที่ดาวน์โหลดมา เพื่อเข้าสู่กระบวนการติดตั้ง หน้าต่างแรกจะถูกเปิดขึ้นมา ให้คลิก Next
    2014-09-14_1059
  3. ไม่ต้องปรับแต่งอะไร คลิก Next
    2014-09-14_1100
  4. คลิก Next
    2014-09-14_1100_001
  5. มี Warning อะไรก็ไม่รู้แจ้งเตือนมา ไม่ต้องสนใจ คลิก Yes สถานเดียว
    2014-09-14_1100_002
  6. คลิก Install เพื่อเริ่มการติดตั้ง
    2014-09-14_1100_003
  7. เมื่อถึงหน้าจอนี้ ทำได้อย่างเดียวคือรอ เดินไปหากาแฟกิน หรือ นั่งเฝ้าก็ได้เพราะแป้บเดียว
    2014-09-14_1100_004
  8. ติ๊กเครื่องหมายหน้า Start Oracle VM Virtualbox 4.3.16 after installation ออก แล้วคลิก Finish
    2014-09-14_1101

ติดตั้ง vagrant

  1. เข้าไปยังเว็บไซต์ https://www.vagrantup.com/downloads.html คลิกดาวน์โหลดตัว Windows บันทึกไฟล์ไว้ตรงไหนสักแห่งที่สะดวกต่อการดับเบิลคลิก ติดตั้ง
    2014-09-14_1102
  2. ดับเบิลคลิกไฟล์ vagrant ที่ดาวน์โหลดมา เข้าสู่กระบวนการติดตั้ง หน้าจอแรกเปิดขึ้นมาให้คลิก Next
    2014-09-14_1103
  3. ติ๊กถูกหน้า I accept the term in the License Agreement แล้วคลิก Next
    2014-09-14_1103_001
  4. หน้าต่างเลือกพาธสำหรับติดตั้ง vagrant ซึ่งไม่ต้องเปลี่ยนหรอก ปล่อยไว้อย่างเดิม แล้วคลิก Next
    2014-09-14_1103_002
  5. คลิกปุ่ม Install เพื่อทำการติดตั้ง
    2014-09-14_1103_003
  6. นั่งรอ
    2014-09-14_1104
  7. เมื่อการติดตั้งเรียบร้อยแล้ว ให้คลิกปุ่ม Finish
    2014-09-14_1105
  8. หลังคลิกปุ่ม Finish จะมีหน้าต่างแจ้งขึ้นมาว่าให้ Restart เครื่อง คลิกปุ่ม Yes ไปครับ Restart เครื่องไปสักทีนึงก่อน
    2014-09-14_1106

ติดตั้ง laravel/homestead

  1. เปิด command line tool ขึ้นมา ซึ่งพาธที่แสดงเริ่มต้นน่าจะอยู่ที่โฟลเดอร์ส่วนตัวของเราเอง ไม่ต้องเปลี่ยนไปพาธอื่น เล่นมันที่นี่แหละ อย่างของผมมันจะอยู่ที่ C:\Users\watcharamet ให้พิมพ์คำสั่งด้านล่างเข้าไปแล้วกดปุ่ม Enter
    vagrant box add laravel/homestead

    2014-09-14_1114

  2. ตัว vagrant จะทำการดาวน์โหลด image file homestead (ซึ่งมันก็คือ ubuntu ที่ติดตั้งเครื่องมือสำหรับพัฒนาไว้พร้อมแล้ว) ลงมายังเครื่องเรา ใส่เข้าไปใน virtualbox การจัดการเครื่องจำลองของเรา เราไม่ได้ทำผ่านตัว virtualbox เลย เราสั่งผ่านคำสั่งของ vagrant ให้ vagrant ไปสั่ง virtualbox อีกที ขึ้นตอนนี้ช้าหรือเร็วขึ้นอยู่กับความเร็วเน็ตของท่านล่ะ ได้แต่นั่งรอ
    2014-09-14_1117
  3. เมื่อขึ้นคำว่า Successful แสดงว่าเรียบร้อย
    2014-09-14_1225เข้าสู่ขั้นตอนต่อไป

ติดตั้ง homestead config file

  1. เข้าไปยังเว็บ https://github.com/laravel/homestead คลิกปุ่ม Download ZIP
    2014-09-14_1856
  2. ระเบิดซิปเอาเฉพาะไฟล์ เก็บไว้ที่ C:\Users\watcharamet\homestead (พาธของท่านก็ของท่านนะอย่าเลียนแบบผม)ข้างในจะมีไฟล์ประมาณนี้2014-09-26_0854

สร้าง public key และ private key

  1. ก่อนอื่นจะต้องดาวน์โหลดโปรแกรม puttygen มาก่อน โดยเข้าไปยังเว็บไซต์ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html คลิก puttygen.exe
    2014-09-14_1904
  2. ดับเบิลคลิกไฟล์ puttygen.exe ที่ดาวน์โหลดมา
  3. คลิกปุ่ม Generate หลังคลิกปุ่ม มันจะเริ่มสร้าง key ให้เอาเมาส์ไถๆวนๆ บนที่ว่างใหญ่ เหนือปุ่ม Generate ถ้าไม่ขยับเมาส์นะ แท็บ progress bar มันจะไม่เขยื้อนเลย เขย่าไปเรื่อยๆ จน progress bar เต็ม 100%
    2014-09-14_1906
  4. คลิกปุ่ม Save public key
    2014-09-14_1906_001
  5. ตั้งชื่อ public-key ไม่ต้องใส่นามสกุล เก็บไว้ที่ C:\Users\watcharamet\homestead (อย่าลืมว่าพาธท่านก็พาธท่าน พาธผมก็พาธผม เลือกให้ถูก ของผมผมเก็บไว้ที่เดียวกับ homestead config เลยจะได้หาง่าย)
    2014-09-14_1907
  6. กลับมาที่ putty gen อีกที คลิกปุ่ม Save private key มันอาจจะมีกล่องเตือนเรื่อง Passphrase แต่ไม่ต้องสนใจ ให้คลิกปุ่ม Yes ไป
    2014-09-14_1906_0012014-09-14_1908
  7. ตั้งชื่อ private-key (นามสกุลจะป้อนไปด้วยก็ได้ .ppk หรือไม่ป้อนเดี๋ยวมันก็จะบันทึกเป็น .ppk ให้เอง) เก็บไว้ที่ C:\Users\watcharamet\homestead (อย่าลืมว่าพาธท่านก็พาธท่าน พาธผมก็พาธผม เลือกให้ถูก ของผมผมเก็บไว้ที่เดียวกับ homestead config เลยจะได้หาง่าย)
    2014-09-14_1908_001

 

เข้าสู่กระบวนการปรับแต่งและรันเซิฟเวอร์

ถึงแม้จะบอกว่าเป็นกระบวนการปรับแต่ง ท่านอาจจะตั้งคำถามว่าไม่ปรับแต่งได้มั้ย บอกเลยว่า ไม่ได้ ไม่งั้นตอนรัน vagrant มันจะ Error

ก่อนการปรับแต่งให้เรารันคำสั่ง init.bat ก่อน

  1. รันคำสั่ง init.bat ในโฟลเดอร์ C:\Users\watcharamet\homestead ก่อนด้วย command line เพื่อสร้างไฟล์ Homestead.yaml
  2. เปิดไฟล์ C:\Users\watcharamet\homestead\Homestead.yaml ขึ้นมา แล้วแก้ไขให้เป็นดังนี้ เสร็จแล้วบันทึกซะ
    ---
    ip: "192.168.10.10"
    memory: 2048
    cpus: 1
     
    authorize: ~/homestead/public-key
     
    keys:
        - ~/homestead/private-key.ppk
     
    folders:
        - map: ~/code
          to: /home/vagrant/Code
     
    sites:
        - map: homestead.app
          to: /home/vagrant/Code/Laravel/public
     
    variables:
        - key: APP_ENV
          value: local

    *** อีไฟล์ปรับแต่งนี่ทำให้ผมเสียเวลาไปหลายวันกว่าจะเข้าใจมัน สิ่งที่ผมผิดพลาดคือ ผมคิดว่าในวินโดวการระบุพาธไปหาไฟล์ มันจะต้องใช้ \ (back slash) แต่เปล่าเลย มันใช้ / (foreword slash) เหมือนอย่างในลินุก ส่วนเครื่องหมาย ~/ มันหมายถึง  C:\Users\watcharamet ซึ่งเป็นโฟลเดอร์ประจำตัวของเราในเครื่อง ถ้าท่านทำตามผมมาตลอด ท่านใช้ตามนี้ได้เลย

    ip : คือหมายเลข ip ที่เราต้องการ assign ให้กับเครื่องเซิฟเวอร์ เวลาเราจะล้อกอินเข้าใช้งานเซิฟเวอร์ผ่าน ssh เราจะใช้ผ่าน ip หมายเลขนี้
    authorize : ระบุพาธไปยัง public key
    keys : ระบุพาธไปยัง private key
    folders : จะเป็นที่เก็บโค้ดที่จะซิงก์เข้าไปยังเซิฟเวอร์  ท่านต้องอ่านทำความเข้าใจมันเพิ่มเติมจากเว็บ http://laravel.com/docs/4.2/homestead#installation-and-setup ในหัวข้อ Configure Your Shared Folders
    sites : อ่านรายละเอียดจาก http://laravel.com/docs/4.2/homestead#installation-and-setup ว่ามันไว้ใช้ทำอะไร
    variables : อ่านรายละเอียดจาก http://laravel.com/docs/4.2/homestead#installation-and-setup ว่ามันไว้ใช้ทำอะไร

  3. เปิด command line ขึ้นมา เข้าไปยังพาธ C:\Users\watcharamet\homestead (ใช้คำสั่ง cd เอา) จากนั้นพิมพ์คำสั่ง
    vagrant up

    2014-09-26_0932

  4. หลังเสร็จสิ้นกระบวนการโหลด เราจะมีเครื่องเซิฟเวอร์จำลองพร้อมใช้งาน ซ้อนอยู่ในเครื่องของเรา 1 ตัว เราสามารถติดตั้งเซอวิสหรืออะไรก็ตามเข้าไปในเซิฟเวอร์ตัวนั้นได้ แต่ต้องทำผ่าน ssh  มือใหม่อาจจะงงๆ ให้ถามเอาจากแอดมินที่บริษัทนะ ว่ามันคืออะไร ใช้ทำอะไร และใช้ยังไง  จากในภาพถ้าอ่านจะเห็นว่า เราสามารถ ssh เข้าไปเครื่องเซิฟเวอร์ได้ผ่าน ip 127.0.0.1 พอร์ต 2222 username : vagrant password : vagrant (ในภาพไม่ได้แสดงพาสเวิร์ดออกมา ผมรู้เอาจากเว็บเจ้าของ homestead)
    2014-09-26_0936

 

ใช้โปรแกรม putty ล้อกอินเข้าสู่เซิฟเวอร์

  1. ดาวน์โหลดโปรแกรม putty จากเว็บ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html จะได้ไฟล์ putty.exe ที่พร้อมใช้งานโดยไม่ต้องติดตั้งมาตัวหนึ่ง2014-09-26_0943
  2. ดับเบิลคลิก putty.exe ที่ดาวน์โหลดมา และระบุรายละเอียดตามด้านล่าง แล้วกดปุ่ม Open2014-09-26_0946
    IP address : 127.0.0.1
    Port : 2222
  3. หน้าต่างดำๆจะเปิดขึ้นมาแล้ว ให้ล้อกอินด้วย username : vagrant, password : vagrant2014-09-26_0947
  4. ถ้าท่านป้อน username, password ไม่ผิดพลาด มาถึงขั้นตอนนี้เท่ากับว่า ตอนนี้คุณได้เข้าไปยังเครื่องเซิฟเวอร์แล้ว อยากจะติดตั้งเซอวิสอะไรเพิ่มเติมก็ทำเอาได้เลย ทีนี้ท่านคงต้องอ่านเรื่องราวเกี่ยวกับการจัดการเซิฟเวอร์แล้วล่ะ บางทีอาจจะต้องปรึกษาแอดมินประจำบริษัท2014-09-26_0947_001