Installation über shopware-installer.phar.php

Hallo zusammen,

da ich aus unterschiedlichen Gründen shopware 6.6.6.1 schon mehrer Male neu aufgesetzt habe, hierzu eine Frage:

  1. ich setzte im nginx das root auf /var/www/shop.meinedomain.de
  2. ich lege eine leere Datenbank in der mariadb an: „shopdb“
  3. ich erstelle eine Datenbankbenutzer der alle rechte auf die „shopdb“ hat
  4. ich gebe im browser /shop.meinedomain.de/shopware-installer.phar.php ein
  5. Die Istallation von shopware 6 startet
  6. Die Dateien werden im Hintergrund auf den Server heruntergeladen
  7. Die Installation bricht ab weil das Installationsprogramm /var/www/shop.meinedomain.de/public/install sucht und nicht findet
  8. im Installtionsscreen stand ich solle root auf /var/www/shop.meinedomain.de/public ändern
  9. Ich ändere das und starte nginx neu
  10. Ich gebe /shop.meinedomain.de/ ein und die Installation läuft weiter, Datenbank wird installiert und und und

Meine Frage hierzu

Der erste Part der Installation sollte ja eigentlich sauber enden und nicht einfach „abbrechen“.
Weshalb ist das nicht so?
Mache ich irgendeinen Fehler?
Sollte nicht der Aufruf /var/www/shop.meinedomain.de/public/install sauber funktionieren?
Gruß, Ralf.

Also mir ist es schon zwei, drei Mal passiert, das ich das Ändern auf public mittendrin vergessen hab (find ich eh suboptimal gelöst) und ich konnte die Installation trotzdem problemlos beenden. Verwende allerdings meist den Apache, weiß nicht, ob das eine Rolle spielt (wüsste zwar nicht warum, aber wer weiß…).

Hi,

Deine nginx Config passt aber ? nginx unterstützt keine .htaccess Dateien so wie Apache - entsprechend musst Du passende Direktiven hinterlegen:

Viele Grüße

@SCOOPEX, ich gehe davon aus, dass die nginx config passt. Ich habe mich an die Vorgaben, das Beispiel auf der Shopware „requirements“ Seite gehalten. Prinzipiell funktioniert ja alles, bis auf die beschriebenen Fehler.
Außerdem würde ich dann nicht verstehen wie ein Fehler in der nginx config solchen Fehler in Shopware verursachen könnte.

@SCOOPEX

Ich kann auch die nginx config gerne mal hier posten.

Du hattest ja erwähnt, dass install nicht gefunden wird:

Die shopware-installer.phar.php Datei lädt lediglich die aktuelle Shopware Version herunter. Für die Installation muss nach dem Download der Einstiegspunkt auf public gesetzt werden und für die Installation rufst Du dann halt Deine Domain auf.

In der vorgenannten nginx Config sind entsprechend Direktiven enthalten, damit install gefunden wird:

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

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

Fehlt das bei Dir, wird das die Ursache sein … deshalb: besser nochmal die nginx Config prüfen (oder Apache verwenden - ist einfacher, da .htaccess unterstützt wird).

Viele Grüße

@SCOOPEX,

Das funktioniert ja soweit schon.

Nur beim ersten Teil der Installation ist ja der letzte Punkt auf der linken Seite „Abschluss“. Leider bricht der Vorgang vorher ab.
Ich persönlich würde erwarten, dass dieser Punkt angezeigt wird und dann ein Hinweis angezeigt wird, der sagt: „ändere jetzt dein root auf …/public und rufe dann shop.meinedomain.de auf.“
Diese Anzeige gibt es bei mir aber nicht…

wird evtl. schon aus dem install Teil generiert. Daher tippe ich wie gehabt auf die fehlenden Direktiven.

@SCOOPEX , danke dir werde das noch mal prüfen! Melde mich zurück.

1 „Gefällt mir“

Das ist meine nginx config Datei (ich habe meine url hier ersetzt) für shopware, wer Fehler findet, darf mir diese gerne nennen :wink:

server {
listen 80;
server_name shop.meinedomain.de;
return 301 https://shop.meinedomain.de.de$request_uri;
}

server {
listen 443 ssl;
server_name shop.meinedomain.de;
server_name_in_redirect off;
ssl_certificate /etc/letsencrypt/live/shop.meinedomain.de/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/shop.meinedomain.de/privkey.pem; # managed by Certbot
client_max_body_size 50M;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
#post_max_size = 100M;
#upload_max_filesize = 100M;
#max_execution_time = 30;
#max_execution_time 30;
access_log /var/log/nginx/shop.meinedomain.de.access_log;
error_log /var/log/nginx/shop.meinedomain.de.error_log;
root /var/www/html/shop.meinedomain.de/public;
index index.php index.html index.htm index.html;
# Support Clean (aka Search Engine Friendly) URLs
location / {
try_files $uri $uri/ /index.php$args;
}
#location shopware recommendation 1
location ~ ^/(recovery/update/index|index|shopware-installer.phar).php(/|$) {
fastcgi_split_path_info ^(.+.php)(/.+)$;
include fastcgi.conf;
fastcgi_param HTTP_PROXY „“;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
client_body_buffer_size 128k;
#fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
#location shopware recommendation 2
location ~* ^.+.(?:css|cur|js|jpe?g|gif|ico|png|svg|webp|avif|html|woff|woff2|xml)$ {
expires 1y;
add_header Cache-Control „public, must-revalidate, proxy-revalidate“;
access_log off;
# The directive enables or disables messages in error_log about files not found on disk.
log_not_found off;
tcp_nodelay off;
## Set the OS file cache.
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/..(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}
location ~
.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
include /etc/nginx/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ ^/(recovery/update/index|index|shopware-installer.phar).php(/|$) {
fastcgi_split_path_info ^(.+.php)(/.+)$;
include fastcgi.conf;
fastcgi_param HTTP_PROXY „“;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
client_body_buffer_size 128k;
#fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
location ~* ^.+.svg$ {
add_header Content-Security-Policy „script-src ‚none‘“;
}
#location shopware recommendation 5
location ~* ^.+.(?:css|cur|js|jpe?g|gif|ico|png|svg|webp|avif|html|woff|woff2|xml)$ {
expires 1y;
add_header Cache-Control „public, must-revalidate, proxy-revalidate“;
access_log off;
# The directive enables or disables messages in error_log about files not found on disk.
log_not_found off;
tcp_nodelay off;
## Set the OS file cache.
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
#location shopware recommendation 6
#location / {
#try_files $uri /index.php$is_args$args;
#}
# Enable Shopware 6.x installer
location /shopware-installer.phar.php {
try_files $uri /shopware-installer.phar.php$is_args$args;
}
# Run static files generated by shopware-installer.phar.php through PHP
location ~ ^/shopware-installer.phar.php/.+.(?:css|js|png|svg|woff)$ {
try_files $uri /shopware-installer.phar.php$is_args$args;
}
#Enable Shopware 6.x installer
location /recovery/install {
index index.php;
try_files $uri /recovery/install/index.php$is_args$args;
}
#Enable Shopware 6.x update
location /recovery/update/ {
location /recovery/update/assets {
}
if (!-e $request_filename){
rewrite . /recovery/update/index.php last;
}
}
location ~ ^/(status|ping)$ {
access_log off;
#allow 127.0.0.1;
#allow 1.2.3.4#your-ip;
#deny all;
include fastcgi_params;
#fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
# caching of files
location ~* .(ico|pdf|flv)$ {
expires 1y;
}
location ~* .(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
expires 14d;
}
location ~* ^.+.svg$ {
add_header Content-Security-Policy „script-src ‚none‘“;
}
}

Die Config sieht nach einem ziemlichen Durcheinander aus. Beachte, dass die Direktiven der Reihe nach verarbeitet werden - findet nginx also einen „Treffer“, der passen könnte, werden später folgende Direktiven ignoriert.

Als erstes würde ich die Direktiven für install/update so wie in der Doku beschrieben nach oben setzen und

root __DOCUMENT_ROOT__/public;

fehlt komplett.

Und auch nochmal der Hinweis, evtl. Apache zu verwenden anstelle von nginx.

nginx ist deutlich komplexer mit den Direktiven als Apache mit .htaccess. Auch ist nginx nicht zwingend „schneller“ als Apache (allenfalls bei vielen hundert gleichzeitigen Anfragen, da nginx weniger Arbeitsspeicher benötigt).

Hi @SCOOPEX ,

root fehlt nicht, dort steht doch:
root /var/www/html/shop.meinedomain.de/public;

@SCOOPEX ,

Das Problem ist behoben, hier war der Fehler:

location / {

#try_files $uri $uri/ /index.php$args;
try_files $uri $uri/ $uri/index.php$is_args$args /index.php$is_args$args;
}

Die auskommentierte Zeile war die aus den Shopware Empfehlungen, diese habe ich durch die Zeile darunter ersetzt. Jetzt funktioniert alles…

1 „Gefällt mir“

Prima - nginx ist mit den Direktiven halt leider sehr „penibel“ …