สิ่งที่ไม่คิดว่าจะได้เห็นตอนที่เริ่มหัดเขียน vb.net, c# คือ Microsoft ❤️ Linux ที่ microsoft จะเอา WSL ( Linux ) มาใน Windows ช่วงนี้เพิ่งรู้ว่า Ubuntu ตั้งแต่เวอร์ชัน 22.04 เป็นต้นไป มีแพ็กเกจ .NET อยู่ใน Repository หลัก ( Built-in APT ตัวเอง ) ทำให้ชีวิตเราง่ายขึ้นมาก ไม่ต้องคอย add repository ของ Microsoft เหมือนเมื่อก่อนแล้ว นี่มันการจับมือกันของ 2 ขาใหญ่เครื่องส่วนบุคคล กับเครื่อง server ชัด ๆ ทำให้ .net ( c# ) ดูมีอนาคตขึ้นมาอีกเยอะเลย
🛠️ ความแตกต่างระหว่าง SDK และ Runtime ( เลือกตัวไหนดี? )
ก่อนจะกดติดตั้ง มาเช็กกันนิดนึงครับว่าเซิร์ฟเวอร์ของคุณต้องใช้ตัวไหน
- .NET SDK ( Software Development Kit ): รวมทุกอย่างไว้หมดแล้ว ทั้งเครื่องมือสร้าง คอมไพล์โค้ด และรันระบบ ( เหมาะสำหรับเครื่อง Development หรือเซิร์ฟเวอร์ที่ต้อง Build โค้ดเอง )
- .NET Runtime: มีเฉพาะตัวขับเคลื่อนแอปพลิเคชันให้ทำงานได้เท่านั้น ( เหมาะสำหรับ Production Server ที่รันแอปอย่างเดียว ไม่มีการแก้โค้ด )
🚀 ขั้นตอนการติดตั้ง .NET บน Ubuntu Server
ในที่นี้จะขอแนะนำวิธีติดตั้ง .NET 8 ที่เป็นเวอร์ชัน LTS ( Long-Term Support ) ที่เสถียรและแนะนำในปัจจุบันครับ
- อัปเดตระบบ
ก่อนติดตั้งแพ็กเกจใหม่ทุกครั้ง ควรทำการอัปเดตดัชนีแพ็กเกจของ Ubuntu ให้เป็นตัวล่าสุดก่อนsudo apt update && sudo apt upgrade -y - เลือกติดตั้ง SDK หรือ Runtime
- ต้องการติดตั้ง .NET SDK ( สำหรับ Build และ Run )
ใช้คำสั่งนี้เพื่อติดตั้งเครื่องมือพัฒนาทั้งหมดsudo apt install -y dotnet-sdk-8.0 - ต้องการติดตั้งเฉพาะ .NET Runtime ( สำหรับ Production )
หากต้องการแค่ให้แอปพลิเคชันทำงานได้โดยประหยัดพื้นที่เซิร์ฟเวอร์ ให้เลือกคำสั่งนี้sudo apt install -y dotnet-runtime-8.0
- ต้องการติดตั้ง .NET SDK ( สำหรับ Build และ Run )
- ตรวจสอบการติดตั้ง
เมื่อระบบจัดการดาวน์โหลดและติดตั้งเสร็จสิ้น ให้ลองทดสอบดูว่าเซิร์ฟเวอร์ของเรารู้จัก .NET หรือยัง ด้วยคำสั่งdotnet --info
หากติดตั้งสำเร็จ หน้าจอจะแสดงรายละเอียดเวอร์ชันของ .NET รวมถึงสภาพแวดล้อม ( OS/Architecture ) ขึ้นมาอย่างสวยงามครับ
🏃♂️ ทดลองรันแอปพลิเคชัน ( How to Run )
หลังจากติดตั้งเสร็จแล้ว คุณสามารถนำแอปพลิเคชัน .NET มารันบน Ubuntu Server ได้ง่าย ๆ ดังนี้
- นำไฟล์ที่ Publish มาวางบน Server
ทำการdotnet publishโค้ดจากเครื่องที่ dev แล้วอัปโหลดโฟลเดอร์ผลลัพธ์ ( มักจะอยู่ที่bin/Release/net8.0/publish/) ขึ้นมาไว้บน Ubuntu Server ( เช่น ไว้ที่ไดเรกทอรี/var/www/myapp) - สั่งรันด้วยคำสั่ง Dotnet
เข้าไปที่โฟลเดอร์ของแอปพลิเคชัน แล้วใช้คำสั่งdotnetตามด้วยชื่อไฟล์.dllหลักของโปรเจกต์cd /var/www/myapp
dotnet YourAppName.dll
⚠️ คำแนะนำสำหรับ Production: การรันด้วยคำสั่งdotnetตรง ๆ แบบนี้ แอปพลิเคชันจะดับทันทีที่คุณปิดหน้าจอ Terminal ( SSH ) แนะนำให้ตั้งค่าทำเป็น systemd service เพื่อให้แอปพลิเคชันรันอยู่เบื้องหลัง ( Background ) และเปิดใช้งานใหม่อัตโนมัติเมื่อเซิร์ฟเวอร์รีบูตครับ
💡 ทริคเพิ่มเติม ( Troubleshooting )
- อยากเปลี่ยนไปใช้ .NET เวอร์ชันอื่น?
คุณสามารถเปลี่ยนเลขท้ายของคำสั่งติดตั้งได้เลย เช่น หากต้องการ .NET 7 ( ขยับไปใช้dotnet-sdk-7.0) หรือ .NET 6 ก็เปลี่ยนตามความต้องการของแอปพลิเคชันได้ทันที - สลับไปใช้คลังของ Microsoft ( หากเจอปัญหาแพ็กเกจไม่อัปเดต )
ในบางกรณีที่ Ubuntu เวอร์ชันเก่ามาก ๆ ไม่มีแพ็กเกจในตัว สามารถลงทะเบียนคลังของ Microsoft ได้โดยตรงผ่านคำสั่ง
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
อ่านเพิ่มเติม