WSL به طور پیش فرض از سیستم System V init استفاده می کند. در اینجا نحوه جایگزینی آن با systemd برای مدیریت خدمات در WSL مانند یک حرفه ای آورده شده است.
Windows Subsystem for Linux یا WSL یک راه عالی برای توسعه دهندگانی است که نیاز به اجرای لینوکس و ویندوز دارند تا این کار را بدون نیاز به راه اندازی ماشین مجازی یا بوت دوگانه انجام دهند.
یکی از ویژگی های مهم جدید، توانایی اجرای systemd در WSL است که برای توسعه دهندگان وب که محیط های آزمایشی را به صورت محلی تنظیم می کنند مفید است. در اینجا نحوه فعال کردن و استفاده از آن آورده شده است.
چرا systemd را روی WSL نصب کنیم؟
سرویسهای WSL بهطور پیشفرض سرویس قدیمیتر System V init را اجرا میکنند و سرویسها با دستور سرویس شروع میشوند. در سپتامبر 2022، مایکروسافت گزینه استفاده از systemd را برای مدیریت خدمات اضافه کرد. اکثر توزیع های اصلی لینوکس قبلاً به systemd تغییر کرده اند.
علیرغم اختلاف نظرها، در استفاده واقعی، شروع و توقف خدمات با systemd بسیار ساده تر است. همچنین دنبال کردن سایر آموزشهای لینوکس آسانتر است، زیرا نیازی به تغییر دستورات ندارید.
یک محیط تست LAMP محلی به سرور استاندارد لینوکس نزدیکتر خواهد بود، بنابراین اشکالزدایی برنامه شما آسانتر خواهد بود.
نحوه فعال کردن systemd در WSL
برای فعال کردن systemd، باید نسخه مناسب WSL را اجرا کنید. systemd به WSL نسخه 0.67.6 یا بالاتر نیاز دارد. با باز کردن PowerShell و تایپ کردن، می توانید شماره نسخه را بررسی کنید:
wsl --version
اگر نسخه قدیمیتری نصب کردهاید و میخواهید از systemd استفاده کنید، میتوانید WSL را با استفاده از:
wsl --update
اکنون باید systemd را در هر توزیعی که با WSL نصب کرده اید راه اندازی کنید. این فرآیند در هر توزیع WSL یکسان است، خواه اوبونتو، دبیان، فدورا یا چیز دیگری باشد.
به سادگی فایل /etc/wsl.conf را در سیستم خود به عنوان root ویرایش کنید و این خطوط را اضافه کنید:
[boot]
systemd=true
اگر فایل wsl.conf وجود ندارد، نگران نباشید و خودتان آن را ایجاد کنید. این خطوط بدون در نظر گرفتن کار خواهند کرد.
فایل را ذخیره کنید و اکنون باید هر توزیع WSL در حال اجرا را مجددا راه اندازی کنید. برای انجام این کار، یک پنجره PowerShell باز کنید و این دستور را تایپ کنید:
wsl --shutdown
ترمینال دیگری را باز کنید و میتوانید خدمات را با systemd در WSL مدیریت کنید.
شروع و توقف خدمات WSL با systemd
اکنون می توانید از systemctl برای شروع و توقف خدمات در WSL استفاده کنید.
فرض کنید از آپاچی برای اجرای یک وب سرور محلی برای آزمایش یک برنامه وب که در حال توسعه بودید استفاده میکردید.
شما آپاچی را به این صورت شروع می کنید:
sudo systemctl start apache2.service
اگر می خواهید به طور خودکار شروع شود، می توانید آن را با استفاده از:
sudo systemctl apache2.service را فعال می کند
و غیر فعالش کنید با:
sudo systemctl stop apache2.service
اکنون می توانید systemd را روی WSL اجرا کنید
با آخرین بهروزرسانیهای WSL، اکنون میتوانید systemd را فعال کنید و خدمات را در صورت نیاز شروع و متوقف کنید. این امر WSL را به محیط خوبی برای توسعه برنامه های کاربردی وب تبدیل می کند، زیرا می توانید آنها را به گونه ای آزمایش کنید که گویی از هر دستگاه لینوکس استاندارد دیگری استفاده می کنید.
همچنین نصب سرور LAMP (Linux، Apache، MySQL، PHP) در زیر سیستم ویندوز برای لینوکس بسیار آسان است.