So installierst du Shopware mit Nginx und kostenlosem Let’s Encrypt SSL auf Ubuntu 22.04

Shopware Community Edition ist eine kostenlose und quelloffene Warenkorb-Plattform, mit der du deinen eigenen Online-Shop im Internet starten kannst. Sie ist in Symfony und Vue.js geschrieben und basiert auf einem modernen Technologie-Stack. Es ist eine alternative Lösung zu anderen eCommerce-Anwendungen wie Magento. Es bietet eine schöne und benutzerfreundliche Web-UI für die Verwaltung von Kunden und Bestellungen. Mit ihr kannst du die Preise deiner Produkte verwalten, Themen ändern oder aktualisieren, E-Mail-Vorlagen für die Vermarktung deiner Produkte entwerfen und statistische Ergebnisse erstellen.

In diesem Lernprogramm zeigen wir dir, wie du Shopware CE mit Nginx und Let’s Encrypt auf Ubuntu 22.04 installierst.

Voraussetzungen

  • Ein Server mit Ubuntu 22.04 und mindestens 4 GB RAM.
  • Ein gültiger Domainname ist auf deinem Server angegeben.
  • Ein Root-Passwort ist auf deinem Server eingerichtet.

Nginx und MariaDB installieren

Installiere zunächst den Webserver Nginx und den Datenbankserver MariaDB mit dem folgenden Befehl:

apt-get install nginx mariadb-server -y

Sobald beide Pakete installiert sind, starte den Nginx- und den MariaDB-Dienst und aktiviere sie so, dass sie beim Systemstart gestartet werden:

systemctl start nginx
systemctl start mariadb
systemctl enable nginx
systemctl enable mariadb

PHP und andere Komponenten installieren

Shopware 6 unterstützt PHP-Versionen zwischen 7.2 und 7.3. Daher musst du PHP zusammen mit anderen Bibliotheken in deinem System installieren.

Zuerst fügst du das PHP-Repository mit dem folgenden Befehl zu deinem System hinzu:

apt-get install software-properties-common -y
add-apt-repository ppa:ondrej/php

Sobald das Repository hinzugefügt ist, installierst du PHP zusammen mit anderen Bibliotheken mit dem folgenden Befehl:

apt-get install php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-mysql php7.2-curl php7.2-json php7.2-zip php7.2-gd php7.2-xml php7.2-mbstring php7.2-intl php7.2-opcache git unzip socat curl bash-completion -y

Sobald alle Pakete installiert sind, bearbeitest du die Datei php.ini und nimmst einige gewünschte Einstellungen vor:

nano /etc/php/7.2/fpm/php.ini

Ändere die folgenden Zeilen:

memory_limit = 512M
upload_max_filesize = 20M
max_execution_time = 300

Speichere und schließe die Datei, wenn du fertig bist.

Als nächstes musst du den IonCube Loader in deinem System installieren.

Lade ihn zunächst mit dem folgenden Befehl herunter:

wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

Nach dem Download entpackst du die heruntergeladene Datei mit dem folgenden Befehl:

tar xfz ioncube_loaders_lin_x86-64.tar.gz

Als Nächstes suchst du den Pfad zum Verzeichnis der PHP-Erweiterung:

php -i | grep extension_dir

Du solltest die folgende Ausgabe sehen:

extension_dir => /usr/lib/php/20170718 => /usr/lib/php/20170718

Als Nächstes kopierst du den IonCube Loader in das PHP-Erweiterungsverzeichnis:

cp ioncube/ioncube_loader_lin_7.2.so /usr/lib/php/20170718/

Als Nächstes bearbeitest du die Datei php.ini und definierst den IonCube-Loader:

nano /etc/php/7.2/fpm/php.ini

Füge die folgende Zeile in den Abschnitt [PHP] ein:

zend_extension = /usr/lib/php/20170718/ioncube_loader_lin_7.2.so

Speichere und schließe die Datei und starte dann den PHP-FPM-Dienst neu, um die Änderungen zu übernehmen.

systemctl restart php7.2-fpm

MariaDB-Datenbank konfigurieren

Sichere zunächst die MariaDB-Installation und setze das Root-Passwort mit dem folgenden Skript:

mysql_secure_installation

Beantworte alle Fragen wie unten gezeigt:

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Sobald du fertig bist, melde dich mit folgendem Befehl in der MariaDB-Shell an:

mysql -u root -p

Gib dein MariaDB Root-Passwort ein und erstelle dann eine Datenbank und einen Benutzer für Shopware:

MariaDB [(none)]> CREATE DATABASE shopwaredb;
MariaDB [(none)]> GRANT ALL ON shopwaredb.* TO 'shopware'@'localhost' IDENTIFIED BY 'password';

Als Nächstes löschst du die Berechtigungen und verlässt MariaDB mit dem folgenden Befehl:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Sobald du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Shopware herunterladen

Erstelle zunächst ein Verzeichnis für Shopware innerhalb des Nginx-Web-Root-Verzeichnisses:

mkdir /var/www/html/shopware

Als Nächstes änderst du das Verzeichnis in Shopware und lädst die neueste Version von Shopware mit dem folgenden Befehl herunter:

cd /var/www/html/shopware
wget http://releases.s3.shopware.com.s3.amazonaws.com/install_5.4.5_6847c0845f0f97230aa05c7294fa726a96dda3ff.zip?_ga=2.133696968.774684214.1529926951-1771999509.1528830594 -O shopware.zip

Nach dem Download entpackst du die heruntergeladene Datei mit dem folgenden Befehl:

unzip shopware.zip

Als Nächstes änderst du die Eigentümerschaft des Shopware-Verzeichnisses und vergibst die entsprechenden Berechtigungen mit folgendem Befehl:

chown -R www-data:www-data /var/www/html/shopware
chmod -R 755 /var/www/html/shopware

Sobald du das getan hast, kannst du mit dem nächsten Schritt fortfahren.

Nginx für Shopware konfigurieren

Erstelle zunächst eine neue Nginx-Konfigurationsdatei für den virtuellen Host von Shopware:

nano /etc/nginx/sites-available/shopware.conf

Füge die folgenden Zeilen hinzu:

server {
    listen 80;

    server_name shopware.example.com; # Check this
    root /var/www/html/shopware; # Check this

    index shopware.php index.php;

    location / {
        try_files $uri $uri/ /shopware.php$is_args$args;
    }

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # Check this
    }
}

Speichere und schließe die Datei und aktiviere die Datei für den virtuellen Host für Shopware mit dem folgenden Befehl:

ln -s /etc/nginx/sites-available/shopware.conf /etc/nginx/sites-enabled/

Als Nächstes überprüfst du Nginx mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Du solltest die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl reload nginx

Um den Nginx-Status zu überprüfen, führe den folgenden Befehl aus:

systemctl status nginx

Du solltest die folgende Ausgabe erhalten:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-09-12 05:03:41 UTC; 5min ago
       Docs: man:nginx(8)
    Process: 29668 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=0/SUCCESS)
   Main PID: 17628 (nginx)
      Tasks: 3 (limit: 4579)
     Memory: 5.7M
        CPU: 63ms
     CGroup: /system.slice/nginx.service
             ??17628 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??29669 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??29670 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Sep 12 05:03:41 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 12 05:03:41 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Sep 12 05:09:28 ubuntu2204 systemd[1]: Reloading A high performance web server and a reverse proxy server...
Sep 12 05:09:28 ubuntu2204 systemd[1]: Reloaded A high performance web server and a reverse proxy server.

Zugriff auf den Shopware-Installationsassistenten

Zu diesem Zeitpunkt ist Shopware in deinem System installiert. Öffne nun deinen Webbrowser und gib die URL http://shopware.example.com ein. Du solltest den Shopware Web-Installationsassistenten sehen:

Wähle deine Sprache aus und klicke auf die Schaltfläche Weiter. Du solltest den folgenden Bildschirm sehen:

Vergewissere dich, dass alle erforderlichen Abhängigkeiten installiert sind, und klicke dann auf die Schaltfläche Weiter. Du solltest den folgenden Bildschirm sehen:

Akzeptiere die Allgemeinen Geschäftsbedingungen und klicke auf die Schaltfläche Weiter. Du solltest den folgenden Bildschirm sehen:

Gib deine Datenbankdaten ein und klicke auf die Schaltfläche Installation starten. Wenn die Installation erfolgreich abgeschlossen wurde, solltest du den folgenden Bildschirm sehen:

Klicke jetzt auf die Schaltfläche Installation starten. Du solltest den folgenden Bildschirm sehen:

Klicke auf die Schaltfläche Weiter. Du solltest die folgende Seite sehen:

Wähle die gewünschte Option aus und klicke auf die Schaltfläche Weiter. Du solltest die folgende Seite sehen:

Gib deinen Shopnamen, deine E-Mail-Adresse, dein Land, deine Admin-E-Mail-Adresse, deinen Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Weiter. Du wirst zum Dashboard von Shopware weitergeleitet:

Klicke auf die Schaltfläche Gehe zum Shop-Backend. Du solltest den folgenden Bildschirm sehen:

Gib deinen Login-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Login. Du solltest die folgende Seite sehen:

Jetzt kannst du deinen Shop einrichten und mit dem Online-Verkauf über die Shopware-Plattform beginnen.

Shopware mit Let’s Encrypt sichern

Bevor du beginnst, musst du den Certbot-Client in deinem System installieren, um Let’s Encrypt SSL zu installieren und zu verwalten. Du kannst ihn mit dem folgenden Befehl installieren:

apt-get install certbot python3-certbot-nginx -y

Sobald der Certbot-Client installiert ist, führe den folgenden Befehl aus, um Let’s Encrypt SSL für deine Website herunterzuladen und zu installieren:

certbot --nginx -d shopware.example.com

Gib deine E-Mail-Adresse an und akzeptiere die Nutzungsbedingungen wie unten gezeigt:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): hitjethva@gmail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for shopware.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/shopware.conf

Wähle aus, ob der HTTP-Verkehr auf HTTPS umgeleitet werden soll oder nicht:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Gib 2 ein und drücke die Eingabetaste, um den Vorgang zu starten. Sobald die Installation abgeschlossen ist, solltest du die folgende Ausgabe sehen:

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/shopware.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://shopware.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=shopware.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/shopware.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/shopware.example.com/privkey.pem
   Your cert will expire on 2022-09-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Zu diesem Zeitpunkt ist deine Shopware-Website mit Let’s Encrypt SSL gesichert. Du kannst jetzt sicher auf deine Website zugreifen, indem du die URL https://shopware.example.com verwendest .

Fazit

Herzlichen Glückwunsch! Du hast Shopware erfolgreich mit Nginx und Let’s Encrypt SSL auf Ubuntu 22.04 installiert. Du kannst jetzt damit beginnen, dein eigenes Online-Geschäft mit Shopware einzurichten. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …