-
Устанавливаем из магазина приложений (или из Github) новый Windows Terminal.
Прошло каких-то 25 лет, и, наконец, Microsoft сделала это - отличный терминал. -
Устанавливаем из магазина приложений Ubuntu (у меня установлена версия 18.04)
При установке логин вводим латинскими, строчными буквами
В одной вкладке открываем Cmd.exe из меню
Выполняем команды:
echo останавливаем работу wsl
wsl --shutdown
echo тут смотрим имя под которым зарегистрирован дистрибутив. Скорей всего `Ubuntu` будет написано
wsl --list
echo меняем версию Wsl
wsl --set-version Ubuntu 2
Во второй вкладке открываем Ubuntu.
Выполняем команды:
sudo apt update
sudo apt upgrade
sudo apt purge openssh-server #не помню зачем я удалял
sudo apt install openssh-server #и затем снова устанавливал, но, кажется, была какая-то ошибка
sudo locale-gen "ru_RU.UTF-8"
sudo dpkg-reconfigure locales #выбираем ru_RU.UTF-8 UTF-8
echo Устанавливаем Php из стороннего репозитория
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt upgrade
sudo apt install php-bcmath php-cli php-common php-curl php-fpm php-gd php-intl php-json php-mbstring php-xdebug php-zip php-pgsql php-pear php-soap
echo Устанавливаем сервер и базу
sudo apt install mc nginx postgresql
Закрываем вкладку Ubuntu
Выполняем:
wsl --shutdown
sudo apt autoremove
sudo apt autoclean
cd ~
mkdir tmp
cd tmp
echo Устанавливаем composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
echo Устанавливаем Nodejs
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
cd ..
sudo nano /etc/nginx/nginx.conf
в нижней половине файла находим две строки и одну раскоментируем, а вторую закоментируем:
include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;
Нажимаем Ctrl+X, затем Y, и Enter
cd /etc/nginx/conf.d
ls
если там что-то есть, удалим этот файл
sudo rm file.conf
sudo nano /etc/nginx/conf.d/my_project.loc.conf
server {
server_name my_project.loc;
listen 80;
charset UTF-8;
index index.html;
disable_symlinks if_not_owner from=$root_path;
ssi on;
set $root_path /srv/http/my_project.loc;
root $root_path/public;
client_body_buffer_size 8M;
client_max_body_size 7M;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 16k;
client_body_temp_path /var/tmp;
location / {
try_files $uri @php;
location = /index.php {
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/my_project.loc.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $root_path/public/index.php;
}
}
location @php {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^ /index.php last;
}
}
Нажимаем Ctrl+X, затем Y, и Enter
sudo nano /etc/php/7.4/fpm/pool.d/my_project.loc.conf
[my_project.loc]
pm = dynamic
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_children = 5
pm.max_spare_servers = 5
listen = /var/run/php/my_project.loc.sock
;listen = 9004
;listen.allowed_clients = 127.0.0.1
listen.mode = 0660
listen.owner = www-data
listen.group = www-data
user = vasya
group = vasya
chdir = /srv/http/my_project.loc
catch_workers_output = yes
;php_flag[display_errors] = On
php_admin_value[post_max_size] = 30M
php_admin_value[upload_max_filesize] = 32M
php_admin_value[error_log] = /var/log/loc.error.log
;php_admin_value[access_log] = off
php_admin_value[display_errors] = On ;stderr
php_admin_value[log_errors] = On
php_admin_value[upload_tmp_dir] = /var/tmp
php_admin_value[session.save_path] = /var/tmp
Нажимаем Ctrl+X, затем Y, и Enter
Обратите внимание: вместо vasya напишите ваше имя в linux
cd /srv
sudo mkdir http
chown vasya:vasya http
cd http
composer create-project laravel/laravel my_project.loc
sudo su - postgres
psql
create database my_project;
create user vasya with password 'vasya';
grant all privileges on database my_project to vasya;
\q
exit
Чтобы стартануть всё это, надо, при входе в Ubuntu (например после перезагрузки компа), выполнить
sudo service nginx start && sudo service php7.4-fpm start && sudo service postgresql start
Добавим наш локальный домен в
c:\Windows\System32\drivers\etc\hosts
127.0.0.1 my_project.loc
Открываем Firefox, в адресной строке пишем http://my_project.loc
File > Open > \\wsl$\Ubuntu\srv\http\my_project.loc
Open
В шторме должно появиться:
- Error: Windows Defender чего-то там... нажимаем
fix > automaticly
- Error: idea.case.sensitive.fs чего-то там... Идём в
Help > Custom Properties, добавляемidea.case.sensitive.fs=true
- Закрываем проект (сделай сначала это)
- Закрываем шторм
Запускаем cmd.exe as admin, там выполняем:
mklink /D "c:\var\www\my_project.loc" "\\wsl$\Ubuntu\srv\http\my_project.loc"
c:\var\www\my_project.loc - это путь, где вы хотите, чтобы находился проект в windows. Можно сменить на любой другой.
- Стартуем шторм, но не открываем тот проект. Открываем "новый", уже из пути, что создали ранее
c:\var\www\my_project.loc. (не спрашивайте зачем такие ухищрения. Есть глюк, когда шторм, каждый раз при запуске, сообщает, что Windows Defender...)
тут можно исключить из индексирования папки типа storage
- level 7.4
- CLI interpriter: Ubuntu.
Если такого нет, то нажимаемтри точки>плюсик>wsl> выбираемUbuntu>ok

На этом собственно и всё.
- Открываем терминал
- composer update
- npm install
- npm run dev
- ...
Если обновить composer или npm из терминала, или переключить ветку git checkout xyz не встроенными средствами, то случается так, что PhpStorm не сразу видит изменения в папках. Чтобы перечитать файлы, надо в контекстном меню нужной папки выбрать "reload from disk".
- Скачиваем с официального сайта PhpStorm Установить можно в домашнюю директорию пользователя или (например) в /usr/phpstorm. Права на эту папку лучше сменить на пользователя от имени которого вы запускаете шторм, - это нужно для обновлений. Установка осуществляется простым разархивированием (если в архиве есть дополнительная папка, содержащая шторм, то распаковываем не её, а только её содержимое).
- Скачиваем X11 Настройки VcXsrv:
В дополнительных параметрах указываем способ переключения языков
-xkblayout us,ru -xkbvariant winkeys -xkboptions grp:alt_space_toggle
sudo apt install x11-apps- В домашней папке создаём файл
phpstorm.sh
#!/bin/bash
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 &&\
/usr/phpstorm/bin/phpstorm.sh > /dev/null 2>&1 &
Выставляем ему параметры rwx





