Thiết lập môi trường phát triển Laravel/PHP tốc độ ánh sáng trên Windows 10 với Windows Subsystem for Linux (WSL)
Bài viết được sự cho phép của tác giả Nguyễn Trần Chung
WSL là gì
WSL (Windows Subsystem for Linux) là một tính năng có trên Windows x64 (từ Windows 10, bản 1607 và trên Windows Server 2019), nó cho phép chạy hệ điều hành Linux (GNU/Linux) trên Windows. Với WSL bạn có thể chạy các lệnh, các ứng dụng trực tiếp từ dòng lệnh Windows mà không phải bận tâm về việc tạo / quản lý máy ảo như trước đây. Cụ thể, một số lưu ý mà Microsoft liệt kê có thể làm với WSL
Bạn có thể làm gì với WSL
- Chạy được từ dòng lệnh các lệnh linux như ls, grep, sed … hoặc bất kỳ chương trình nhị phân 64 bit (ELF-64) nào của Linux
- Chạy được các công cụ như: vim, emacs …; các ngôn ngữ lập trình như NodeJS, JavaScript, C/C++, C# …, các dịch vụ như PHP, Nginx, MySQL, Apache, …
- Có thể thực hiện cài đặt các gói từ trình quản lý gói của Distro đó (như lệnh apt trên Ubuntu, yum trên CentOS)
- Từ Windows có thể chạy các ứng dụng Linux thông qua command line
- Từ Linux có thể gọi ứng dụng của Windows
Yêu cầu
- WSL1: Windows 10 1607 (window + R -> winver)
- WSL2: Kích hoạt chế độ hỗ trợ ảo hóa của CPU (CPU Virtualization), bạn kích hoạt bằng cách truy cập vào BIOS của máy, tùy loại mainboard mà nơi kích hoạt khác nhau
Việc làm Laravel hấp dẫn trong tháng lương 2000USD
Kích hoạt Windows Subsystem Linux
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Mở windows store lên cài đặt Ubuntu 18.04
Khởi động sau khi cài đặt
Login vào WSL với user mặc định là root
ubuntu1804 config --default-user root
Truy cập vào WSL
wsl
Cài đặt các gói cần thiết để chạy một webserver trên Ubuntu
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove -y
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/nginx
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.5/ubuntu bionic main'
sudo apt-get update -y
apt install zip unzip nginx redis mariadb-server php7.4 php7.4-fpm php7.4-mysql php7.4-mbstring php7.4-xml php7.4-bcmath php7.4-zip php7.4-sqlite -y
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/bin --filename=composer
rm -f composer-setup.php
git config --global user.name "Ten Cua Ban"
git config --global user.email [email protected]
Start service
service nginx start
service php7.4-fpm start
service mariadb start
service redis-server start
Cho phép mysql đăng nhập root với password null
mysql -u root
SELECT `user`, `plugin`, `host`, `password` FROM `mysql.user` WHERE `user` = 'root';
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
FLUSH PRIVILEGES;
VScode truy cập vào WSL
Cài extension: Remote – WSL
Ứng tuyển ngay các vị trí PHP tuyển dụng mới nhất trên TopDev
Thêm site laravel/php
Thêm 1 site mới bằng cách tạo file có tên: site.conf trong thư mục /etc/nginx/sites-enabled
File mẫu
server {
listen 80;
listen [::]:80;
root /mnt/d/Code/nguyentranchung/chungnguyen/public;
index index.php index.html;
server_name chungnguyen.test;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_buffering off;
fastcgi_buffer_size 256k;
fastcgi_buffers 4 256k;
}
}
Chỉnh sửa file hosts
Mở file hosts: C:\Windows\System32\drivers\etc\hosts
Thêm dòng: 127.0.0.1 chungnguyen.test
Lưu lại với quyền admin, nếu không được thì copy file hosts ra desktop sửa, sau đó dán (paste) lại thư mục C:\Windows\System32\drivers\etc
Lưu ý
Đối website laravel cần comment out dòng 155 ở file: vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php
chmod($tempPath, 0777 - umask());
Lý do là vì wsl toàn bộ files/folders có quyền 777 và không được sửa, nên các thao tác chmod trong PHP sẽ xảy ra lỗi trên WSL.
Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS