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-এর মতো আলাদা ফোল্ডারে রাখুন — এতে ব্যাকআপ সহজ হয় এবং ডেটা না হারিয়ে সিস্টেম পুনরায় ইনস্টল করতে পারেন।