Skip to content
VDS · Windows Server

IIS: Windows-এ একটি সাইট

VPS-এ IIS ওয়েব সার্ভার কীভাবে ইনস্টল করবেন, নিজের ডোমেইনে প্রথম সাইট প্রকাশ করবেন, সার্টিফিকেট ইস্যু করবেন, এবং লগে ডুবে যাওয়া এড়াবেন।

আপডেট: ২৩ আগস্ট, ২০২৬

IIS হলো Windows Server-এর বিল্ট-ইন ওয়েব সার্ভার। এটি ASP.NET অ্যাপ্লিকেশন, স্ট্যাটিক কনটেন্ট এবং লোকাল পোর্টে শোনা কোনো সার্ভিসের সামনে রিভার্স প্রক্সি হিসেবে ভালোভাবে কাজ করে।

ইনস্টলেশন

Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature Web-Asp-Net48, Web-Http-Redirect, Web-Dyn-Compression

ফায়ারওয়ালে পোর্টগুলো খুলুন:

New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

প্যানেলের /hosting/vds/m/<id> এর “Overview” থেকে আপনার মেশিনের ঠিকানায় স্টার্ট পেজ খুলছে কিনা যাচাই করুন। না খুললে Windows Firewall দেখুন।

আপনার প্রথম সাইট

Import-Module WebAdministration
New-Item -ItemType Directory C:\sites\example
Set-Content C:\sites\example\index.html "<h1>It works</h1>"

New-WebAppPool -Name "example"
New-Website -Name "example" -Port 80 -HostHeader "example.ru" `
  -PhysicalPath "C:\sites\example" -ApplicationPool "example"

হোস্ট হেডার (-HostHeader) দিয়ে আপনি একই ঠিকানায় একাধিক সাইট হোস্ট করতে পারেন: IIS ডোমেইন অনুযায়ী সেগুলো আলাদা করে চেনে। ডোমেইনটিকে অবশ্যই একটি A রেকর্ড দিয়ে আপনার মেশিনের ঠিকানায় পয়েন্ট করতে হবে।

সাইটটির ডিরেক্টরিতে শুধু ন্যূনতম অনুমতির প্রয়োজন — রিড:

icacls C:\sites\example /grant "IIS AppPool\example:(OI)(CI)R" /T

HTTPS সার্টিফিকেট

বিনামূল্যে সার্টিফিকেট পাওয়ার সবচেয়ে সহজ উপায় হলো win-acme ক্লায়েন্ট: wacs.exe ডাউনলোড করুন, অ্যাডমিনিস্ট্রেটর হিসেবে চালান এবং তালিকা থেকে আপনার সাইট বেছে নিন — এটি সার্টিফিকেট ইস্যু করবে, সাইটে বাইন্ড করবে এবং একটি রিনিউয়াল টাস্ক তৈরি করবে।

বাইন্ডিংগুলো যাচাই করতে:

Get-WebBinding -Name "example"
New-WebBinding -Name "example" -Protocol https -Port 443 -HostHeader "example.ru" -SslFlags 1

সার্টিফিকেট ইস্যু করতে বাইরে থেকে পোর্ট 80 খোলা থাকতে হবে — ডোমেইন ভ্যালিডেশন এর মধ্য দিয়েই হয়।

IIS-এর পেছনে একটি অ্যাপ্লিকেশন

যদি আপনার সার্ভিস (Node, Python, .NET Kestrel) 127.0.0.1:5000-এ শোনে, তাহলে URL Rewrite এবং Application Request Routing মডিউল ইনস্টল করুন, প্রক্সিং চালু করুন এবং সাইটের web.config-এ নিচের অংশটি যোগ করুন:

<rule name="proxy" stopProcessing="true">
  <match url="(.*)" />
  <action type="Rewrite" url="http://127.0.0.1:5000/{R:1}" />
</rule>

এভাবে বাইরে শুধু সার্টিফিকেটসহ IIS উন্মুক্ত থাকে, আর অ্যাপ্লিকেশনটি লোকালহোস্টেই থাকে।

অপারেশন

Get-Website | Select-Object Name, State, PhysicalPath
Restart-WebAppPool example
Get-WebAppPoolState

লগগুলো C:\inetpub\logs\LogFiles-এ থাকে এবং সীমাহীনভাবে বাড়তে থাকে — 40 GB ডিস্কে এটি দ্রুত জমে যায়। IIS Manager-এ (the “Logging” সেকশন, ডেইলি ফাইল) রোটেশন সেট করুন এবং একটি শিডিউলড টাস্ক দিয়ে পুরোনো লগ মুছে ফেলুন:

Get-ChildItem C:\inetpub\logs\LogFiles -Recurse -File |
  Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item -Force

সাধারণ ত্রুটি

  • Error 500.19 — নষ্ট web.config বা অনুপস্থিত মডিউল। লোকাল রিকোয়েস্টের জন্য বিস্তারিত মেসেজ চালু করলে ত্রুটির টেক্সটে সঠিক কারণটি দেখা যায়।
  • অ্যাপ্লিকেশন পুল নিজে থেকেই বন্ধ হয়ে যায়। র‍্যাপিড-ফেইল প্রোটেকশন সক্রিয় হয়েছে: সাইটটি ক্র্যাশ করে এবং IIS এটি বন্ধ করে দেয়। কারণটি অ্যাপ্লিকেশন লগে খুঁজুন (Get-WinEvent -LogName Application -MaxEvents 30)।
  • সাইটটি ঠিকানা দিয়ে খোলে কিন্তু ডোমেইন দিয়ে খোলে না। হোস্ট হেডার মিলছে না, অথবা DNS এখনো আপডেট হয়নি।
  • পাবলিশ করার পর 403। ডিরেক্টরিতে অ্যাপ্লিকেশন পুলকে অনুমতি দেওয়া হয়নি।

আপনার সাইট ডিরেক্টরিগুলো C:\inetpub-এর বাইরে এবং C:\sites-এর মতো আলাদা ফোল্ডারে রাখুন — এতে ব্যাকআপ সহজ হয় এবং ডেটা না হারিয়ে সিস্টেম পুনরায় ইনস্টল করতে পারেন।