راهنمای کامل میزبانی ASP.NET Core در لینوکس
مراحل و نکات مهم برای استقرار امن و بهینه برنامه‌های ASP.NET Core در لینوکس با استفاده از Kestrel و Nginx

راهنمای کامل میزبانی ASP.NET Core در لینوکس

این مقاله به شما یاد می‌دهد که چگونه برنامه‌های ASP.NET Core را در لینوکس میزبانی کنید. با نصب .NET runtime، پیکربندی Kestrel و Nginx و نکات امنیتی، بهینه‌سازی و مقیاس‌پذیری آشنا شوید.
0 اشتراک گذاری
0
0
0
0

 

میزبانی ASP.NET Core روی لینوکس — چرا و چه زمانی؟

ASP.NET Core روی لینوکس با *Kestrel* به‌خوبی اجرا می‌شود و انتخاب این پلتفرم برای میزبانی می‌تواند مزایای مهمی از جمله کاهش هزینه‌، سازگاری با ابزارهای متن‌باز و سهولت در کانتینری‌سازی فراهم کند. این گزینه برای وب‌سایت‌ها، APIها، سرویس‌های پس‌زمینه و اپلیکیشن‌های حساس به تأخیر مثل گیم و ترید مناسب است.

 

پیش‌نیازها و انتخاب سرور

 

تووزیع لینوکس و نسخه .NET

توزیع‌های پیشنهادی شامل Ubuntu LTS (20.04/22.04)، Debian (11/12)، و CentOS Stream یا Rocky/Alma برای تولید هستند. برای محیط‌های با امنیت سخت‌گیرانه از RHEL استفاده کنید. از runtime و SDK رسمی مایکروسافت (مثلاً .NET 6/7/8) بهره ببرید.

 

منابع سخت‌افزاری و نوع سرویس

برای وب‌سایت‌ها و APIهای سبک معمولاً 1-2 vCPU، 1-4GB RAM و NVMe SSD کافی است. برنامه‌های تجاری و سنگین به 4+ vCPU و 8+ GB RAM و شبکه پرسرعت نیاز دارند.

برای ترید و گیمینگ با پینگ پایین بهتر است VPSهای لوکالیزه در نزدیکی صرافی یا دیتاسنتر منطقه‌ای انتخاب شوند. شرکت ما 85+ لوکیشن جهانی دارد که انتخاب نزدیک‌ترین دیتاسنتر را آسان می‌کند.

برای AI/Inference یا رندرینگ از سرورهای گرافیکی (GPU) استفاده کنید؛ شرکت ما سرویس GPU Cloud و سرور محاسباتی با شبکه پرسرعت ارائه می‌دهد.

برای محافظت از حملات، سرور ضد DDoS و شبکه‌ای با BGP و CDN را در نظر بگیرید.

 

نصب و راه‌اندازی پایه (.NET runtime) — مثال برای Ubuntu

برای نصب runtime رسمی مایکروسافت مخزن را اضافه و سپس runtime را نصب کنید:

sudo apt update
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y dotnet-runtime-7.0

سپس یک کاربر سرویس امن و دایرکتوری اپلیکیشن را ایجاد کنید:

sudo useradd -r -s /usr/sbin/nologin aspnetuser
sudo mkdir -p /var/www/myapp
sudo chown aspnetuser:aspnetuser /var/www/myapp

 

استقرار بدون کانتینر — Kestrel + systemd + Nginx

 

انتشار برنامه و تنظیم systemd

بیلد و انتشار برنامه به مسیر دایرکتوری اپ:

dotnet publish -c Release -o /var/www/myapp

نمونه‌ی unit file برای systemd را در /etc/systemd/system/myapp.service قرار دهید:

[Unit]
Description=My ASP.NET Core App
After=network.target

[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/MyApp.dll
Restart=always
# Safe User/Group
User=aspnetuser
Group=aspnetuser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

فعال‌سازی و اجرای سرویس:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo journalctl -u myapp -f

 

پیکربندی Nginx به‌عنوان reverse proxy (SSL termination)

نصب Nginx و Certbot:

sudo apt install -y nginx certbot python3-certbot-nginx

نمونه کانفیگ Nginx را در /etc/nginx/sites-available/myapp قرار دهید:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        proxy_pass         http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

دریافت گواهی SSL رایگان:

sudo certbot --nginx -d example.com -d www.example.com

 

استقرار با Docker و Docker Compose

نمونه Dockerfile چندمرحله‌ای برای تولید ایمیج کوچک و بهینه:

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]

نمونه docker-compose.yml (هم‌چنین می‌توانید از nginx-proxy یا Traefik استفاده کنید):

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
  nginx:
    image: nginx:stable
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs:/etc/letsencrypt

برای CI/CD از GitLab CI یا GitHub Actions برای بیلد، تست و دپلوی ایمیج به رجیستری و سپس pull روی سرور استفاده کنید. شرکت ما میزبانی GitLab را برای تیم‌های خصوصی ارائه می‌دهد.

 

امنیت و بهترین رویه‌ها

 

شبکه و فایروال

فقط پورت‌های ضروری را باز کنید (80/443) و دسترسی SSH را محدود به آدرس‌های موردنیاز نمایید.

sudo ufw allow 80,443/tcp
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp  # مثال
sudo ufw enable

 

TLS و هاردنینگ

 

حملات و حفاظت

از fail2ban برای محافظت از SSH و از rate-limiting در Nginx استفاده کنید. برای اپلیکیشن‌های حساس از سرورهای ضد DDoS بهره ببرید؛ شرکت ما بسته‌های ضد DDoS و CDN با BGP ارائه می‌دهد.

 

SELinux / AppArmor

در توزیع‌هایی که SELinux فعال است (RHEL/CentOS)، اطمینان حاصل کنید که contextها برای فایل‌ها و پورت‌ها درست تنظیم شده‌اند. در دیگر توزیع‌ها از AppArmor برای پروفایلینگ استفاده کنید — خاموش کردن دائمی توصیه نمی‌شود.

 

بهینه‌سازی عملکرد و مانیتورینگ

 

Kestrel tuning و تنظیمات کانکشن

از HTTP/2 و Keep-Alive در لایه‌ی reverse proxy استفاده کنید. محدودیت‌های Kestrel را در appsettings.json تنظیم نمایید (مثلاً Limits.MaxConcurrentConnections، MaxRequestBodySize).

برای فشرده‌سازی پاسخ‌ها از response compression (Brotli/Gzip) استفاده کنید:

services.AddResponseCompression(options => { options.EnableForHttps = true; });

 

کش و جلسه‌ها

برای distributed cache و session state از Redis استفاده کنید تا امکان اسکیل افقی فراهم شود. برای محتوای استاتیک از CDN بهره ببرید تا بار سرور کاهش یابد.

 

مانیتورینگ و لاگ

لاگینگ ساختاریافته را با Serilog یا Microsoft.Extensions.Logging ترکیب کرده و به ELK/Graylog ارسال کنید. برای متریک‌ها از dotnet-counters، Prometheus exporter (dotnet_exporter) و Grafana استفاده کنید. APM مثل Application Insights برای ترسینگ مفید است.

 

مقایسه لوکیشن‌ها و انتخاب مناسب بر اساس کاربرد

برای ترید، پینگ پایین و ثبات اهمیت دارد — لوکیشن نزدیک به صرافی‌ها یا شبکه‌های خصوصی را انتخاب کنید. برای گیم سرورهای منطقه‌ای و VPS مخصوص گیم با شبکه پرسرعت توصیه می‌شود.

برای AI و رندرینگ از GPU Cloud و سرورهای محاسباتی با NVMe و پهنای باند بالا استفاده کنید. برای وب‌سایت‌ها و اپ‌ها لوکیشن نزدیک کاربران اصلی و ترکیب CDN و چند-منطقه‌ای برای دسترس‌پذیری بهتر پیشنهاد می‌شود. شرکت ما 85+ لوکیشن جهانی و CDN و شبکه‌ی BGP ارائه می‌دهد.

 

مقیاس‌پذیری و دسترس‌پذیری بالا

از لود بالانسر لایه 7 (Nginx/HAProxy/Cloud LB) یا LB دیتاسنتر استفاده کنید. Sessionها را در Redis یا دیتابیس مشترک نگهداری کنید. برای Auto-scaling کانتینرها و VMها را افقی کنید؛ در Kubernetes از HPA استفاده نمایید. برای توزیع جهانی ترافیک از BGP anycast و CDN بهره بگیرید.

 

رفع اشکال رایج

موارد معمول و روش بررسی:

  • 502 Bad Gateway: بررسی systemd با journalctl -u myapp، پورت محلی با ss -tlnp و مجوز فایل‌ها.
  • مشکل SSL: بررسی certbot renew، دسترسی به فولدر cert و ارجاع درست در Nginx.
  • خطاهای فایل/پرمیشن: owner/group صحیح برای کاربر سرویس را بررسی کنید.
  • کندی غیرمنتظره: از dotnet-counters و profiler برای یافتن گلوگاه‌های CPU یا GC استفاده کنید.

 

نکات عملی برای تولید (DevOps)

  • از multi-stage Docker builds برای کوچک‌سازی ایمیج استفاده کنید.
  • Secrets را در مدیریت رموز (Vault، GitLab CI secrets) نگهداری کنید.
  • نقاط سلامتی (health endpoints) بنویسید و liveness/readiness را برای orchestrator پیکربندی کنید.
  • اتوماسیون build/test/deploy را با GitLab CI یا GitHub Actions انجام دهید.

 

خلاصه و پیشنهادهای سرویس

Hosting ASP.NET Core on Linux گزینه‌ای **مقیاس‌پذیر، امن و قابل توسعه** برای اپلیکیشن‌های وب و API است. برای عملکرد و دسترس‌پذیری بالا توصیه می‌شود اپ را با Kestrel + Nginx یا در کانتینر و با orchestrator مستقر کنید، TLS و هاردنینگ را جدی بگیرید، از Redis/DB برای state استفاده کنید و CDN را برای محتوای استاتیک به‌کار ببرید.

شرکت ما با بیش از 85 لوکیشن جهانی، سرور گرافیکی (GPU Cloud)، سرورهای محاسباتی و اختصاصی، VPS مخصوص ترید و گیم، زیرساخت ضد DDoS، میزبانی GitLab، CDN و شبکه BGP، راهکارهای میزبانی و پشتیبانی برای اپلیکیشن‌های ASP.NET Core را با پلن‌های مختلف ارائه می‌دهد.

شاید دوست داشته باشید
نصب و پیکربندی سرور SoftEther روی اوبونتو 22.04/20.04

نصب و پیکربندی سرور SoftEther روی اوبونتو 22.04/20.04

در این راهنما به شما نشان خواهیم داد که چگونه سرور SoftEther را به صورت گام‌به‌گام بر روی اوبونتو 22.04/20.04 نصب و پیکربندی کنید. راهنمایی‌ها شامل تأمین امنیت، اقدامات مربوط به فایروال و بهینه‌سازی عملکرد برای ترید و بازی خواهد بود.
راهنمای کامل خودکارسازی گرم‌‌سازی IP و دامنه برای سرور ایمیل

راهنمای کامل خودکارسازی گرم‌‌سازی IP و دامنه برای سرور ایمیل

در این مقاله به بررسی کامل فرایند گرم‌سازی IP و دامنه برای سرور ایمیل می‌پردازیم. با روش‌های خودکار این فرایند، می‌توانید اعتبارسنجی بهتری داشته باشید و از ورود ایمیل‌ها به پوشه spam جلوگیری کنید. همچنین به نکات فنی، مدیریتی و بهترین شیوه‌ها در این زمینه پرداخته‌ایم.
increase-site-speed

راهکارهای افزایش سرعت سایت با استفاده از ابزارهای cPanel

سرعت بارگذاری سایت یکی از مهم‌ترین فاکتورها در بهبود تجربه کاربر (UX) و سئو (SEO) است. کاربرانی که با تأخیر در لود سایت مواجه می‌شوند، معمولاً صفحه را ترک می‌کنند و نرخ پرش افزایش می‌یابد. ، به بررسی راهکارهای تخصصی برای افزایش سرعت سایت از طریق تنظیمات و ابزارهای موجود در cPanel می‌پردازیم.
راهنمای کامل امکانات و راه اندازی مدیریت هاست aapanel

راهنمای کامل امکانات و راه اندازی مدیریت هاست aapanel

aaPanel یک کنترل‌پنل متنوع و کارآمد برای مدیریت هاست و اپلیکیشن‌ها است. این مقاله به امکانات کلیدی، نصب، مدیریت دیتابیس‌ها و امنیت و یکپارچگی آن با WHMCS می‌پردازد و برای مدیران وب و توسعه‌دهندگان مفید است.
راهنمای جامع بهینه‌سازی عملکرد GPU برای یادگیری عمیق

راهنمای جامع بهینه‌سازی عملکرد GPU برای یادگیری عمیق

در این مقاله به بررسی بهینه‌سازی عملکرد GPU برای یادگیری عمیق پرداخته‌ایم. با روش‌های عملی و فنی، به شما آموزش می‌دهیم که چگونه با استفاده از سخت‌افزار مناسب و تنظیمات بهینه، کمترین زمان آموزش و بالاترین بهره‌وری را به دست بیاورید.
How-to-Install-Cockpit-on-Ubuntu-24.04

نحوه نصب Cockpit در اوبونتو 24.04

Cockpit یک پنل مدیریتی تحت وب برای سرورها است که امکان نظارت، مدیریت سرویس‌ها، ذخیره‌سازی، لاگ‌ها و کاربران را به شکلی ساده و گرافیکی فراهم می‌کند. استفاده از Cockpit روی VPS به مدیران سیستم این امکان را می‌دهد که بسیاری از کارهای ادمین سرور را بدون نیاز به خط فرمان انجام دهند. در ادامه، نحوه نصب، پیکربندی امنیتی و دسترسی به Cockpit را گام‌به‌گام بررسی می‌کنیم.