ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home ติดตั้ง IIS Web Server บน Windows Server

ติดตั้ง IIS Web Server บน Windows Server

IIS (Internet Information Services) คือ Web Server ที่มากับ Windows Server เหมาะสำหรับเว็บไซต์และเว็บแอปที่พัฒนาด้วย ASP.NET หรือ ASP.NET Core และใช้เป็นหน้าบ้านให้โปรแกรมที่ต้องให้บริการผ่าน HTTP หรือ HTTPS IIS เป็น Role ที่ไม่ได้ติดตั้งมาตั้งแต่แรก ต้องเพิ่มเองผ่าน Server Manager หรือ PowerShell

บทความนี้พาติดตั้ง IIS ตรวจว่าเว็บเริ่มต้นทำงาน แล้วสร้างเว็บไซต์ใหม่ที่ผูกกับชื่อโดเมนของคุณ

สิ่งที่ต้องเตรียม

  • Windows Server 2019 หรือ 2022 แบบมี Desktop Experience (ถ้าเป็น Server Core ใช้วิธี PowerShell ได้ แต่ไม่มีหน้าจอ IIS Manager ในเครื่อง)
  • บัญชีในกลุ่ม Administrators
  • ชื่อโดเมนที่ชี้ A Record มายัง IP ของเซิร์ฟเวอร์แล้ว (ถ้าต้องการเข้าผ่านชื่อโดเมน) ดูวิธีได้ที่ ชี้โดเมนไปยังเซิร์ฟเวอร์ด้วย A Record หรือเปลี่ยน Name Server
  • ถ้าเครื่องมีโปรแกรมอื่นใช้พอร์ต 80 หรือ 443 อยู่ ต้องย้ายหรือหยุดโปรแกรมนั้นก่อน

ขั้นตอนที่ 1: ติดตั้ง IIS

แบบที่ 1: ผ่าน Server Manager

  1. เปิด Server Manager คลิก Manage > Add Roles and Features
  2. หน้า Before You Begin กด Next หน้า Installation Type เลือก Role-based or feature-based installation
  3. หน้า Server Selection เลือกเซิร์ฟเวอร์ปัจจุบัน แล้วกด Next
  4. หน้า Server Roles ติ๊ก Web Server (IIS) จะมีหน้าต่างถามให้เพิ่ม Management Tools กด Add Features
  5. กด Next ผ่านหน้า Features ไปจนถึงหน้า Role Services ของ Web Server ถ้าเว็บเป็น ASP.NET (.NET Framework) ให้ติ๊ก Application Development > ASP.NET 4.8 (Windows Server 2019 อาจแสดงเป็น ASP.NET 4.7 ขึ้นกับอัปเดตที่ติดตั้ง)
  6. กด Install รอจนขึ้นว่า Installation succeeded แล้วกด Close

แบบที่ 2: ผ่าน PowerShell

เปิด Windows PowerShell แบบ Run as Administrator แล้วรัน

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

เมื่อเสร็จจะแสดงตารางที่มี Success True และ Restart Needed No ถ้าต้องการ ASP.NET สำหรับ .NET Framework ให้ติดตั้งเพิ่ม

Install-WindowsFeature -Name Web-Asp-Net45

สำหรับแอป ASP.NET Core ไม่ต้องใช้ฟีเจอร์นี้ แต่ต้องติดตั้ง ASP.NET Core Hosting Bundle เวอร์ชันที่ตรงกับแอป ดาวน์โหลดได้จากหน้า .NET ของ Microsoft ที่ https://dotnet.microsoft.com/download/dotnet

ขั้นตอนที่ 2: ทดสอบหน้าเว็บเริ่มต้น

หลังติดตั้ง IIS จะสร้างเว็บไซต์ชื่อ Default Web Site ที่โฟลเดอร์ C:\inetpub\wwwroot และรับการเชื่อมต่อที่พอร์ต 80 ทดสอบในเครื่องด้วย

Invoke-WebRequest -Uri http://localhost -UseBasicParsing | Select-Object StatusCode

ควรได้ StatusCode 200 จากนั้นลองเปิด http://IP-ของเซิร์ฟเวอร์ จากเบราว์เซอร์ในเครื่องของคุณ จะเห็นหน้าต้อนรับของ IIS

การติดตั้ง IIS จะเปิดกฎ Firewall ชื่อ World Wide Web Services (HTTP Traffic-In) ให้ด้วย ตรวจได้ด้วยคำสั่ง

Get-NetFirewallRule -DisplayName "World Wide Web Services*" | Select-Object DisplayName, Enabled

ถ้ากฎยังไม่เปิด หรือจะเปิด HTTPS ด้วย ดูวิธีเปิดพอร์ตที่ เปิด Port บน Windows Defender Firewall หากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้เปิดพอร์ต 80 และ 443 เพิ่มด้วย

ขั้นตอนที่ 3: สร้างเว็บไซต์ใหม่สำหรับโดเมนของคุณ

แนะนำให้แยกเว็บไซต์แต่ละโดเมนไว้คนละโฟลเดอร์และคนละ Application Pool เพื่อไม่ให้ปัญหาของเว็บหนึ่งกระทบอีกเว็บ

สร้างโฟลเดอร์และกำหนดสิทธิ์

New-Item -ItemType Directory -Path C:\inetpub\example.com
icacls "C:\inetpub\example.com" /grant "IIS_IUSRS:(OI)(CI)RX"

icacls จะแสดง Successfully processed 1 files คำสั่งนี้ให้สิทธิ์อ่านและรันไฟล์แก่กลุ่มที่ IIS ใช้ ถ้าแอปต้องเขียนไฟล์ในโฟลเดอร์ย่อย เช่น uploads ให้สิทธิ์ Modify เฉพาะโฟลเดอร์นั้น ไม่ใช่ทั้งเว็บ

สร้างเว็บไซต์ผ่าน IIS Manager

  1. เปิด IIS Manager (Server Manager > Tools > Internet Information Services (IIS) Manager หรือพิมพ์ inetmgr)
  2. ที่แผงซ้าย ขยายชื่อเครื่อง คลิกขวาที่ Sites เลือก Add Website...
  3. Site name ใส่ example.com ระบบจะสร้าง Application Pool ชื่อเดียวกันให้
  4. Physical path เลือก C:\inetpub\example.com
  5. Binding: Type http, IP address All Unassigned, Port 80, Host name ใส่ www.example.com
  6. กด OK

Binding หนึ่งรายการรับได้หนึ่ง Host name ถ้าต้องการให้ example.com (ไม่มี www) ใช้ได้ด้วย ให้คลิกเว็บไซต์แล้วเลือก Bindings... ที่แผงขวา กด Add แล้วใส่ Host name เพิ่ม

หรือสร้างด้วย PowerShell

Import-Module IISAdministration
New-IISSite -Name "example.com" -PhysicalPath "C:\inetpub\example.com" -BindingInformation "*:80:www.example.com"
New-IISSiteBinding -Name "example.com" -BindingInformation "*:80:example.com" -Protocol http

วิธีนี้จะใช้ Application Pool ชื่อ DefaultAppPool ถ้าต้องการแยก Pool ให้สร้างผ่าน IIS Manager ที่หัวข้อ Application Pools แล้วเปลี่ยนในเมนู Basic Settings ของเว็บไซต์

ขั้นตอนที่ 4: ใส่ไฟล์เว็บและเปิด HTTPS

คัดลอกไฟล์เว็บไปไว้ใน C:\inetpub\example.com IIS จะหาไฟล์หน้าแรกตามรายการใน Default Document (เช่น default.htm, index.html) ถ้าไฟล์หน้าแรกชื่ออื่น ให้เพิ่มชื่อนั้นในเมนู Default Document ของเว็บไซต์

สำหรับ HTTPS ต้องมี SSL Certificate ที่นำเข้าไว้ใน Certificate Store ของเครื่องก่อน จากนั้นเพิ่ม Binding ชนิด https พอร์ต 443 ใส่ Host name ติ๊ก Require Server Name Indication (จำเป็นเมื่อมีหลายเว็บไซต์ใช้ IP เดียวกัน) แล้วเลือก Certificate ที่ต้องการ

ตรวจสอบผลลัพธ์

  1. ดูว่าบริการ IIS ทำงานอยู่
    Get-Service W3SVC, WAS | Select-Object Name, Status
    ทั้งสองบริการควรมีสถานะ Running
  2. ดูรายการเว็บไซต์และสถานะ
    Get-IISSite
    เว็บไซต์ของคุณควรมีสถานะ Started และ Binding ตรงกับที่ตั้งไว้
  3. เปิด http://www.example.com จากเบราว์เซอร์ ควรเห็นหน้าเว็บของคุณ ไม่ใช่หน้าต้อนรับของ IIS

ปัญหาที่พบบ่อย

เปิดโดเมนแล้วยังเห็นหน้าต้อนรับของ IIS

Default Web Site ใช้ Binding *:80: แบบไม่มี Host name จึงรับทุกคำขอที่ไม่ตรงกับเว็บไซต์อื่น ถ้าเห็นหน้านี้ แปลว่า Host name ใน Binding ไม่ตรงกับชื่อที่พิมพ์ในเบราว์เซอร์ ตรวจว่าใส่ทั้งแบบมีและไม่มี www แล้วหรือยัง หรือถ้าไม่ใช้ Default Web Site ให้ Stop ไว้

HTTP Error 403.14 Forbidden

หมายถึงไม่พบไฟล์หน้าแรกในรายการ Default Document และไม่ได้เปิด Directory Browsing ให้ตรวจว่ามีไฟล์หน้าแรกในโฟลเดอร์ และชื่อไฟล์อยู่ในรายการ Default Document

HTTP Error 503 Service Unavailable

Application Pool ของเว็บไซต์หยุดทำงาน มักเกิดจากแอปล้มซ้ำหลายครั้งหรือตั้งค่า Identity ผิด เปิด IIS Manager > Application Pools ดูสถานะ แล้วตรวจ Event Viewer > Windows Logs > Application และ System เพื่อหาสาเหตุ

HTTP Error 500.19 หรือ 401.3

500.19 มักเกิดจากไฟล์ web.config มีรูปแบบผิด หรือใช้โมดูลที่ยังไม่ได้ติดตั้ง (เช่น URL Rewrite) ส่วน 401.3 เกิดจาก IIS ไม่มีสิทธิ์อ่านไฟล์ ให้รันคำสั่ง icacls ในขั้นตอนที่ 3 อีกครั้ง

คู่มือทางการของ IIS อ่านเพิ่มเติมได้ที่ https://learn.microsoft.com/iis/

หากติดตั้งแล้วเว็บไซต์ยังไม่ทำงาน ติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security