Digital Ocean + Nodejs #1

Kittinut Pramhan
3 min readMay 24, 2018

--

ในเนื้อหานี้ผมจะมาสอนเรื่อง การติดตั้ง Nginx + Nodejs และการทำ Reverse Proxy เพื่อจะสร้าง Web Server ให้บริการใน Digital Ocean กันนะครับ

System Require

  1. Nodejs ต้องทำการติดตั้งใน เครื่องคอมพิวเตอร์ของเราก่อน https://nodejs.org/en/download/
  2. Github เอาไว้เก็บไฟร์ Project ของเราไว้

สร้างโปรเจค ขึ้นมา

$cd Desktop // เข้าไปที่ Desktop
$mkdir server && cd server//สร้าง Directory ชื่อ server และเข้าไปใน Directory
$npm init --y //สร้างไฟร์ node package เพื่อใช้ในการบันทึก dependencies **

Dependencies คืออะไร

เนื่องจาก nodejs จะเป็นการเขียนด้วยภาษา JavaScript ทั้งหมด ซึ่งหากเราจะเขียนเซิฟเวอร์เองนั้นก็สามารถทำได้ แต่ยากมาก Dependencies จึงจำเป็น เนื่องจากมีคนเขียน ให้เป็น Module ย่อยๆ มาใช้ โดยใช้คำสั่ง npm หรือ node package manager

โครงสร้างของโปรเจค

server
|-package.json
|-package-lock.json

node_modules จะเป็น Directory ใช้ในการเก็บไฟร์ node package manager ไว้
เมื่อเราใช้คำสั่ง npm <pakagename> — save
จะไปเขียน dependencies ใน package.json เพื่อที่จะสามารถทำให้รู้ว่า Project ของเรานี้ประกอบไปด้วย Module ตัวไหนบ้าง

Before

{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

after run

$ npm install express --save

{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.3" //here
}
}

package.json จะถูกเขียน dependencies เพิ่ม และจะมี directory node_modules เพิ่มมา

Node Express

Node Express คือ Node Module ที่ใช้สำหรับในการรัน Server โดยเราสามารถกำหนด Port ในการรันได้

โครงสร้างโปรเจค Update

server
|- node_modules
|- package.json
|- package-lock.json

สร้าง Server

ทำการสร้าง ไฟร์ server.js ขึ้นมา

const express = require('express');//นำไฟร์ express มาใช้
const app = express();
port = 3010; //กำหนด port สำหรับ server
app.listen(port,()=>{
console.log('server listen on port',port);
});

ทำการรัน server.js

$node server.js
server listen on port 3010

ตอนนี้ เราสามารถที่จะสร้างเซิฟเวอร์ได้แล้ว ขั้นตอนต่อไปคือกำหนด route

const express = require('express');//นำไฟร์ express มาใช้
const app = express();
port = 3010; //กำหนด port สำหรับ server
app.listen(port,()=>{
console.log('server listen on port',port);// นี้คือcallback
});
app.get('/',(req,res)=>{ //get method
res.send('helloworld');
});

ทำการรัน server.js

$node server.js
server listen on port 3010

ต้องทำการรัน node server.js ใหม่ทุกครั้ง ครับ แต่มีวิธีที่สามารถทำให้ง่ายจะกล่าวในหัวข้อถัดไป

ทำการเปิด Browser ไปที่ http://localhost:3010 จะได้หน้าต่างดังนี้

a . ผลการตอบกลับ server route / methode get

วิถี EZ auto update

เนื่องจากเมื่อเราเเก้ไฟร์ server.js แล้วเนี้ย เราต้องทำการรันคำสั่ง node server.js ใหม่ซึ่งทำให้การ developer ลำบาก บางคนอาจจะอ้วกแตกได้เพราะต้องสลับหน้าต่างไปมา เพราะฉนั้น node pakage manager จะมี package ที่ชื่อว่า nodemon ให้เราใช้ใน โดยจะสั่งคอมไพร์ให้โค๊ดใหม่ให้เราเมื่อ กด save

sudo npm install -g nodemon // -g = global  
nodemon server.js
[nodemon] 1.17.5
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
server listen on port 3010

ทีนี้เมื่อเราทำการเเก้ไฟร์ มันจะsave auto ไม่ใช่ลองแก้คำว่า ‘helloworld’ เป็น ‘ggez nodemon’ แล้วไปดูหน้าเว็ปดูซิ

การสร้าง script run ด้วยตัวเอง

เราสามารถเข้าไปแก้ไฟร์ package.json ในส่วนของ script ได้ดังต่อไปนี้

{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"server":"nodemon server.js", //here
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.3",
"nodemon": "^1.17.5"
}
}

โดยเมื่อเราพิมคำสัง npm run server ตัวpackage.json จะทำคำสั่ง nodemon server.js ให้เรา แบบ อัตโนมัติ

$npm run server
> server@1.0.0 server /Users/kittinut/Desktop/server
> nodemon server.js
[nodemon] 1.17.5
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
server listen on port 3010

สรุป Digital Ocean + Nodejs #1

การสร้าง server โดย nodejs จำเป็นต้องรู้ภาษา JavaScript มาพอสมควร และ ศึกษา node package manager เพื่อที่จะนำมาใช้ให้สะดวก
Express เป็น modules ในการสร้าง server
nodemon ไว้สำหรับ autosave compiler
ครับ ในบทต่อไปจะกล่าวถึง route api basic และอัพลง github

--

--