ຂຽນຂື້ນເມື່ອ
ສິ່ງຈຳເປັນທີ່ຕ້ອງມີ ກໍຄື Account AWS. ສຳລັບຄົນທີ່ບໍ່ຄຸ້ນເຄີຍກັບຄຳນີ້ ແລະ ຢາກຮູ້ວິທີເປີດ Account (ເປີດ Free ເດີ້).
ໃຫ້ເຂົ້າໄປໃນ Website ແລະ ກໍເປີດໄດ້ເລີຍ. ມີສິ່ງໜື່ງທີ່ຕ້ອງມີກໍຄື Credit Card, ເຊີ່ງສາມາດເປີດຜ່ານ BCEL One ໄດ້ໃນຮູບແບບ Prepaid Card ແລ້ວກໍນຳເອົາຂໍ້ມູນບັດທະນາຄານນັ້ນໄປຜຸກໄດ້ເລີຍ.
Nginx ແມ່ນຫຍັງ? (engine X)
ມັນເປັນ HTTP + Reverse Proxy Server, Mail Server, ແລະ TCP/UDP proxy server. ເວົ້າງ່າຍໆກໍຄື ເຮົາສາມາດໃຊ້ເປັນເປັນ Web Server ໃຫ້ເຮົາໄດ້ໃນຕອນນີ້. ແຕ່ບໍ່ແມ່ນ Server ເດີ້, ຈົ່ງແຍກໃຫ້ອອກລະຫວ່າງ Server ແລະ Web Server.
ມາເລີ່ມລົງມືກັນເລີຍ
ກ່ອນອື່ນໝົດຕ້ອງ ssh ເຂົ້າ Server ເຮົາກ່ອນ (ຂອງຂ້ອຍເອງແມ່ນ Ubuntu Server 22.04 LTS (HVM), Free tier eligible)ssh yeng@10.10.10.10
Update and Upgrade Packages ຕ່າງໆ
sudo apt update
sudo apt upgrade
ຕິດຕັ້ງ NodeJS
sudo apt-get install nodejs
sudo apt install npm # ຖ້າກວດສອບ npm ບໍ່ໄດ້
ກວດສອບວ່າຕິດຕັ້ງໄດ້ບໍ ແລະ ເປັນ Version ໃດ
node -v
npm -v
ແນະນຳໃຫ້ຕິດ nvm ເພື່ອງ່າຍຕໍ່ການຈັດການ Node Version, ຕົວຢ່າງ ປ່ຽນຈາກ node version 12 ເປັນ 20
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
# ບໍ່ຕ້ອງກັງວົນວ່າ ຢ້ານຂຽນຜິດ, ຫຼັງຈາກຂັ້ນຕອນກ່ອນໜ້ານີ້ ມັນຈະບອກສະແດງ ຄຳສັ່ງຕໍ່ໄປນີ້ ແລ້ວເຈົ້າສາມາດ Copy, Paste, and Enter
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# ທົດລອງ nvm
nvm --version
# ຖ້າຢາກໃຊ້ node version ໃດ ກໍສາມາດຂຽນແບບນີ້ເລີຍ
nvm install 20
nvm use 20 # ຕ້ອງການໃຊ້ node version 20
mkdir nodejs
cd nodejs
npm init -y
npm install express cors
vim app.js
ຂຽນ code javascript ແບບນີ້ລົງໄປ
const express = require('express')
const cors = require('cors')
const app = express()
const port = 3000
app.use(cors())
app.get('/', (req, res) => {
return res.send('Hello world')
})
app.listen(port, () => {
console.log(`Server is running on port ${port}`)
})
ທົດລອງລະບົບເຮົາ
node app.js
# Server is running on port 3000
ຫລັງຈາກຮອດຂັ້ນຕອນນີ້ ພວກເຮົາສາມາດທົດລອງລະບົບເຮົາຜ່ານ ຄອມພີວເຕີ ຫຼື ໂທລະສັບມືຖືໄດ້ແລ້ວ ໂດຍການພີມ http://10.10.10.10:3000 ໃນ Browsers (10.10.10.10 ແມ່ນ public IP ຂອງ Instance)
ແຕ່ຈະບໍ່ສະແດງຫຍັງອອກມາ ແຖມ Load ໄປດົນໆ. ສາເຫດກໍຄືເຮົາຕ້ອງໄດ້ອະນຸຍາດ PORT (3000) ໃຫ້ແກ່ Instance ຂອງເຮົາກ່ອນ.
ລອງໃຫມ່ອີກຄັ້ງ, ໂດຍການພີມ http://10.10.10.10:3000 ໃນ Browsers
ວິທີແກ້ໄຂກໍຄື ຕ້ອງມີຕົວຊ່ວຍ, ເຊັ່ນ PM2
PM2 ເປັນ process manager ສຳລັບ JavaScript runtime Node.JS. ຖ້າຈະເວົ້າງ່າຍໆອີກກໍຄື ຕົວຊ່ວຍໃຫ້ NodeJS Server ຂອງເຮົາ Run ໄດ້ 24 ຊົ່ວໂມງ ເຖີງຈະປິດລະບົບແລ້ວກໍຕາມ.sudo npm install pm2 -g
ວິທີ Run App ກໍພຽງແຕ່
pm2 start app.js
# ສ່ວນເສີມ
pm2 list # ເບີ່ງລາຍການທີ່ກຳລັງເຮັດວຽກໃນເບື່ອງຫຼັງ
pm2 stop [id] # ຢຸດ process ນັ້ນໆ
pm2 restart [id]
ເທົ່ານີ້ ເຮົາກໍສາມາດ deploy nodejs ໄດ້ແລ້ວ, ແຕ່ເປັນຫຍັງຕ້ອງມີ nginx ມາພ້ອມ.
ຕິດຕັ້ງ nginx
sudo apt install nginx
sudo vim /etc/nginx/sites-enabled/default
ຊອກຫາແຖວທີ່ຂຽນວ່າ
location / {
try_files $uri $uri/ =404;
}
ປ່ຽນເປັນ
location / {
proxy_pass http://localhost:3000;
}
Restart nginx
sudo systemctl restart nginx
ຫຼັງຈາກນັ້ນ ເຂົ້າໄປ AWS EC2 Dashboard, ແລ້ວເປີດ PORT 80 ດັ່ງທີ່ເຄີຍເປີດໃຫ້ PORT 3000