Shopware 6 Entwicklungsumgebung auf Windows WSL installieren

Es sollte wie gewohnt ein Nginx Server installiert sein.
Einfach mal nach "Nginx WSL installieren" suchen.
Natürlich brauchen wir auch PHP ab 7.4, Node 16.x und NPM 8.x.
Vergewissert euch, dass localhost über Windows erreichbar ist.
Dieser Beitrag hat bei mir ein Problem gelöst um localhost per Port 80 zu erreichen.

Nginx einrichten

Nginx Site anlegen:

sudo nano /etc/nginx/sites-available/shopware6.wsl

Typische Shopware 6 konfiguration für Nginx:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    include snippets/snakeoil.conf;

    # Handle / to index.php
    index index.php;

    # Our server name
    server_name shopware6.wsl;

    # Where the code is located
    root /var/www/shopware6/public;

    # Needed for Shopware install / update
    location /recovery/install {
        index index.php;
        try_files $uri /recovery/install/index.php$is_args$args;
    }

    location /recovery/update/ {
        if (!-e $request_filename){
            rewrite . /recovery/update/index.php last;
        }
    }

    # Forward any not found file to index.php. Also allows to have beautiful urls like /homemade-products/
    location / {
        try_files $uri /index.php$is_args$args;
    }

    # Let php-fpm handle .php files
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi.conf;
        fastcgi_param HTTP_PROXY "";
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_read_timeout 300s;
        client_body_buffer_size 128k;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        http2_push_preload on;
    }
}

Die Domain zur Verfügung stellen und Nginx neu laden:

sudo ln -s /etc/nginx/sites-available/shopware6.wsl /etc/nginx/sites-enabled/shopware6.wsl && sudo nginx reload

Shopware 6 installieren

Es wird der Ordner benötigt, auf den auch Nginx verweist. 
In diesen Ordner wird Shopware 6 installiert.

mkdir -p /var/www/shopware6

Jetzt können wir die Repositories ziehen:

cd /var/www/shopware6
git clone https://github.com/shopware/development.git .
rm -rf ./platform && git clone https://github.com/shopware/platform.git

Wir checken uns noch in eine Version (development und platform) aus:

git checkout v6.4.14.0 && cd ./platform && git checkout v6.4.14.0 && ../

Bevor installiert wird brauchen wir noch eine Konfigdatei:

nano .psh.yaml.override

In dieser Datei wird die URL und die Datenbank konfiguriert.

const:
  APP_ENV: "dev"
  APP_URL: "http://shopware6.wsl"
  DB_HOST: "localhost"
  DB_PORT: "3306"
  DB_NAME: ""
  DB_USER: ""
  DB_PASSWORD: ""
  DEVPORT: "8080"

Jetzt installieren wir SW 6:

./psh.phar install

Es sollten keine Fehler auftreten.
Sonst mal "var/cache/dev*" löschen und es erneut probieren.

In der Theorie läuft nun Shopware 6, aber wir erreichen "shopware6.wsl" nicht, da es die Domain ja nicht gibt.
Also sagen wir Windows einfach, dass die Domain "shopware6.wsl" im localhost zu finden ist.
Öffnet die Datei "C:\Windows\System32\drivers\etc\hosts" als Admin und fügt folgendes hinzu:

127.0.0.1 shopware6.wsl
::1 shopware6.wsl

Das war's!
Ihr solltet nun shopware6.wsl aufrufen können.

Für die Entwickler unter uns noch paar nützliche Befehle:

# storefront watch
./psh.phar storefront:hot-proxy
# storefront build
rm -rf ./var/cache/* && ./psh.phar storefront:build
# admin watch
./psh.phar administration:watch
# admin build
rm -rf ./var/cache/* && ./psh.phar administration:build
# clear cache, install assets, compile and refresh theme
rm -rf ./var/cache/* && ./bin/console asset:install && ./bin/console theme:compile && ./bin/console theme:refresh