Thiết lập LEMP cho Laravel trên Windows bằng WSL
Contents
Chương
I. Giới thiệu
II. Cài đặt Windows Terminal
III. Cài đặt WSL Ubuntu
IV. Cài đặt Nginx
V. Cài đặt MySQL
VI. Cài đặt PHP và Composer
VII. Tạo một ứng dụng Laravel
VIII. Quản lý Nhiều Ứng dụng Laravel và Phiên bản PHP
IX. Bổ sung
I. Giới thiệu
Cuối cùng, chúng ta có thể thiết lập môi trường Linux, Nginx, MySQL và Php (LEMP) thực sự trên máy tính Windows của mình bằng Hệ thống con Windows dành cho Linux (WSL) .
Nếu bạn là người dùng Linux hoặc Mac, nhưng bạn buộc phải sử dụng một máy Windows giống như tôi hoặc, nếu bạn chỉ muốn phát triển các ứng dụng web trên PC Windows của mình trong khi vẫn sử dụng môi trường giống Linux hoặc Unix mà không có kép – khởi động, thiết lập LEMP bằng WSL.
Tại sao không chỉ sử dụng XAMPP, WAMP hoặc MAMP ? Chà, những thứ này có chức năng cho đến khi chúng không hoạt động. Chúng rất khó hiểu, chúng không thể làm cho các dự án cục bộ của bạn trông đẹp mắt với các tên miền như myproject.test .
Tại sao không sử dụng Homestead ? Chà, tôi ước gì mình đã làm được, cho đến khi tôi từ bỏ việc cố gắng làm cho nó hoạt động trên PC Windows của mình.
Tại sao không sử dụng Laragon ? Tôi sử dụng Laragon! Tôi thích nó. Nó nhẹ, có thể cấu hình, cung cấp các miền cục bộ đẹp như myproject.test và cũng hỗ trợ chia sẻ dự án cục bộ của bạn lên internet bằng Ngrok .
Tuy nhiên, nó vẫn không phải là một Unix / Unix giống như thật.
II. Cài đặt Windows Terminal
Cài đặt Windows Terminal từ Microsoft Store:
https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701
III. Cài đặt WSL và Ubuntu
Chúng tôi sẽ sử dụng Ubuntu 20.04 vì nó là mặc định và là bản phân phối Linux ổn định mới nhất được WSL hỗ trợ.
Để cài đặt WSL và Ubuntu 20.04, hãy làm theo hướng dẫn chính thức:
https://docs.microsoft.com/en-us/windows/wsl/install
Sau khi WSL Ubuntu được cài đặt, hãy mở một tab Ubuntu mới trong Windows Terminal.
$ cd ~
$sudo apt update
IV. Cài đặt Nginx
$sudo apt install nginx
Để bắt đầu, dừng hoặc khởi động lại Nginx, chạy:
$ sudo service nginx start
$ sudo service nginx stop
$sudo service nginx restart
V. Cài đặt MySQL
Để cài đặt MySQL, hãy chạy:
$sudo apt install mysql-server
Để bắt đầu, dừng hoặc khởi động lại MySQL, hãy chạy:
$ sudo service mysql start
$ sudo service mysql stop
$sudo service mysql restart
Kết nối với MySQL:
$ sudo mysql
<- Nếu tên người dùng và mật khẩu không cần thiết.
hoặc
$ sudo mysql -u root -p
<- Nếu tên người dùng và mật khẩu là cần thiết.
Bên trong MySQL, tạo một cơ sở dữ liệu mới cho ứng dụng Laravel mẫu của chúng tôi:
mysql> create database laravel;
mysql>exit;
VI. Cài đặt PHP và Composer
Cài đặt PHP
Để cài đặt PHP và các tiện ích mở rộng được đề xuất, hãy chạy:
$sudo apt install php php-fpm php-mysql php-mbstring php-xml php-bcmath php-zip php-curl
* Lưu ý rằng điều này sẽ cài đặt PHP 7.4, là phiên bản ổn định mới nhất được Ubuntu 20.04 hỗ trợ. Để hiển thị phiên bản PHP được hỗ trợ trong Ubuntu, hãy chạy $ sudo apt show php
hoặc $ sudo apt show php -a
. Để hiển thị phiên bản PHP đã cài đặt, hãy chạy $ php -v
.
Để bắt đầu, dừng hoặc khởi động lại PHP, hãy chạy:
$ sudo service php7.4-fpm start
$ sudo service php7.4 stop
$sudo service php7.4 restart
Cài đặt trình soạn nhạc
Để cài đặt Composer , hãy xem Cách cài đặt và sử dụng Composer trên Ubuntu 20.04 .
VII. Tạo một ứng dụng Laravel
Đầu tiên, hãy tạo một thư mục cho các dự án Laravel bên trong nhà của chúng tôi:
$ cd ~
<- Đi tới thư mục chính của chúng tôi.
$ mkdir codes
<- Tạo một thư mục mới có tên là “mã”.
$ cd codes
<- Chuyển đến thư mục “mã” mới.
Tạo một ứng dụng Laravel mới thông qua Composer:
$ composer create-project laravel/laravel
$cd laravel
Ứng dụng Laravel mới của chúng tôi hiện đã sẵn sàng để được cung cấp:
$php artisan serve
Để xem ứng dụng Laravel đang chạy của chúng tôi, hãy truy cập http://127.0.0.1:8000 trong trình duyệt web trên máy cục bộ của chúng tôi.
Bây giờ bạn có thể làm việc trên dự án của mình từ đây:
$ code .
<- Mở ứng dụng Laravel của bạn trong VS Code
Đôi khi, bạn sẽ cần làm việc với cơ sở dữ liệu, đây là phần “M” trong LEMP. Để kết nối cơ sở dữ liệu của ứng dụng Laravel, hãy cập nhật .env
tệp cấu hình môi trường:
DB_NAME=laravel
DB_USERNAME=root
DB_PASSWORD=
Sau khi kết nối cơ sở dữ liệu của bạn đã được thiết lập, hãy bắt đầu tập lệnh di chuyển để tạo các bảng cơ sở dữ liệu:
$php artisan migrate
🎉🙌👏 Nhanh lên ! Bây giờ bạn có một ứng dụng Laravel đang chạy và xác nhận rằng bạn đã thiết lập thành công LEMP của mình:
Trong chương này, chúng tôi chỉ đơn giản là phục vụ ứng dụng Laravel của chúng tôi bằng cách sử dụng máy chủ $ tích hợp sẵn php artisan serve
. Trong Chương VIII tiếp theo, chúng ta sẽ sử dụng Nginx để phục vụ nhiều ứng dụng Laravel mà không có $ php artisan serve
.
VIII. Quản lý nhiều ứng dụng Laravel và các phiên bản PHP
Cuối cùng, bạn sẽ cần phải làm việc với nhiều ứng dụng Laravel, mỗi ứng dụng có thể yêu cầu các phiên bản PHP khác. Điều này được quản lý bằng cách thêm các cấu hình máy chủ ảo cho từng ứng dụng Laravel. Sau đó, chúng tôi thêm từng miền vào C:\Windows\System32\drivers\etc\hosts
tệp của Windows. Bằng cách này, chúng tôi sẽ không cần phải chạy $ php artisan serve
cho mỗi ứng dụng mỗi lần nữa và chúng tôi sẽ có nhiều miền dễ đọc hơn cho mỗi ứng dụng, ví laravel.local
dụ myblog.test
:, todos.test
v.v.
Ví dụ, chúng tôi sẽ làm cho ứng dụng Laravel đầu tiên của chúng tôi có tên là ” laravel ” có thể truy cập được tại http: //laravel.local . Sau đó, chúng tôi sẽ tạo thêm hai ứng dụng Laravel được gọi là ” todo ” và ” blog “. Mỗi ứng dụng yêu cầu PHP 5.6 và PHP 7.3 và có thể được truy cập trong trình duyệt tại http: //todo.local và http: //blog.local tương ứng. Tất nhiên, bạn có thể thay đổi tên ứng dụng nếu cần.
Tạo các ứng dụng Laravel việc cần làm và blog~/codes
thông qua Composer, sau đó thiết lập từng ứng dụng. Tham khảo Chương VI. Tạo một ứng dụng Laravel :
$ composer create-project laravel/laravel todo
$composer create-project laravel/laravel blog
Tiếp theo, cấp quyền sở hữu nhóm đối với cấu trúc thư mục Laravel của chúng tôi cho nhóm web và thay đổi quyền của các */storage
thư mục để cho phép quyền ghi nhóm web. Điều này là cần thiết để ứng dụng hoạt động chính xác:
sudo chown -R :www-data /home/joserizal/codes/todo
sudo chmod -R 775 /home/joserizal/codes/todo/storage
sudo chmod -R ugo+rw /home/joserizal/codes/todo/storage
sudo chown -R :www-data /home/joserizal/codes/blog
sudo chmod -R 775 /home/joserizal/codes/blog/storage
sudo chmod -R ugo+rw /home/joserizal/codes/blog/storage
… tiếp tục thiết lập cần thiết cho từng ứng dụng. Xem Chương VII: Tạo ứng dụng Laravel.
Cài đặt nhiều phiên bản PHP
Lưu ý rằng Ubuntu 20.04 đi kèm với PHP 7.4 theo mặc định. Chính thức, phiên bản khả dụng duy nhất là PHP 7.4. Để cài đặt các phiên bản PHP thay thế, trước tiên, chúng ta cần thêm kho lưu trữ PHP thông qua Kho lưu trữ gói cá nhân Ubuntu (PPA) của ondrej :
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
Giờ đây, chúng tôi có thể cài đặt nhiều phiên bản PHP và các phần mở rộng được đề xuất tương ứng của chúng cho Laravel:
# Install PHP 5.6:
sudo apt install php5.6 php5.6-fpm php5.6-mysql php5.6-mbstring php5.6-xml php5.6-bcmath php5.6-zip php5.6-curl php5.6-gd
# Install PHP 7.0:
sudo apt install php7.0 php7.0-fpm php7.0-mysql php7.0-mbstring php7.0-xml php7.0-bcmath php7.0-zip php7.0-curl php7.0-gd
# Install PHP 7.1:
sudo apt install php7.1 php7.1-fpm php7.1-mysql php7.1-mbstring php7.1-xml php7.1-bcmath php7.1-zip php7.1-curl php7.1-gd
# Install PHP 7.2:
sudo apt install php7.2 php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-xml php7.2-bcmath php7.2-zip php7.2-curl php7.2-gd
# Install PHP 7.3:
sudo apt install php7.3 php7.3-fpm php7.3-mysql php7.3-mbstring php7.3-xml php7.3-bcmath php7.3-zip php7.3-curl php7.3-gd
# Install PHP 7.4:
sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-mbstring php7.4-xml php7.4-bcmath php7.4-zip php7.4-curl php7.4-gd
# Install PHP 8.0:
sudo apt install php8.0 php8.0-fpm php8.0-mysql php8.0-mbstring php8.0-xml php8.0-bcmath php8.0-zip php8.0-curl php8.0-gd
# Install PHP 8.1:
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-bcmath php8.1-zip php8.1-curl php8.1-gd
Để thay đổi phiên bản PHP được CLI sử dụng, hãy chạy:
sudo update-alternatives --set php /usr/bin/php5.6
sudo update-alternatives --set php /usr/bin/php7.0
sudo update-alternatives --set php /usr/bin/php7.1
sudo update-alternatives --set php /usr/bin/php7.2
sudo update-alternatives --set php /usr/bin/php7.3
sudo update-alternatives --set php /usr/bin/php7.4
sudo update-alternatives --set php /usr/bin/php8.0
sudo update-alternatives --set php /usr/bin/php8.1
Để xác nhận phiên bản cập nhật của PHP được CLI sử dụng, hãy chạy $ php -v
:
Bắt đầu, dừng hoặc khởi động lại các dịch vụ mỗi phiên bản PHP:
# Start the services for each PHP version:
sudo service php5.6-fpm start
sudo service php7.0-fpm start
sudo service php7.1-fpm start
sudo service php7.2-fpm start
sudo service php7.3-fpm start
sudo service php7.4-fpm start
sudo service php8.0-fpm start
sudo service php8.1-fpm start
# Stop the services for each PHP version:
sudo service php5.6-fpm stop
sudo service php7.0-fpm stop
sudo service php7.1-fpm stop
sudo service php7.2-fpm stop
sudo service php7.3-fpm stop
sudo service php7.4-fpm stop
sudo service php8.0-fpm stop
sudo service php8.1-fpm stop
# Restart the services for each PHP version:
sudo service php5.6-fpm restart
sudo service php7.0-fpm restart
sudo service php7.1-fpm restart
sudo service php7.2-fpm restart
sudo service php7.3-fpm restart
sudo service php7.4-fpm restart
sudo service php8.0-fpm restart
sudo service php8.1-fpm restart
Truy cập thư mục máy chủ ảo của Nginx ‘( /etc/nginx/sites-available
) và tạo ba tệp cấu hình máy chủ ảo cho các ứng dụng Laravel laravel , todo và blog của bạn:
$ cd /etc/nginx/sites-available
$ sudo vim laravel.conf
$ sudo vim todo.conf
$sudo vim blog.conf
Lưu cấu hình Nginx được đề xuất sau đây cho Laravel cho từng tệp, chỉ cập nhật các server_name
biến root
và fastcgi_pass
:
server {
listen 80;
# UPDATE BELOW: Use appropriate server_name for each Laravel application.
server_name laravel.local;
#server_name todo.local;
#server_name blog.local;
# UPDATE BELOW: Use appropriate root directory for each Laravel application.
root /home/joserizal/codes/laravel/public;
#root /home/joserizal/codes/todo/public;
#root /home/joserizal/codes/blog/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
# UPDATE BELOW: Use appropriate PHP version.
# For example, to use PHP 5.6, replace php8.1-fpm to php5.6-fpm.
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
# The available PHP versions are php5.6, php7.0, php7.1, php7.2, php7.3, php7.4, php8.0 and php8.1.
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Để kích hoạt các tệp cấu hình máy chủ ảo mới, hãy tạo các liên kết tượng trưng đến và trong laravel
:todo
blog
sites-enabled
$ sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/todo.conf /etc/nginx/sites-enabled/
$sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/
Kiểm tra Nginx để tìm lỗi sau đó khởi động lại:
$ sudo nginx -t
$sudo service nginx restart
Thêm ba miền mới vào C:\Windows\System32\drivers\etc\hosts
tệp của Windows:
127.0.0.1 laravel.local
127.0.0.1 todo.local
127.0.0.1 blog.local
Trong trình duyệt, chúng ta có thể truy cập các ứng dụng Laravel mới của mình:
http: //laravel.local
http: //todo.local
http: //blog.local
IX. Bổ sung
Mở mã nguồn ứng dụng Laravel trong Visual Studio Code
Mở tab Ubuntu trong Windows Terminal.
Để mở thư mục hiện tại trong Visual Studio Code, hãy chạy:
$code .
Để mở một tệp cụ thể trong Visual Studio Code, hãy chạy:
$code FILENAME.TXT
Mở mã nguồn ứng dụng Laravel trong Sublime Text 3/4.
Sublime Text chưa hỗ trợ mở thư mục bên trong WSL. Để có thể làm được như vậy, chúng ta cần cấu hình một chút.
Trước tiên, hãy thêm khối mã sau vào tệp cấu hình Bash của bạn ( hoặc ) ~/.bashrc
:~/.bash_profile
~/.zshrc
alias subl='"/mnt/c/Program Files/Sublime Text 3/subl.exe"'
Khởi động lại Windows Terminal sau khi tải lại tập lệnh Bash của bạn:
$ source ~/.bashrc
hoặc
$ source ~/.bash_profile
hoặc
$source ~/.zshrc
Chuyển đến ứng dụng Laravel và mở dự án trong Sublime Text 3/4.
$ cd ~/codes/todo
$subl .
Để mở một tệp cụ thể, hãy chạy:
$subl FILENAME.TXT
Quản lý nhiều dịch vụ LEMP trong một lệnh:
Để tạo một lệnh dễ sử dụng để quản lý các dịch vụ LEMP của chúng tôi trong một lệnh, hãy thêm khối mã sau vào tệp cấu hình Bash của bạn ( hoặc ) ~/.bashrc
:~/.bash_profile
~/.zshrc
# Function to start|stop|restart LEMP services in one command.
# Example: $ sudo lemp start|stop|restart
lemp() {
echo "
__ _______ _
\ \ / / ____| |
\ \ /\ / / (___ | |
\ \/ \/ / \___ \| |
\ /\ / ____) | |____
_ \/ \/__|_____/|______|
| | | ____| \/ | __ \
| | | |__ | \ / | |__) |
| | | __| | |\/| | ___/
| |____| |____| | | | |
|______|______|_| |_|_|
"
echo "WSL LEMP: $1 Nginx, MySQL and PHP for Linux (LEMP)"
sudo service nginx "$1"
sudo service mysql "$1"
sudo service php5.6-fpm "$1"
sudo service php7.0-fpm "$1"
sudo service php7.1-fpm "$1"
sudo service php7.2-fpm "$1"
sudo service php7.3-fpm "$1"
sudo service php7.4-fpm "$1"
sudo service php8.0-fpm "$1"
sudo service php8.1-fpm "$1"
echo "Done..."
}
Để kích hoạt cấu hình Bash mới, hãy tải lại tập lệnh Bash của bạn:
$ source ~/.bashrc
hoặc
$ source ~/.bash_profile
hoặc
$source ~/.zshrc
Sau đó, khởi động lại Windows Terminal của bạn.
Bây giờ bạn có thể bắt đầu, dừng hoặc khởi động lại các dịch vụ LEMP của mình bằng một lệnh:
lemp start
lemp stop
lemp restart