หมวดหมู่: C#

Linux: .NET SDK / RuntimeLinux: .NET SDK / Runtime

สิ่งที่ไม่คิดว่าจะได้เห็นตอนที่เริ่มหัดเขียน 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 ) ที่เสถียรและแนะนำในปัจจุบันครับ

  1. อัปเดตระบบ
    ก่อนติดตั้งแพ็กเกจใหม่ทุกครั้ง ควรทำการอัปเดตดัชนีแพ็กเกจของ Ubuntu ให้เป็นตัวล่าสุดก่อน
    sudo apt update && sudo apt upgrade -y
  2. เลือกติดตั้ง 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
  3. ตรวจสอบการติดตั้ง
    เมื่อระบบจัดการดาวน์โหลดและติดตั้งเสร็จสิ้น ให้ลองทดสอบดูว่าเซิร์ฟเวอร์ของเรารู้จัก .NET หรือยัง ด้วยคำสั่ง
    dotnet --info
    หากติดตั้งสำเร็จ หน้าจอจะแสดงรายละเอียดเวอร์ชันของ .NET รวมถึงสภาพแวดล้อม ( OS/Architecture ) ขึ้นมาอย่างสวยงามครับ

🏃‍♂️ ทดลองรันแอปพลิเคชัน ( How to Run )

หลังจากติดตั้งเสร็จแล้ว คุณสามารถนำแอปพลิเคชัน .NET มารันบน Ubuntu Server ได้ง่าย ๆ ดังนี้

  1. นำไฟล์ที่ Publish มาวางบน Server
    ทำการ dotnet publish โค้ดจากเครื่องที่ dev แล้วอัปโหลดโฟลเดอร์ผลลัพธ์ ( มักจะอยู่ที่ bin/Release/net8.0/publish/ ) ขึ้นมาไว้บน Ubuntu Server ( เช่น ไว้ที่ไดเรกทอรี /var/www/myapp )
  2. สั่งรันด้วยคำสั่ง 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

อ่านเพิ่มเติม