วิธี Deploy Node.js app ด้วย pm2 + nginx + ssl บน Ubuntu 18.04

โดยปกติแล้วในการทำ web application ด้วยไม่ว่าจะด้วยภาษาอะไรก็จำเป็นต้องให้ผู้ใช้เราใช้โปรแกรมเราผ่าน web browser ซึ่งถ้าเราทำเป็น public web จำเป็นต้องใช้ผ่าน 2 port หลักๆ คือ 80 http, 443 https ซึ่งโดยปกติแล้วเราจะมักเขียนโปรแกรมภาษา node.js มักจะไม่ได้ให้ผู้ใช้เข้าผ่าน port 80 หรือ 443 ตรงๆ ดังนั้นเราจึงต้องทำ reverse proxy เพื่อเรียกใช้งาน application ผ่าน http protocal ได้ตามปกติซึ่งในที่นี่ขอแนะนำ Nginx โดยเราจะ Deploy บน Ubuntu 18.04 กันครับ

คำสั่งสำหรับติดตั้ง nginx บน server

start application ด้วย pm2 สามารถเข้าไปดูวิธีการติดตั้งและใช้งาน pm2 ได้จาก link นี้นะครับ

ทำ ssl ด้วย let’s encrypt โดยเริ่มต้นติดตั้งเข้าไปที่ server เราก่อนด้วยคำสั่ง

หลังจากติดตั้งเสร็จแล้วเราก็สามารถที่จะสร้าง SSL Certificate ของเราด้วยคำสั่งดังนี้

ระบบจะไปสร้าง cert ไว้ที่ folder /etc/letsencrypt/live/example.com ต่อมาเราก็ทำการ config nginx ให้สามารถเข้ามาใช้ web application เราผ่าน http, https ได้โดยมีขั้นตอนดังนี้

ใส่ค่า config ให้ชี้ไปที่ port ที่เราเปิดไว้เช่น node รับ listener ไว้ที่ 9090 เราก็สามารถตั้งค่าดังตัวอย่าง

ตามด้วย ตั้งค่า virtual host

จากนั้นก็มาตั้งค่าในส่วนของการทำ reverse proxy

และตั้งค่า ssl กันต่อครับ

**ตัวอย่าง file example.com

เมื่อเสร็จขั้นตอนข้างต้นแล้ว เราต้องทำให้ nginx รู้จัก config ของเราด้วยคำสั่ง

restart nginx กันครับ

เมื่อเราทำการตั้งค่าทุกอย่างเสร็จเรียบร้อยแล้ว เราก็สามารถเข้าใช้งาน application เราผ่าน url ได้ดังนี้

เนื่องด้วย let’s encrypt นั้นมีอายุแค่ 90 วัน ฉนั้นทุกๆ 90 วันเราจำเป็นต้องมาทำการ renew ใหม่ทุกครั้งด้วยคำสั่ง

แนะนำว่าให้ตั้ง crontab ให้ทำการ renew ให้เราทุกๆ 90 วันนะครับเพื่อความสบายใจในการใช้งานนะครับ

Leave a Reply

iameveme