Logo BrocksiNet

BrocksiNet

Try to clean the web

Local devenv set up - Shopware 6

This blog post is mainly a reference for myself. So that I don't always have to search for commands and places where I need to change something. Basically it shows the steps to set up a new instance with devenv and Shopware 6. It also shows how to enable xdebug if needed. And how to use an SSL certificate and what needs to be changed. I assume that devenv, direnv and cachix are already set up (if not, take a look at this devenv guide).

Steps for set up a new Shopware 6 instance

Tested with devenv (0.6.3) and Shopware 6.4.20.2

Open Terminal 1

git clone git@github.com:shopware/shopware.git shopware-6-4-20-2
cd shopware-6-4-20-2
direnv allow
git checkout tags/v6.4.20.2 -b v6.4.20.2
devenv up

Open Terminal 2

cd shopware-6-4-20-2
devenv shell
composer setup 

Now check http://localhost:8000/ and http://localhost:8000/admin.

Command to install some demo data (optional, execute inside devenv shell)

APP_ENV=prod bin/console framework:demodata && bin/console dal:refresh:index

Xdebug

Changes needed in devenv.nix file of your project

extensions = [ "grpc" "xdebug" ];

ini = ''
  ...
  xdebug.mode = "debug"
  xdebug.start_with_request = "trigger"
  xdebug.discover_client_host = 1
  xdebug.var_display_max_depth = -1
  xdebug.var_display_max_data = -1
  xdebug.var_display_max_children = -1
  ...

Example command to use Xdebug with CLI inside devenv shell

export XDEBUG_MODE=debug XDEBUG_SESSION=1; export XDEBUG_CONFIG="idekey=PHPSTORM"; php bin/console theme:compile

SSL

Create a devenv.local.nix file in your project root

{ lib, config, ... }: {
  env.APP_URL = "https://localhost";

  certificates = [
    "localhost"
  ];

  services.caddy = {
      virtualHosts."localhost" = {
        extraConfig = ''
          tls .devenv/state/mkcert/localhost.pem .devenv/state/mkcert/localhost-key.pem

          @default {
            not path /theme/* /media/* /thumbnail/* /bundles/* /css/* /fonts/* /js/* /sitemap/*
          }

          root * public
          php_fastcgi @default unix/${config.languages.php.fpm.pools.web.socket} {
              trusted_proxies private_ranges
          }
          file_server
        '';
      };
    };
}

If you still have trouble that HTTPS is not working and you are not the root user (and using Linux) try executing this and afterwards restart devenv:

sudo sysctl net.ipv4.ip_unprivileged_port_start=80

Alternatives

Released - 15.01.2024

Comments


About the author

Bild Bjoern
Björn MeyerSoftware Engineer
Björn is interested in the details of web technologies. He started with Joomla, Drupal, Typo3, vBulletin, Fireworks and Photoshop. Today his focus is on PHP for example with Magento 2, Shopware 6 and Symfony. He also likes JavaScript with Angular, React, VueJs and TypeScript. In his free time, he seeks constant balance with swimming, running and yoga.