Skip to content

Instantly share code, notes, and snippets.

@zippaaa
Last active November 5, 2024 06:00
Show Gist options
  • Select an option

  • Save zippaaa/4154b8105d81deeb0a4de07d0b35e614 to your computer and use it in GitHub Desktop.

Select an option

Save zippaaa/4154b8105d81deeb0a4de07d0b35e614 to your computer and use it in GitHub Desktop.
Настраиваем WSL2, Nginx, PostgreSQL, Php7.4-Fpm, PhpStorm

Устанавливаем WSL2 и настраиваем PhpStorm для работы с Linux

  1. Устанавливаем из магазина приложений (или из Github) новый Windows Terminal.

    Прошло каких-то 25 лет, и, наконец, Microsoft сделала это - отличный терминал.

  2. Устанавливаем из магазина приложений Ubuntu (у меня установлена версия 18.04)
    При установке логин вводим латинскими, строчными буквами

Запускаем установленный Terminal

В одной вкладке открываем Cmd.exe из меню

Выполняем команды:

echo останавливаем работу wsl
wsl --shutdown
echo тут смотрим имя под которым зарегистрирован дистрибутив. Скорей всего `Ubuntu` будет написано
wsl --list
echo меняем версию Wsl
wsl --set-version Ubuntu 2

Во второй вкладке открываем Ubuntu.

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

Во вкладке Cmd

Выполняем:

wsl --shutdown

Открываем новую вкладку Ubuntu

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 ..

Настраиваем Nginx

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

Настраиваем Php-Fpm

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

Настраиваем postgresql

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

Start

Чтобы стартануть всё это, надо, при входе в Ubuntu (например после перезагрузки компа), выполнить

sudo service nginx start && sudo service php7.4-fpm start && sudo service postgresql start

Windows

Добавим наш локальный домен в c:\Windows\System32\drivers\etc\hosts

127.0.0.1 my_project.loc

Проверяем

Открываем Firefox, в адресной строке пишем http://my_project.loc

Настраиваем PhpStorm (Windows)

File > Open > \\wsl$\Ubuntu\srv\http\my_project.loc
Open

В шторме должно появиться:

  1. Error: Windows Defender чего-то там... нажимаем fix > automaticly изображение
  2. 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...)

File / Settings / Directories:

тут можно исключить из индексирования папки типа storage

Languages / PHP

  • level 7.4
  • CLI interpriter: Ubuntu.
    Если такого нет, то нажимаем три точки > плюсик > wsl > выбираем Ubuntu > ok изображение изображение

Languages / PHP / Composer

изображение

Languages / NPM

изображение

Tools / Terminal

изображение

The End

На этом собственно и всё.

  • Открываем терминал
  • composer update
  • npm install
  • npm run dev
  • ...

P.S.

Если обновить composer или npm из терминала, или переключить ветку git checkout xyz не встроенными средствами, то случается так, что PhpStorm не сразу видит изменения в папках. Чтобы перечитать файлы, надо в контекстном меню нужной папки выбрать "reload from disk".

Настраиваем PhpStorm (Linux)

  1. Скачиваем с официального сайта PhpStorm Установить можно в домашнюю директорию пользователя или (например) в /usr/phpstorm. Права на эту папку лучше сменить на пользователя от имени которого вы запускаете шторм, - это нужно для обновлений. Установка осуществляется простым разархивированием (если в архиве есть дополнительная папка, содержащая шторм, то распаковываем не её, а только её содержимое).
  2. Скачиваем X11 Настройки VcXsrv:

image

image

image

В дополнительных параметрах указываем способ переключения языков -xkblayout us,ru -xkbvariant winkeys -xkboptions grp:alt_space_toggle

  1. sudo apt install x11-apps
  2. В домашней папке создаём файл 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment