27/07/2026
เคยเจอสถานการณ์แบบนี้ไหม?
เขียนโปรแกรมบนเครื่องตัวเองทำงานปกติ แต่พอนำขึ้น Server กลับเปิดไม่ได้ เชื่อมต่อฐานข้อมูลไม่สำเร็จ หรือเจอข้อความ Permission denied
ปัญหาเหล่านี้อาจไม่ได้เกิดจากโค้ด แต่อาจเกิดจากไฟล์ ผู้ใช้งาน Process, Port หรือ Service ภายใน Linux
🔷Linux เป็นระบบปฏิบัติการที่ทำหน้าที่จัดการทรัพยากรของเครื่อง และเป็นพื้นฐานสำคัญของ Server รวมถึงเครื่องมือสาย Cloud, Docker และ DevOps จำนวนมาก Linux Foundation
Developer จึงไม่จำเป็นต้องเป็น System Administrator แต่ควรเข้าใจพื้นฐานเหล่านี้
🔷1. การใช้งาน Terminal และ Shell
Developer ควรสามารถสั่งงานผ่าน Command Line ได้ เพราะ Server ส่วนใหญ่มักไม่มีหน้าจอให้คลิกเหมือนคอมพิวเตอร์ทั่วไป
คำสั่งพื้นฐานที่ควรรู้ เช่น
pwd # ดูตำแหน่งปัจจุบัน
ls -la # แสดงไฟล์ทั้งหมดพร้อมรายละเอียด
cd app # เข้าไปในโฟลเดอร์ app
mkdir logs # สร้างโฟลเดอร์
cp .env.example .env
mv old.js new.js
rm file.txt
จุดสำคัญไม่ใช่การจำทุกคำสั่ง แต่คือการรู้ว่าจะค้นหาวิธีใช้งานได้อย่างไร
man chmod
chmod --help
🔷2. โครงสร้างไฟล์ของ Linux
Linux เริ่มต้นโครงสร้างจาก / หรือ Root Directory โดยแต่ละตำแหน่งมีหน้าที่แตกต่างกัน เช่น
▪️/home เก็บไฟล์ของผู้ใช้งาน
▪️/etc เก็บไฟล์ตั้งค่าของระบบและ Services
▪️/var/log มักใช้เก็บ Log
▪️/tmp เก็บไฟล์ชั่วคราว
▪️/usr/bin เก็บโปรแกรมและคำสั่งต่างๆ
▪️/var/www มักใช้เก็บไฟล์เว็บไซต์
เมื่อเข้าใจโครงสร้างเหล่านี้ เราจะหาค่า Configuration, Log และไฟล์ของแอปได้เร็วขึ้น
🔷3. User, Group และ Permission
ไฟล์บน Linux มีเจ้าของ กลุ่ม และสิทธิ์พื้นฐานสามแบบ
▪️r คือ Read
▪️w คือ Write
▪️x คือ Execute
ตรวจสอบได้ด้วยคำสั่ง
ls -l
ตัวอย่างผลลัพธ์
-rwxr-xr-- 1 miler developers 1250 app.sh
หมายความว่าเจ้าของอ่าน เขียน และรันไฟล์ได้ ส่วนสมาชิกในกลุ่มอ่านและรันได้ ขณะที่ผู้ใช้อื่นอ่านได้อย่างเดียว
เราสามารถเปลี่ยนสิทธิ์ด้วย chmod และเปลี่ยนเจ้าของด้วย chown โดย chmod รองรับทั้งรูปแบบตัวอักษรและตัวเลขฐานแปด Linux man-pages
chmod +x deploy.sh
sudo chown -R miler:developers /var/www/myapp
อย่าใช้ chmod 777 เพื่อแก้ทุกปัญหา เพราะเท่ากับเปิดสิทธิ์ให้ทุกคนอ่าน เขียน และรันไฟล์ได้ ควรหาก่อนว่าแอปกำลังทำงานด้วย User ใดและต้องการสิทธิ์อะไรจริงๆ
🔷4. Process และ Port
เมื่อเปิดแอป โปรแกรมจะทำงานในรูปแบบ Process เราจึงควรรู้วิธีตรวจสอบว่าแอปยังทำงานอยู่หรือไม่ และกำลังใช้ Port ใด
ps aux
top
pgrep -a node
ss -tulpn
kill
ตัวอย่างเช่น หากเว็บเข้าไม่ได้ อาจไม่ใช่เพราะ Nginx เสีย แต่อาจเป็นเพราะ Node.js Process หยุดทำงาน หรือไม่มีโปรแกรมใดกำลังรอรับคำขอที่ Port 3000
🔷5. Service และ Log
Linux หลาย Distribution ใช้ systemd สำหรับจัดการ Service โดย systemctl ใช้ตรวจสอบและควบคุมสถานะของระบบ ส่วน journalctl ใช้อ่าน Log ที่ถูกจัดเก็บโดย systemd systemctl, journalctl
sudo systemctl status nginx
sudo systemctl restart nginx
sudo systemctl enable nginx
sudo journalctl -u nginx --since today
เมื่อระบบมีปัญหา อย่าเพิ่งเดาสาเหตุ ให้เริ่มจากการตรวจสอบสถานะและอ่าน Log ก่อนเสมอ
🔷6. Package Management
Linux แต่ละตระกูลใช้ Package Manager แตกต่างกัน เช่น Ubuntu และ Debian ใช้ APT ส่วน Fedora และตระกูล Red Hat ใช้ DNF
ตัวอย่างบน Ubuntu
sudo apt update
sudo apt install nginx
sudo apt upgrade
sudo apt remove nginx
APT สามารถใช้ติดตั้ง ลบ อัปเกรดโปรแกรม และอัปเดตรายการ Package ของระบบได้ Ubuntu Server Documentation
🔷7. Environment Variables และ PATH
ค่าที่แตกต่างกันในแต่ละ Environment ไม่ควรถูกเขียนตายตัวไว้ใน Source Code เช่น
▪️Database URL
▪️API Key
▪️Port
▪️Runtime mode
export NODE_ENV=production
export PORT=3000
printenv PORT
echo "$PATH"
PATH คือรายการตำแหน่งที่ Shell ใช้ค้นหาโปรแกรม เมื่อพิมพ์คำสั่งอย่าง node, npm หรือ git ระบบจะค้นหาไฟล์โปรแกรมจากตำแหน่งเหล่านี้
ระวังอย่า Commit ไฟล์ .env หรือแสดง Secret ลงใน Terminal, Log และ Repository สาธารณะ
🔷8. Pipe และ Redirection
พลังสำคัญของ Linux คือการนำผลลัพธ์จากคำสั่งหนึ่งไปใช้กับอีกคำสั่งหนึ่ง โดย Bash เรียกลำดับลักษณะนี้ว่า Pipeline GNU Bash Manual
ps aux | grep node
journalctl -u nginx | grep error
npm run build > build.log 2>&1
tail -f build.log
แทนที่จะเปิดไฟล์ขนาดใหญ่แล้วค้นหาด้วยสายตา เราสามารถกรองเฉพาะข้อมูลที่ต้องการได้ทันที
🔷9. Network และ SSH
Developer ควรรู้จักแนวคิดพื้นฐานอย่าง IP Address, Port, DNS, HTTP, HTTPS และ Firewall รวมถึงการเชื่อมต่อ Server ผ่าน SSH
ssh user@server-ip
curl http://localhost:3000
ping example.com
ss -tulpn
SSH ใช้สำหรับเข้าสู่ระบบและสั่งงานเครื่องระยะไกลผ่านการเชื่อมต่อที่เข้ารหัส OpenSSH Manual
🔷ตัวอย่างสถานการณ์จริง
สมมติว่า Deploy แอป Node.js แล้วเปิดเว็บไซต์ไม่ได้ เราอาจตรวจสอบตามลำดับดังนี้
# 1. แอปทำงานอยู่หรือไม่
pgrep -a node
# 2. มีโปรแกรมฟังอยู่ที่ Port 3000 หรือไม่
ss -tulpn | grep 3000
# 3. เรียกแอปภายใน Server ได้หรือไม่
curl http://localhost:3000
# 4. Nginx ทำงานปกติหรือไม่
sudo systemctl status nginx
# 5. Log บอกว่าเกิดอะไรขึ้น
sudo journalctl -u nginx --since today
จากการตรวจสอบนี้ เราจะเริ่มแยกปัญหาได้ว่าเกิดจากตัวแอป, Process, Port, Permission, Nginx หรือ Network แทนการแก้แบบสุ่ม
📌สรุป
พื้นฐาน Linux ที่ Developer ควรเรียนรู้ประกอบด้วย
Terminal และ Shell → File System → User และ Permission → Process และ Port → Service และ Log → Package Manager → Environment Variables → Network และ SSH
ไม่จำเป็นต้องจำทุกคำสั่ง และไม่ต้องรอให้เก่ง Linux ก่อนจึงจะเริ่ม Deploy ได้
ให้เริ่มจากการใช้จริง สังเกตข้อความ Error อ่าน Log และฝึกหาสาเหตุอย่างเป็นระบบ เพราะต่อให้ AI ช่วยเขียนโค้ดให้เราได้ คนที่เข้าใจว่าระบบทำงานอย่างไร ก็ยังเป็นคนที่ควบคุมและแก้ปัญหาบน Production ได้จริงครับ