- Главы
- I. Введение
- II. Установка Windows Terminal
- III. Установка WSL и Ubuntu
- IV. Установите Nginx
- V. Установите MySQL
- VI. Установка PHP и Composer
- Установка PHP
- Установите Composer
- VII. Создание приложения Laravel
- VIII. Управление несколькими приложениями Laravel и версиями PHP
- Установка нескольких версий PHP
- Потенциальные ошибки Nginx и их исправление
- IX. Дополнительные возможности
- Откройте исходный код приложения Laravel в Visual Studio Code
- Открыть исходный код приложения Laravel в Sublime Text 3/4.
- Управление несколькими службами LEMP одной командой:
Главы
- I. Введение
- II. Установка терминала Windows
- III. Установка WSL Ubuntu
- IV. Установите Nginx
- V. Установите MySQL
- VI. Установите PHP и Composer
- VII. Создание приложения Laravel
- VIII. Управление несколькими приложениями Laravel и версиями PHP
- IX. Дополнительные возможности
I. Введение
Наконец, мы можем создать настоящую среду Linux, Nginx, MySQL и Php (LEMP) на нашей машине Windows с помощью Windows Subsystem for Linux (WSL).
Если вы являетесь пользователем Linux или Mac, но вынуждены использовать машину Windows, как и я, или если вы просто хотите разрабатывать веб-приложения на своем ПК с Windows, оставаясь при этом в Linux или Unix-подобной среде без двойной загрузки, установите LEMP с помощью WSL.
Почему бы просто не использовать XAMPP, WAMP или MAMP? Ну, они функциональны до тех пор, пока не перестают быть таковыми. Они очень громоздкие, они не могут сделать ваши локальные проекты красивыми с доменами типа myproject.test.
Почему бы не использовать Homestead? Ну, я хотел бы, пока не бросил попытки заставить его работать на моем ПК с Windows.
Почему бы не использовать Laragon? Я использую Laragon! Мне он нравится. Он легкий, настраиваемый, дает красивые локальные домены, такие как myproject.test а также поддерживает обмен локальным проектом с интернетом с помощью Ngrok.
Но это все еще не настоящая Linux/Unix-подобная среда.
II. Установка Windows Terminal
Установите Windows Terminal из Microsoft Store:
https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701
III. Установка WSL и Ubuntu
Мы будем использовать Ubuntu 20.04, так как это последний стабильный дистрибутив Linux, поддерживаемый WSL.
Чтобы установить WSL и Ubuntu 20.04, следуйте официальному руководству:
https://docs.microsoft.com/en-us/windows/wsl/install
После установки WSL Ubuntu откройте новую вкладку Ubuntu в терминале Windows.
$ cd ~
$ sudo apt update
.
IV. Установите Nginx
$ sudo apt install nginx
.
Чтобы запустить, остановить или перезапустить Nginx, выполните следующие действия:
$ sudo service nginx start
$ sudo service nginx stop
$ sudo service nginx restart
V. Установите MySQL
Чтобы установить MySQL, запустите:
$ sudo apt install mysql-server
.
Чтобы запустить, остановить или перезапустить MySQL, выполните следующие действия:
$ sudo service mysql start
$ sudo service mysql stop
$ sudo service mysql restart
Подключитесь к MySQL:
$ sudo mysql
<— Если имя пользователя и пароль не нужны.
или
$ sudo mysql -u root -p
<— если имя пользователя и пароль необходимы.
Внутри MySQL создайте новую базу данных для нашего примера приложения Laravel:
mysql > create database laravel;
mysql > exit;
.
Полное руководство по MySQL можно найти в статье Как установить MySQL на Ubuntu 20.04.
Если вы столкнулись с ошибкой Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock'
, решите ее, следуя решению на Stack Overflow:
sudo service mysql stop
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
sudo mysql service start
VI. Установка PHP и Composer
Установка PHP
Чтобы установить PHP и рекомендуемые расширения, выполните следующие действия:
$ sudo apt install php php-fpm php-mysql php-mbstring php-xml php-bcmath php-zip php-curl
.
*Обратите внимание, что это приведет к установке PHP 7.4, который является последней стабильной версией, поддерживаемой Ubuntu 20.04. Чтобы показать поддерживаемую версию PHP в Ubuntu, выполните $ sudo apt show php
или $ sudo apt show php -a
. Чтобы показать установленную версию PHP, выполните $ php -v
.
Чтобы запустить, остановить или перезапустить PHP, выполните:
$ sudo service php7.4-fpm start
.
$ sudo service php7.4 stop
$ sudo service php7.4 restart
.
Установите Composer
Чтобы установить Composer, смотрите статью Как установить и использовать Composer на Ubuntu 20.04.
VII. Создание приложения Laravel
Сначала создайте каталог для наших проектов Laravel внутри нашего дома:
$ cd ~
<— Перейдите в наш домашний каталог.
$ mkdir codes
<— Создайте новый каталог под названием «codes».
$ cd codes
<— Перейдите в новую директорию «codes».
Создайте новое приложение Laravel через Composer:
$ composer create-project laravel/laravel
.
$ cd laravel
.
Наше новое приложение Laravel теперь готово к обслуживанию:
$ php artisan serve
Чтобы увидеть наше работающее приложение Laravel, посетите http://127.0.0.1:8000 в веб-браузере на нашей локальной машине.
Теперь вы можете работать над своим проектом отсюда:
$ code .
<— Откройте ваше приложение Laravel в VS Code.
Иногда вам нужно будет работать с базами данных, это часть «M» в LEMP. Чтобы подключить базу данных приложения Laravel, обновите файл конфигурации среды .env
:
DB_NAME=laravel
DB_USERNAME=root
DB_PASSWORD=
После того как подключение к базе данных установлено, запустите скрипт миграции для создания таблиц базы данных:
$ php artisan migrate
🎉🙌👏 Ура! Теперь у вас есть работающее приложение Laravel и подтверждение того, что вы успешно настроили LEMP:
В этой главе мы просто обслуживаем наше приложение Laravel с помощью встроенного сервера $ php artisan serve
. В следующей главе VIII мы будем использовать Nginx для обслуживания нескольких приложений Laravel без $ php artisan serve
.
VIII. Управление несколькими приложениями Laravel и версиями PHP
Со временем вам понадобится работать с несколькими приложениями Laravel и, возможно, даже с другими приложениями PHP, для каждого из которых могут потребоваться другие версии PHP. Это можно сделать, добавив конфигурации виртуальных хостов для каждого приложения Laravel. Затем мы добавляем каждый домен в файл Windows C:WindowsSystem32driversetchosts
. Таким образом, нам больше не нужно будет каждый раз запускать $ php artisan serve
для каждого приложения, и у нас будут более читаемые домены для каждого приложения, например, laravel.local
, myblog.test
, todos.test
и т.д.
В качестве примера, мы сделаем наше первое приложение Laravel под названием «laravel» доступным по адресу http://laravel.local. Затем мы создадим два дополнительных приложения Laravel под названиями «todo» и «blog». Каждое приложение требует PHP 5.6 и PHP 7.3 и может быть посещено в браузере по адресам http://todo.local и http://blog.local соответственно. Конечно, вы можете изменить названия приложений по мере необходимости.
Создайте приложения todo и blog Laravel в ~/codes
с помощью Composer, затем настройте каждое приложение. Обратитесь к главе VI. Создание приложения Laravel:
$ composer create-project laravel/laravel todo
$ composer create-project laravel/laravel blog
Далее, дайте групповое право собственности на структуры каталогов Laravel группе web, и измените разрешения на каталоги */storage
, чтобы разрешить группе web права на запись. Это необходимо для правильной работы приложения:
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
…продолжите необходимую настройку для каждого приложения. См. главу VII: Создание приложения Laravel.
Установка нескольких версий PHP
Обратите внимание, что Ubuntu 20.04 по умолчанию поставляется с PHP 7.4. Официально единственной доступной версией является PHP 7.4. Чтобы установить альтернативные версии PHP, сначала нужно добавить репозитории PHP через архив персональных пакетов (PPA) Ubuntu от ondrej:
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
Теперь мы можем установить несколько версий PHP и соответствующие рекомендуемые расширения для Laravel:
sudo apt update
# 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
Чтобы изменить версию PHP, используемую CLI, выполните команду:
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
Чтобы подтвердить обновленную версию PHP, используемую CLI, выполните $ php -v
:
Запуск, остановка или перезапуск служб для каждой версии 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
Перейдите в каталог виртуальных хостов вашего Nginx (/etc/nginx/sites-available
) и создайте три файла конфигурации виртуальных хостов для приложений laravel, todo и blog Laravel:
$ cd /etc/nginx/sites-available
$ sudo vim laravel.conf
$ sudo vim todo.conf
$ sudo vim blog.conf
Сохраните следующую рекомендуемую конфигурацию Nginx для Laravel для каждого файла, обновляя только переменные server_name
, root
и 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;
}
}
Чтобы активировать новые файлы конфигурации виртуального хоста, создайте символические ссылки на 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/
Проверьте Nginx на наличие ошибок, затем перезапустите:
$ sudo nginx -t
$ sudo service nginx restart
.
Добавьте три новых домена в файл Windows C:WindowsSystem32driversetchosts
:
127.0.0.1 laravel.local
127.0.0.1 todo.local
127.0.0.1 blog.local
В браузере мы можем посетить наши новые приложения Laravel:
http://laravel.local
http://todo.local
http://blog.local
Потенциальные ошибки Nginx и их исправление
- Чтобы устранить ошибки
File not found
иHTTP Error 500
при доступе к сайту в браузере, а также ошибку, регистрируемую Nginx в/var/log/nginx/error.log
,stat() "/home/joserizal/laravel/public/" failed (13: Permission denied)
, убедитесь, что Nginx имеет соответствующие права на корневые каталоги проекта:
chmod +x /home/
chmod +x /home/username
chmod +x /home/username/siteroot
IX. Дополнительные возможности
Откройте исходный код приложения Laravel в Visual Studio Code
Откройте вкладку Ubuntu в Терминале Windows.
Чтобы открыть текущий каталог в Visual Studio Code, выполните:
$ code .
.
Чтобы открыть определенный файл в Visual Studio Code, выполните:
$ code FILENAME.TXT
Открыть исходный код приложения Laravel в Sublime Text 3/4.
Sublime Text пока не поддерживает открытие каталогов внутри WSL. Чтобы сделать это, нам необходимо выполнить небольшую настройку.
Во-первых, добавьте следующий блок кода в ваш файл конфигурации Bash (~/.bashrc
, ~/.bash_profile
или ~/.zshrc
):
alias subl='"/mnt/c/Program Files/Sublime Text 3/subl.exe"'
Перезапустите Windows Terminal после перезагрузки вашего сценария Bash:
$ source ~/.bashrc
или
$ source ~/.bash_profile
или
$ source ~/.zshrc
.
Перейдите к приложению Laravel и откройте проект в Sublime Text 3/4.
$ cd ~/codes/todo
$ subl .
Чтобы открыть определенный файл, выполните:
$ subl FILENAME.TXT
.
Управление несколькими службами LEMP одной командой:
Чтобы создать простую в использовании команду для управления нашими службами LEMP одной командой, добавьте следующий блок кода в ваш файл конфигурации Bash (~/.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..."
}
Чтобы активировать новую конфигурацию Bash, перезагрузите свой сценарий Bash:
$ source ~/.bashrc
или
$ source ~/.bash_profile
или
$ source ~/.zshrc
.
Затем перезапустите терминал Windows.
Теперь вы можете запускать, останавливать или перезапускать службы LEMP одной командой:
lemp start
lemp stop
lemp restart
Ура! 🙌🎉 Наслаждайтесь Linux, Nginx, MySQL и PHP (LEMP) на вашем компьютере с Windows!