Thursday, August 27, 2026

วิธี deploy Node.js application โดยไม่ต้องรันคำสั่งผ่านทาง cmd

มีหลายวิธีในการรัน Node.js Application ให้ทำงานตลอดเวลาโดยไม่ต้องเปิดหน้าต่าง CMD หรือ Terminal ค้างไว้ครับ ซึ่งเป็นมาตรฐานที่ใช้ทั้งบนเครื่องส่วนตัว (Local) และการ Deploy บน Production Server 

1. ใช้ Process Manager (แนะนำมากที่สุด) วิธีนี้เหมาะทั้งสำหรับการรันบน Server (เช่น VPS/Linux/Windows Server) และการรัน background ในเครื่องตัวเอง โดยนิยมใช้ PM2 มากที่สุด ข้อดี: หากแอปเด้งดับ (Crash) หรือ Server Reboot เครื่องใหม่ ตัว PM2 จะทำการ Restart แอปให้กลับมาทำงานใหม่อัตโนมัติ 
 1ติดตั้ง PM2 แบบ Global:รันใน CMD เพียงครั้งเดียวBashnpm install -g pm2 
2สั่งสั่งรันแอปใน Background:Bashpm2 start index.js --name "phonebook-api" เมื่อสั่งคำสั่งนี้แล้ว สามารถปิดหน้าต่าง CMD ได้ทันที แอปก็ยังทำงานอยู่
3คำสั่งจัดการเบื้องต้นที่ควรรู้:
ดูสถานะแอปทั้งหมด: pm2 list
ดู Logs/Errors: pm2 logs
สั่งหยุด/รันใหม่: pm2 stop phonebook-api หรือ pm2 restart phonebook-api
ตั้งค่าให้รันอัตโนมัติตอนเปิดเครื่อง Server: pm2 startup และ pm2 save 

 2. Deploy ขึ้นบริการ PaaS / Cloud Services (ไม่ต้องรัน CMD เอง) หากต้องการนำขึ้นระบบอินเทอร์เน็ตจริง แนะนำให้ใช้บริการ Cloud Platform ที่เชื่อมต่อกับ GitHub เมื่อคุณ git push โค้ดขึ้นไป ระบบ Cloud จะทำการ Build และรัน Node.js ให้โดยอัตโนมัติ Render / Railway / Fly.io: มี Free tier หรือราคาประหยัด แค่ผูก GitHub Repository เข้ากับระบบ และตั้งค่า Start Command (เช่น node index.js) ระบบจะจัดการรันให้อยู่เบื้องหลังตลอด 24/7 Vercel / Netlify: เหมาะกับโปรเจกต์ที่มีหน้าเว็บ Frontend หรือใช้ Framework อย่าง Next.js / Express (Serverless Functions) 

 3. รันเป็น Windows Service (สำหรับ Windows Server) หากเซิร์ฟเวอร์ของคุณเป็น Windows Server และต้องการให้แอป Node.js ทำงานเป็น Background Service ของระบบ (ทำงานทันทีที่เปิดเครื่อง โดยไม่ต้องกด Login เข้าหน้า Desktop) ใช้ไลบรารี node-windows: เขียน Script สั้นๆ เพื่อลงทะเบียนไฟล์ Node.js ของเราให้กลายเป็น Windows Service JavaScript // install-service.js const Service = require('node-windows').Service; const svc = new Service({ name: 'My Phonebook App', description: 'Node.js Phonebook Service', script: 'C:\\path\\to\\your\\index.js' }); svc.on('install', () => { svc.start(); }); svc.install(); (รันไฟล์นี้ด้วย node install-service.js แค่ครั้งเดียว ตัวแอปจะไปอยู่ในหน้า services.msc ของ Windows ทันที) 

 4. ใช้ Docker Container หากองค์กรของคุณใช้ระบบ Containerization สามารถเขียน Dockerfile เพื่อบรรจุ Node.js และโค้ดทั้งหมดไว้ด้วยกัน จากนั้นรัน Container แบบ Background (-d หรือ Detached mode): Bash docker run -d -p 3000:3000 --name my-node-app my-node-image ระบบ Docker จะดูแลการรันให้อยู่เบื้องหลัง และสั่ง Restart เมื่อมีปัญหาได้ตามที่เราตั้งค่าไว้

Tuesday, April 26, 2016

การเปิด-ปิด VirtualBox ด้วย Command-Line

การใช้งานโปรแกรม VirtualBox บนระบบปฏิบัติการ Windows นั้นจะมี GUI ให้เราสามารถใช้งานได้อย่างสะดวก แต่ในบางครั้งเราอาจต้องการ Run โปรแกรม VirtualBox ไว้เป็นแบบ Background Process เพื่อไม่ให้ GUI เกะกะลูกกะตาให้รำคาญจิตใจ เราสามารถใช้คำสั่งผ่าน Command-Line ได้โดยไปที่ Path ของ VirtualBox สังเกตดูจะมีไฟล์ VBoxManage.exe ตรงนั้นแหละ จากนั้นใช้คำสั่งเพื่อเปิดเครื่องดังนี้
VBoxmanage startvm "CentOS1" --type headless

ในตอนนี้โปรแกรมก็จะ Run อยู่เบื้องหลัง เราสามารถเปิดหน้าต่าง Command-Line ได้ และหากต้องการจะปิดเครื่องก็ให้เปิด Command-Line ขึ้นมาอีกครั้งและใช้คำสั่ง

VBoxmanage controlvm "CentOS1" poweroff

เท่านี้ก็สะดวกขึ้นแล้วครับท่าน

Monday, July 27, 2015

PSR-1 : มาตรฐานการเขียนโค้ด PHP สำหรับ Framework

ภาพรวม
1. ใช้แท็ก <?php หรือ <?= เท่านั้น
2.การเข้ารหัสไฟล์ให้ใช้ UTF-8 without BOM
3. ควรเลือกประกาศตัวแปรคลาส ฟังก์ชั่น ค่าคงที่ หรือจะใช้การกำหนดค่าจากไฟล์ .ini แต่ไม่ควรใช้ทั้งสองอย่างควบคู่กัน
4. เนมสเปซ และคลาส ต้องประกาศหลังจาก autoloading
5. ชื่อคลาสจะต้องประกาศขึ้นต้นด้วยตัวพิมพ์ใหญ่ เป็นลักษณะ StudlyCaps
6. ชื่อตัวแปรค่าคงที่ในคลาสต้องประกาศด้วยตัวพิมพ์ใหญ่ทั้งหมด โดยใช้เครื่องหมาย _ คั่นระหว่างคำ
7. ชื่อเมธอดในคลาส จะต้องประกาศเป็นลักษณะ camelCase


Thursday, December 11, 2014

CodeIgniter : Call Stored Procedure ที่มี Out Parameter นะจ๊ะ

โดยปกติ การเรียกใช้งาน MySQL Stored Procedure ใน CI นั้นไม่ค่อยสะดวกเท่าไหร่ เพราว่า CI อนุญาตให้ Query ข้อมูลได้ทีละครั้ง ซึ่งถ้าเรา Query หลาย ๆ ครั้งจะต้องเป็นการเริ่มต้นใหม่โดยที่ไม่มีส่วนใดของ Query ก่อนหน้ามาเกี่ยวข้องด้วย

แต่สำหรับ Stored Procedure ที่มี Out Parameter นั้นจะต้องทำการ Query ถึง 2 ครั้งโดยครั้งที่ 2 นั้นจะต้อง SELECT ค่าของตัวแปร OUT เพิ่มเข้ามาอีก ดังนั้นเราจึงต้องทำการแก้ไขไฟล์ /system/database/drivers/mysqli/mysqli_driver.php จากบรรทัดที่ 176

function _execute($sql)
{
 $sql = $this->_prep_query($sql);
 $result = @mysqli_query($this->conn_id, $sql);
 return $result;
}
แก้ไขเป็น
function _execute($sql)
{
 $sql = $this->_prep_query($sql);
 @mysqli_multi_query($this->conn_id, $sql);
 $result = @mysqli_store_result($this->conn_id);
 if (@mysqli_more_results($this->conn_id)) {
 @mysqli_next_result($this->conn_id);
}
return $result;
}

สิ่งสำคัญคือ อย่าลืมไป config database ให้ใช้ Driver จาก mysql เป็นmysqli ด้วยนะ เพียงเท่านี้ท่านก็จะสามารถ call Procedure ได้อย่างสบายใจเฉิบ ^^

Tuesday, September 24, 2013

การแก้ไวรัส EXE ที่รำคาญกวนใจ ง่ายนิดเดียว!

ทำตามนี้เลยจ้า ท่านผู้ชม

เมื่อเสร็จแล้วโฟลเดอร์ที่ถูกซ่อนไว้ก็จะแสดงตัวออกมา จากนั้นก็ให้เราลบไฟล์ .exe ทิ้งซะ เป็นอันเสร็จพิธี