• PHPSTORM + WSL2 + DOCKER

    Osiem lat – tyle czasu minęło odkąd ostatnio używałem Windowsa podczas programowania. Korzystałem w tym czasie z Linuxa i osMaca. Polityka cenowa i sprzętowa Appla jednak przestała mi odpowiadać. Sprzęt coraz droższy, a jakość wykonania coraz słabsza (np. psujące się klawiatury). Jako że potrzebny mi w domu stojąca jednostka PC do innych prac, postanowiłem wypróbować jak działa zachwalany WSL2 na Windowsie i zostałem mocno zaskoczony… Pozytywnie! Od tego czasu Windows został moim głównym system operacyjnym.

    UWAGA! Ten wpis jest swoistym rozszerzeniem filmu na Youtube jak ustawić opisywane środowisko pracy. W razie problemów zobacz film:

    W tym wpisie pokażę Ci jak skonfigurować WSL2 z Dockerem i z PhpStorm, aby pracowało się szybko i komfortowo. Na początku instalowałem swoje aplikacje w katalogu, który był montowany w WSL2 i korzystałem z Windowsowej wersji PhpStorm, jednak takie rozwiązanie było strasznie wolne. Użycie composera do zainstalowania zależności dłużyło się w nieskończoność. Tak to wyglądało na początku:

    Wtedy zacząłem szukać alternatywnej metody ustawień i okazało się, że można uruchomić programy graficzne z Linuksa w Windowsie za pomocą serwerów X na Windosie. Ja użyłem VcXsrv i go opiszę w tym tutorialu. Tak wyglądają moje ustawienia teraz:

    Nie będę tutaj opisywać jak zainstalować dystrybucję Linuxa na WSL2. Poradników tego pokroju jest w sieci bardzo dużo. W razie potrzeby na stronie Microsoftu można znaleźć instrukcję jak to zrobić: https://docs.microsoft.com/en-us/windows/wsl/install-win10 W tym poradniku używam Ubuntu 20.04, ale inne dystrybucje działają identycznie. Na co dzień pracuje na Debianie. Zakładam więc, że masz już zainstalowane Ubuntu i masz otwarty terminal (może być standardowy, ale dla wygody polecam Microsoft Terminal).

    Instalacja Dockera na Linuksie

    Na początku zainstalujmy Dockera na naszym Linuksie. Robimy to zgodnie z instrukcją na stronie Dockera (w razie problemów zobacz mój film na YT. Pokazuję tam jak to robię):

    https://docs.docker.com/engine/install/ubuntu/

    Następnie ustawiamy Dockera tak, aby można było uruchomić go bez sudo (na końcu zamknij i otwórz terminal ponownie):

    https://docs.docker.com/engine/install/linux-postinstall/

    Konfigracja Dockera na Windowsie

    Teraz musimy zainstalować Dockera na Windowsie i w ustawieniach włączyć integrację WSL2 z naszą dystrybucją.

    Instalacja LAMP (Docker)

    Sprawdźmy czy wszystko działa. Stwórzmy sobie kontener LAMP w Dokerze (https://hub.docker.com/r/mattrayner/lamp). W konsoli wpisujemy:

    docker pull mattrayner/lamp
    cd ~
    docker run -p "80:80" -v ${PWD}/app:/app mattrayner/lamp:latest-1804

    Te dwa polecenie pobiorą nam odpowiedzi obraz LAMP i uruchomią serwer. W Windowsie w Twojej przeglądarce powinien teraz działać adres http://localhost. Teraz nie ma jeszcze, żadnego pliku na serwerze więc nic się nie pojawia. Zaraz się tym zajmiemy.

    Instalacja serwera X pod Windows (VcXsrv)

    Teraz możemy pobrać i zainstalować nasz serwer X pod Windows (VcXsrv):

    https://sourceforge.net/projects/vcxsrv/

    Po uruchomieniu należy wybrać opcje (w 4 ostatnim kroku możesz zapisać konfigurację, aby w przyszłości uruchamiać serwer od razu z zapisanymi ustawieniami):

    Konfiguracja serwera X pod Linuksem

    Teraz musimy „powiedzieć” Linuksowi gdzie ma szukać serwera X.

    Wykonaj polecenia:

    echo "export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0" >> ~/.bashrc
    echo "export LIBGL_ALWAYS_INDIRECT=1" >> ~/.bashrc
    echo "export GDK_SCALE=2" >> ~/.bashrc # to ustawienie jest opcjonalne. Zmienia skalę gdy mamy monitor w wysokiej rozdzielczości np. 4k

    Ponownie wyłącz i włącz konsolę i zainstaluj przez nią Firefoxa:

    sudo apt update
    sudo apt install firefox
    firefox

    Powinno otworzyć się nam okno Linuksowego Firefoxa w Windowsie.

    Jeżeli okno jest zamazane, to możesz w Windowsie zmienić ustawienia DPI programu VcXsrv. Kliknij w jego ikonę prawym przyciskiem myszy i ustaw:

    "Properties" >> "Compatible" >> "Change high DPI settings" >> zaznacz "Override high DPI scaling behavior" >> wybierz "Application".

    Instalacja Toolbox App i PhpStorm (Linuks)

    Możemy teraz pobrać „Toolbox App” za pomocą tej przeglądarki:

    https://www.jetbrains.com/toolbox-app/download/download-thanks.html?platform=linux

    Za pomocą tej instrukcji instalujemy Toolboxa:

    https://www.jetbrains.com/help/idea/installation-guide.html#75ad

    sudo tar -xzf jetbrains-toolbox-XXXX.tar.gz -C /opt

    Możemy użyć też tego skryptu:

    https://github.com/nagygergo/jetbrains-toolbox-install

    Robimy to za pomocą:

    git clone https://github.com/nagygergo/jetbrains-toolbox-install.git
    cd jetbrains-toolbox-install
    ./jetbrains-toolbox.sh

    Aby jenak uruchomić Toolboxa należy najpierw zainstalować kilka zależności:

    sudo apt-get update && sudo apt-get install libatk1.0 libatk-bridge2.0 libxtst6 libxi6 libpangocairo-1.0 libcups2 libnss3 xdg-utils x11-apps libgbm-dev

    Pozostaje nam uruchomić Toolboxa:

    jetbrains-toolbox

    Test i zakończenie

    Gdy pojawi sie okno Toolboxa to możemy zainstalować PhpStorma i w nim utworzyć projekt np. w naszym Dokerze. W katalogu app dodajmy plik index.php z zawartością:

    <?php
    echo 'Hello World!';

    Uruchom ponownie Dockera i pod adresem http://localhost powinieneś zobaczyć wspomniany napis.

    Gratulacje! Właśnie udało Ci się wszystko skonfigurować.

    Jeżeli chcesz wiedzieć więcej na temat PhpStorma i chcesz profesjonalnie wykorzystywac to narzędzie to zapraszam do mojego darmowego kursu o PhpStorm:

    https://kurs.superstorm.pl/site/mini.html

  • 5 Funkcji PhpStorm, Dzięki Którym Przestaniesz Przekraczać Deadliny

    Piję ciepłą kawę podczas przerwy i nie che mi się wracać do arcynudnego projektu.
    Marzę o ekscytacji, która towarzyszyła mi podczas kodowania z początkowych okresów programowania. Uczucie, które wraca, gdy zaczynam nowy projekt.

    Widziałem, że muszę coś zrobić, zanim wyrzucę mojego laptopa przez okno. Musiałem znaleźć sposób, aby ekspresowo przejść przez nudne etapy pracy bez utraty jakości. I wtedy przypominał mi się funkcja „unwrap” w PhpStorm, którą odkryłem kilka nocy temu.

    Zacząłem szukać innych funkcji PhpStorma, które potrafią przyspieszyć moją pracę i uwolnić mnie od nudnego kopiowania i generowania kodu.
    Okazało się, że jest ich niezliczona ilość. Zabrałem więc tę wiedzę ze wszystkich dostępnych źródeł i zacząłem wykorzystywać w codziennej pracy.

    Poczułem się znowu wolny i ponownie z radością siadam do klawiatury.

    Przedstawię Ci 5 fantastycznych funkcji PhpStorm dzięki którym, poczujesz się tak, jakby ktoś podał Ci skalpel zamiast tępego noża.

    5 trików PhpStorm
    Read More