ผมเพิ่งย้ายจาก OSX มาใช้ Windows ได้ประมาณ 2-3 อาทิตย์ ปัญหาของคนที่ใช้แมคทำงานเขียนโปรแกรม และใช้ command line เป็นส่วนใหญ่ในชีวิตประจำวันเลยคือ Windows จะสามารถรองรับคำสั่งแบบ *nix based ได้ไหม
ส่วนตัวแล้วไม่เคยหาข้อมูลมาก่อนเลย กลัวอย่างเดียวว่าจะไม่สามารถทำงานได้ต่อเนื่องแบบที่ใช้บนแมค(ผมใช้แมคมา 7 ปี) ถ้าการเปลี่ยนครั้งนึงจะทำให้ประสิทธิภาพในการทำงานลดลง ในช่วงที่มีงานเยอะๆ นี่คงไม่เหมาะแน่ๆ
แต่เปลี่ยนมาแล้ว ก็ต้องหาวิธีเอา จนมาพบกับ WSL ครับ
WSL หรือ Windows Subsystem for Linux เรียกได้ว่าเป็นตัวเสริมสำหรับคนใช้ Windows ที่ต้องการใช้งาน Linux รูปแบบต่างๆ ไปพร้อมกับตอนที่เราใช้งาน Windows ไม่ว่าจะเป็นใช้คำสั่งพวก cp, ls, mv ฯลฯ หรือจะทำงานเขียนโปรแกรมที่เป็น command line เป็นหลัก อย่างพวก docker, git, node หรือ rails พวกนี้
จากที่ลองติดตั้งทุกอย่างมาทั้งหมด ใช้งานมาร่วม 2 อาทิตย์ เลยพบว่าแทบไม่ต่างอะไรจากการเขียนโปรแกรมบน mac เลย (จะต่างก็อย่างเดียวคือต้องเปลี่ยนวิธีกดคีย์บอร์ด cmd – ctrl) วันนี้เลยอยากจะมาเขียนวิธีเริ่มติดตั้งเขียนโปรแกรมบน Windows เก็บไว้ใช้ในอนาคตแล้วกันครับ
ติดตั้ง WSL
ก่อนอื่นเราต้องอัพเดท Windows ให้สามารถติดตั้งหรือเป็น Insider Program ได้เสียก่อน โดยให้เข้าไปที่ Settings > Update & Security >Windows Insider Program แล้วกดปุ่ม Join ไมโครซอฟต์จะถามหาบัญชีเราที่ต้องการเข้าร่วม ให้กรอกข้อมูลหรือเลือกบัญชีให้เรียบร้อย แล้วกดติดตั้งได้เลย (ของผมเลือกแบบ Slow(Recommended) ซึ่งก็เพียงพอต่อการใช้งานแล้ว)
ในวันที่เขียนบทความนี้อยู่ การใช้ WSL จำเป็นต้องเข้า Insider Program แต่ได้ข่าวมาว่าในอนาคตจะสามารถติดตั้งได้โดยไม่ต้องเข้า Insider Program แล้ว ลองเช็คกันดูนะครับ
จากนั้นรีสตาร์ทเครื่องขึ้นมาใหม่แล้วเปิด PowerShell พิมพ์คำว่า
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
คำสั่งด้านบนจะเป็นการเปิดใช้งานฟังก์ชัน WSL บนวินโดว์ที่เราใช้อยู่ เมื่อกด enter แล้วอาจจะต้องรอสักครู่ให้มันเปิดการทำงาน ซึ่งถ้าเรียบร้อยแล้วเราจะสามารถใช้ WSL ที่เป็นเวอร์ชั่นแรกได้แล้ว แต่ขั้นตอนยังไม่จบแค่นี้ เราจะเปลี่ยนไปใช้ WSL2 กันซึ่งสามารถเข้าถึง kernel และจัดการพวก VM ได้ ซึ่งเหมาะกับคนที่ใช้ docker หรือซอฟแวร์ container-based อื่นๆ
การติดตั้ง WSL2 นั้นเราจะต้องเปิดใช้ฟังก์ชัน VM ของ Windows ก่อน ให้เราเปิด PowerShell ขึ้นมาแล้วพิมพ์คำสั่งนี้ลงไป
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
จากนั้นให้รีสตาร์ทก่อนครั้งนึง เมื่อเปิดขึ้นมาใหม่แล้วให้เข้าไปที่แอป Microsoft Store แล้วพิมพ์ในช่องค้นหาว่า Linux จากนั้นเลือกติดตั้ง image ที่เราต้องการใช้งานได้เลย ในกรณีนี้ ของผมถนัดใช้ Ubuntu มากกว่าตัวอื่น เลยเลือกติดตั้งเป็น Ubuntu 18.04 LTS มาครับ พอติดตั้งเรียบร้อยแล้ว ให้ลองเปิด command Prompt ขึ้นมา
มันจะใช้เวลาติดตั้งสักพักนึง แล้วขึ้นมาถามว่าจะให้สร้าง username เป็นอะไร เหมือนกับที่เราไปเช่าใช้เซิฟเวอร์ทั่วไปเลย ซึ่งจะต้องกรอกข้อมูลพวกนี้ก่อน ตรงนี้ตั้งได้ตามอัธยาศัยครับ ส่วนข้อมูลการตั้งค่าพื้นฐานอื่นๆ ที่จำเป็นของ Ubuntu แนะนำให้อ่านบทความนี้บน DigitalOcean
เมื่อตั้งค่าผู้ใช้งานใหม่เรียบร้อยแล้ว ให้เราเปิด PowerShell ขึ้นมาอีกครั้ง พิมพ์คำว่า
wsl --list --verbose
จะเป็นการแสดงรายการ WSL ที่ติดตั้งอยู่บนคอมพิวเตอร์ของเรา พร้อมกับแสดงเลขเวอร์ชั่นมาให้ด้วย ในกรณีนี้เราจะเปลี่ยนจากของเดิมที่เป็น WSL เวอร์ชั่นแรก ไปเป็น WSL เวอร์ชั่น 2 ถ้าใครที่เลือก Ubuntu 18.04 LTS เหมือนผมก็สามารถใช้คำสั่ง
wsl --set-version Ubuntu-18.04 2
เพื่อเปลี่ยนเป็น WSL2 ได้เลย เมื่อ enter แล้วจะต้องรอสักพักเพื่อให้ระบบเตรียมสภาพแวดล้อมต่างๆใหม่ก่อน ถ้ารอแล้วขึ้นว่า done หรือ success ก็เป็นอันเรียบร้อย ให้รีสตาร์ทคอมขึ้นมาใหม่ก็สามารถใช้งาน WSL2 ได้แล้วครับ
ติดตั้ง Windows Terminal ให้ทำงานได้ง่ายขึ้น
สำหรับคนที่ย้ายมาจาก OSX แบบผมอาจจะไม่คุ้นชินกับการใช้ PowerShell หรือ Command Prompt ผมแนะนำว่าให้เข้า Microsoft Store แล้วติดตั้งแอปที่ชื่อว่า Windows Terminal ซึ่งเราจะใช้ตัวนี้เป็นตัวหลักในการทำงานด้าน command line ทั้งหมดแทน
ข้อดีคือเราสามารถเลือกรูปแบบของ console ในการใช้งานแต่ละครั้งได้ง่ายมาก เพียงแค่เลือกเปิดแท็บใหม่จาก dropdown อยากจะเปิดแท็บใหม่เป็น PowerShell, Command Prompt หรือจะเป็น Ubuntu 18.04 ที่เราเพิ่งติดตั้งไปเมื่อสักครู่ก็ทำได้ง่ายและสะดวกมาก
เพียงเท่านี้เราก็สามารถทำงานได้อย่างราบรื่นไม่ต่างกับการใช้พวก *nix-based แล้วครับ สามารถติดตั้ง mongo, ruby, NodeJS ฯลฯ แล้วใช้ console ที่ติดตั้งใหม่จัดการได้อย่างสะดวกรวดเร็วเหมือนใช้ Linux อยู่เลย ในบทความหน้า ผมจะมาเขียนวิธีติดตั้ง mongo, Ruby on Rails, PostgreSQL, และพวก NGINX, PHP, MySQL โดยใช้ WSL ที่ติดตั้งไปในบทความนี้ครับ