WSL sử dụng hệ thống init System V theo mặc định. Đây là cách bạn có thể thay thế điều đó bằng systemd để quản lý các dịch vụ trên WSL như một người chuyên nghiệp.
Hệ thống con của Windows dành cho Linux, hoặc WSL, là một cách tuyệt vời cho các nhà phát triển cần chạy Linux và Windows để làm điều đó mà không cần phải thiết lập máy ảo hoặc khởi động kép.
Một tính năng mới chính là khả năng chạy systemd trên WSL, rất hữu ích cho các nhà phát triển web thiết lập môi trường thử nghiệm cục bộ. Đây là cách bật và sử dụng nó.
Tại sao cài đặt systemd trên WSL?
Các dịch vụ WSL theo mặc định chạy dịch vụ System V init cũ hơn và các dịch vụ được khởi động bằng lệnh dịch vụ. Vào tháng 9 năm 2022, Microsoft đã thêm tùy chọn sử dụng systemd để quản lý các dịch vụ. Hầu hết các bản phân phối Linux chính đã được thay đổi thành systemd.
Bất chấp những tranh cãi, trong thực tế sử dụng, việc bắt đầu và dừng các dịch vụ với systemd đơn giản hơn nhiều. Việc làm theo các hướng dẫn Linux khác cũng dễ dàng hơn vì bạn không phải thay đổi nhiều lệnh.
Môi trường thử nghiệm LAMP cục bộ sẽ gần với máy chủ Linux tiêu chuẩn hơn, vì vậy ứng dụng của bạn sẽ dễ gỡ lỗi hơn.
Cách bật systemd trên WSL
Để kích hoạt systemd, bạn phải chạy đúng phiên bản WSL. systemd yêu cầu phiên bản WSL 0.67.6 trở lên. Bạn có thể kiểm tra số phiên bản bằng cách mở PowerShell và nhập:
wsl
Nếu bạn đã cài đặt phiên bản cũ hơn và muốn sử dụng systemd, bạn có thể cập nhật WSL bằng cách sử dụng:
wsl
Bây giờ bạn sẽ phải thiết lập systemd trong bất kỳ bản phân phối nào bạn đã cài đặt với WSL. Quá trình này giống nhau trên bất kỳ bản phân phối WSL nào, cho dù đó là Ubuntu, Debian, Fedora hay thứ gì khác.
Chỉ cần chỉnh sửa /etc/wsl.conf tệp trong hệ thống của bạn dưới dạng thư mục gốc và thêm các dòng sau:
[boot]
systemd=true
Nếu tệp wsl.conf không tồn tại, đừng lo lắng và hãy tiếp tục bằng cách tự tạo. Những dòng này sẽ hoạt động bất kể.
Lưu tệp và bây giờ bạn sẽ phải khởi động lại bất kỳ bản phân phối WSL nào đang chạy. Để thực hiện việc này, hãy mở cửa sổ PowerShell và nhập lệnh sau:
wsl
Mở một thiết bị đầu cuối khác và bạn sẽ có thể quản lý các dịch vụ bằng systemd trên WSL.
Khởi động và Ngừng dịch vụ WSL với systemd
Bây giờ bạn có thể sử dụng systemctl để bắt đầu và dừng các dịch vụ trong WSL.
Giả sử bạn đang sử dụng Apache để chạy một máy chủ web cục bộ nhằm kiểm tra một ứng dụng web mà bạn đang phát triển.
Bạn sẽ bắt đầu Apache như thế này:
sudo systemctl start apache2.service
Nếu bạn muốn nó tự động khởi động, bạn hãy kích hoạt nó bằng cách sử dụng:
sudo systemctl enable apache2.service
Và vô hiệu hóa nó bằng:
sudo systemctl stop apache2.service
Bây giờ bạn có thể chạy systemd trên WSL
Với các bản cập nhật mới nhất cho WSL, giờ đây bạn có thể bật systemd và khởi động và dừng các dịch vụ khi cần. Điều này làm cho WSL trở thành một môi trường tốt để phát triển các ứng dụng web, vì bạn có thể kiểm tra chúng như thể bạn đang sử dụng bất kỳ máy Linux tiêu chuẩn nào khác.
Việc cài đặt máy chủ LAMP (Linux, Apache, MySQL, PHP) trên Windows Subsystem for Linux cũng cực kỳ dễ dàng.