نویسنده: محمد هانی فیض — دانشجوی کدینگیار
WSL راهی ساده و کاربردی برای استفاده از محیط لینوکس در کنار ویندوز است؛ بدون نیاز به Dual Boot یا ماشین مجازی. در این مقاله میبینید WSL دقیقاً چه مشکلی را برای برنامهنویسان حل میکند، چرا برای Backend اهمیت دارد، چگونه با ابزارهایی مثل VS Code و Docker استفاده میشود و چطور آن را از صفر نصب و برای توسعه پروژههای خود آماده کنید.
اگر برنامهنویس باشید، احتمالاً با این موقعیت روبهرو شدهاید:
یک پروژه را از GitHub دریافت میکنید، اما در فایل README آن دستورهایی مثل این میبینید:
sudo apt install ...docker compose upchmod +x deploy.sh
یا پروژهای دارید که قرار است در نهایت روی یک Linux Server اجرا شود.
اما سیستم شخصی شما Windows است.
در این شرایط معمولاً چند انتخاب دارید:
- یک سیستمعامل Linux کنار Windows نصب کنید (Dual Boot)
- یک ماشین مجازی مثل VMware یا VirtualBox راهاندازی کنید
- دنبال نسخه Windows ابزارها بگردید
- یا از یک محیط Linux داخل Windows استفاده کنید
اینجاست که WSL وارد میشود.
WSL یا Windows Subsystem for Linux قابلیتی از Windows است که اجازه میدهد یک محیط Linux واقعی را در کنار Windows داشته باشید؛ بدون اینکه نیاز باشد سیستمعامل خود را تغییر دهید یا یک ماشین مجازی کامل اجرا کنید.
اما ارزش واقعی WSL فقط داشتن یک Terminal لینوکس نیست.
برای یک برنامهنویس، WSL یعنی نزدیکتر شدن محیط توسعه به محیط واقعی اجرای پروژهها؛ جایی که معمولاً Linux، Docker، Server و ابزارهای Open Source حضور دارند.
WSL چه مشکلی را برای برنامهنویسان حل میکند؟
بخش بزرگی از دنیای توسعه نرمافزار روی Linux ساخته شده است.
برای مثال، ممکن است روی لپتاپ خود Windows داشته باشید، اما پروژهای که توسعه میدهید در نهایت روی یک سرور Linux اجرا شود.
در چنین شرایطی تفاوتهایی بین محیط شما و محیط واقعی پروژه ایجاد میشود:
- دستورات Terminal متفاوت هستند.
- مدیریت Permissionها متفاوت است.
- مسیر فایلها و File System متفاوت است.
- بعضی ابزارها فقط برای Linux طراحی شدهاند.
- رفتار بعضی کتابخانهها در Windows و Linux یکسان نیست.
فرض کنید یک پروژه Django دارید:
روی سیستم شما: Windows, Python, Django
اما روی سرور: Linux, Python, Django, Nginx, PostgreSQL, Redis, Docker
هرچقدر پروژه حرفهایتر شود، فاصله بین Windows و محیط واقعی بیشتر خودش را نشان میدهد.
WSL این فاصله را کمتر میکند.
WSL دقیقاً چیست؟
WSL مخفف Windows Subsystem for Linux است.
به زبان ساده، WSL یک محیط Linux را داخل Windows فراهم میکند.
شما میتوانید یک Distribution مثل Ubuntu نصب کنید و از ابزارهای Linux استفاده کنید:
python, git, ssh, docker, grep, sed, awkبدون اینکه Windows را ترک کنید.
امروزه معمولاً نسخه WSL 2 استفاده میشود، زیرا معماری آن سازگاری بسیار بیشتری با ابزارهای Linux دارد.
تفاوت WSL با Virtual Machine و Dual Boot
قبل از WSL، برنامهنویسان معمولاً از دو روش استفاده میکردند.
Dual Boot
در این روش، Windows و Linux دو سیستمعامل مستقل روی یک کامپیوتر هستند و هنگام روشن شدن سیستم، یکی از آنها را انتخاب میکنید:
کامپیوتر
├── Windows
└── Linuxمزیت: اجرای کامل Linux
معایب: برای تغییر محیط باید Restart کنید؛ مدیریت آن سختتر است.
Virtual Machine
مثل VMware یا VirtualBox:
Windows
│
└── Virtual Machine
│
└── Linuxمزیت: Linux کامل دارید.
معایب: مصرف RAM و CPU بیشتر؛ سرعت کمتر نسبت به سیستم اصلی.
WSL
Windows
│
└── WSL
│
└── Ubuntuمزیت: سریع؛ یکپارچه با Windows؛ مناسب برای توسعه.
در حال بارگذاری تصویر...

مهمترین کاربردهای WSL برای برنامهنویسان
۱. استفاده از ابزارهای واقعی Linux
یکی از اصلیترین دلایل استفاده از WSL این است که ابزارهای استاندارد Linux را مستقیماً اجرا کنید.
کاربرددستورجستجو داخل فایلهاgrep "ERROR" application.logپیدا کردن فایلهاfind . -name "*.py"مشاهده Logهاtail -f application.logاتصال به Serverssh user@serverاین دستورها فقط چند نمونه ساده هستند، اما وقتی با Backend، DevOps یا Server کار میکنید، بخش مهمی از Workflow روزانه شما میشوند.
در حال بارگذاری تصویر...

WSL برای برنامهنویسان Python و Django
اگر Python Developer باشید، احتمالاً با ابزارهایی مثل Django, FastAPI, PostgreSQL, Redis, Celery, Docker برخورد خواهید کرد.
بسیاری از این ابزارها در محیط Linux رایجتر هستند.
برای مثال، یک پروژه Django ممکن است نیاز داشته باشد:
python manage.py runserver
یا:
docker compose up
یا:
chmod +x deploy.sh
در WSL شما همان محیطی را دارید که شباهت زیادی به محیط Production دارد.
به همین دلیل، برای برنامهنویسان پایتون ترکیب زیر یکی از ستاپهای محبوب توسعه است:
Windows + WSL 2 + Ubuntu + Python + Docker
کار با پروژههای GitHub در WSL
یکی از مشکلات رایج کاربران Windows این است که بعضی پروژههای Open Source برای Linux نوشته شدهاند.
مثلاً در README پروژه میبینید:
./configuremakesudo make install
در Windows ممکن است مجبور شوید ابزارهای مختلفی نصب کنید یا تغییرات زیادی انجام دهید.
اما در WSL ابتدا وارد محیط Linux میشوید:
cd ~/projects
Repository را دریافت میکنید:
git clone https://github.com/example/project.git
و سپس همان دستورهای مستندات پروژه را اجرا میکنید.
WSL و VS Code؛ ترکیب محبوب برنامهنویسان
یکی از بهترین تجربهها برای توسعه با WSL استفاده از VS Code است.
ساختار معمول:
Windows
│
└── VS Code
│
└── WSL
│
└── Ubuntu
│
└── Python Projectدر این حالت:
- ظاهر VS Code روی Windows است.
- Terminal داخل Linux اجرا میشود.
- Python Interpreter داخل WSL قرار دارد.
- پروژه در محیط Linux اجرا میشود.
برای باز کردن پروژه:
cd ~/projects/my-project
سپس:
code .
VS Code پروژه را با محیط WSL باز میکند.
در حال بارگذاری تصویر...

پروژهها را کجا ذخیره کنیم؟
یکی از نکات مهم در WSL محل قرار دادن پروژهها است.
Windows را میتوانید از داخل WSL ببینید:
/mnt/c/Users/اما برای پروژههای برنامهنویسی بهتر است پروژه را داخل خود Linux ذخیره کنید.
مثلاً:
/home/username/projects
~/projectsدلیل این کار:
- سرعت بهتر در خواندن و نوشتن فایلها
- عملکرد بهتر ابزارهای توسعه
- تجربه نزدیکتر به Linux واقعی
خصوصاً پروژههایی که فایلهای زیادی دارند، مثل Node.js، Python، Django و Docker.
WSL و Docker چه ارتباطی دارند؟
WSL و Docker دو ابزار متفاوت هستند.
- WSL: یک محیط Linux فراهم میکند.
- Docker: برای اجرای Container استفاده میشود.
اما این دو ابزار معمولاً کنار هم استفاده میشوند.
Windows
│
└── WSL Ubuntu
│
├── Django Application
│
└── Docker
│
└── PostgreSQL Containerیا در بسیاری از Setupها:
Windows
│
└── Docker Desktop
│
└── WSL 2 Backend
│
└── Linux ContainersDocker Desktop در Windows میتواند از WSL 2 برای اجرای Containerهای Linux استفاده کند.
در حال بارگذاری تصویر...

نصب WSL
در نسخههای جدید Windows، نصب WSL بسیار ساده است.
PowerShell را با دسترسی Administrator باز کنید:
wsl --installاین دستور WSL و یک Distribution مانند Ubuntu را نصب میکند.
بعد از نصب، سیستم را Restart کنید.
در حال بارگذاری تصویر...

بررسی نصب و نسخه WSL
برای بررسی نسخه:
wsl -l -vخروجی مشابه:
NAME STATE VERSION
Ubuntu Running 2عدد ۲ یعنی از WSL 2 استفاده میکنید.
برای تنظیم WSL 2 بهعنوان نسخه پیشفرض:
wsl --set-default-version 2برای مشاهده توزیعهای موجود:
wsl --list --onlineآمادهسازی Ubuntu برای برنامهنویسی
بعد از ورود به Ubuntu ابتدا Packageها را بهروزرسانی کنید:
sudo apt update
ابزارهای پایه:
sudo apt install git curl wget build-essential
نصب Python:
sudo apt install python3 python3-pip python3-venv
بررسی نسخه:
python3 --version
در حال بارگذاری تصویر...

ساخت محیط Python در WSL
برای پروژه:
mkdir ~/projects/myappcd ~/projects/myapp
ساخت Virtual Environment:
python3 -m venv .venv
فعالسازی:
source .venv/bin/activate
حالا میتوانید پکیج نصب کنید:
pip install django
یا:
pip install -r requirements.txt
مشکلات رایج WSL
پروژه را داخل /mnt/c گذاشتهام و کند است
برای پروژههای توسعهای بهتر است از ~/projects استفاده کنید.
WSL منابع زیادی مصرف میکند
میتوانید آن را خاموش کنید:
wsl --shutdownDocker پروژه را پیدا نمیکند
بررسی کنید:
Docker Desktop → Settings → Resources → WSL Integration فعال باشد.
چه زمانی WSL انتخاب مناسبی نیست؟
WSL برای همه پروژهها ضروری نیست.
اگر فقط با HTML/CSS، طراحی سایت ساده یا ابزارهای کاملاً Windows-based کار میکنید، احتمالاً نیاز فوری به WSL ندارید.
اما اگر وارد این حوزهها میشوید:
- Backend
- Python
- Django
- Docker
- Linux Server
- Open Source
WSL یکی از ابزارهایی است که سرعت یادگیری و توسعه شما را بیشتر میکند.
جمعبندی
WSL را نباید فقط یک Terminal لینوکس داخل Windows بدانیم.
ارزش اصلی WSL برای برنامهنویسان این است که بتوانند در محیطی نزدیک به Production توسعه دهند؛ محیطی که Linux، Server، Docker و ابزارهای Backend در آن نقش اصلی دارند.
با استفاده از WSL میتوانید بدون نصب یک سیستمعامل جداگانه:
- پروژههای Linux-based را اجرا کنید.
- ابزارهای Linux را یاد بگیرید.
- با Serverها راحتتر کار کنید.
- Workflow حرفهایتری برای توسعه داشته باشید.
برای بسیاری از برنامهنویسان Windows، ترکیب Windows + WSL 2 + Ubuntu + VS Code + Docker یکی از بهترین محیطهای توسعه امروزی است.
مهمترین نکته این است: وقتی پروژه شما برای Linux طراحی شده، به جای اینکه Linux را شبیهسازی کنید، میتوانید واقعاً در یک محیط Linux کار کنید.

















