So installierst du PrestaShop auf Rocky Linux 9

PrestaShop ist eine Open-Source-E-Commerce-Webanwendung, die auf dem PHP-Framework Symfony basiert. Sie ermöglicht es dir, einen Online-Shop zu entwerfen, zu erstellen und zu hosten, um Produkte zu verkaufen, Zahlungen zu empfangen und alle damit verbundenen Aspekte zu verwalten. Sie wird von über 300.000 Websites genutzt und ist damit eine der beliebtesten E-Commerce-Plattformen. Sie unterstützt Module, mit denen du ihre Funktionen noch weiter ausbauen kannst. Du kannst sie mit verschiedenen hochwertigen Themes anpassen. Sie bietet anpassbare Vorlagen, sichere Zahlungsgateways, Bestandsverwaltung und SEO-freundliche Tools zur Optimierung der Suchmaschinenplatzierung.

In diesem Lernprogramm erfährst du, wie du Prestashop auf einem Rocky Linux 9 Server installierst.

Voraussetzungen

  • Ein Server mit Rocky Linux 9 und mindestens 1 GB RAM.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Ein Fully Qualified Domain Name (FQDN) wie prestashop.example.com, der auf deinen Server zeigt.
  • Ein SMTP-Konto bei einem E-Mail-Dienst wie Amazon SES oder Mailgun.
  • Alles ist auf dem neuesten Stand.
    $ sudo dnf update
    
  • Einige wichtige Pakete werden benötigt, damit das Tutorial und Prestashop funktionieren. Einige davon befinden sich bereits auf deinem Server.
    $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet die Firewalld Firewall. Überprüfe den Status der Firewall.

$ sudo firewall-cmd --state
running

Die Firewall arbeitet mit verschiedenen Zonen, wobei die öffentliche Zone die Standardzone ist, die wir verwenden werden. Liste alle Dienste und Ports auf, die auf der Firewall aktiv sind.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe angezeigt werden.

cockpit dhcpv6-client ssh

Lasse HTTP- und HTTPS-Ports zu.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Überprüfe erneut den Status der Firewall.

$ sudo firewall-cmd --permanent --list-services

Du solltest eine ähnliche Ausgabe sehen.

cockpit dhcpv6-client http https ssh

Lade die Firewall neu, um die Änderungen zu aktivieren.

$ sudo firewall-cmd --reload

Schritt 2 – Nginx installieren

Rocky Linux 9 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo zum Bearbeiten.

$ sudo nano /etc/yum.repos.d/nginx.repo

Füge den folgenden Code in die Datei ein.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Installiere Nginx.

$ sudo dnf install nginx -y

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.24.0

Aktiviere und starte den Nginx Serverdienst.

$ sudo systemctl enable nginx --now

Überprüfe den Status des Dienstes.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
     Active: active (running) since Sat 2023-11-25 10:58:03 UTC; 5s ago
       Docs: http://nginx.org/en/docs/
    Process: 4220 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 4222 (nginx)
      Tasks: 2 (limit: 10841)
     Memory: 1.9M
        CPU: 9ms
     CGroup: /system.slice/nginx.service
             ??4222 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??4223 "nginx: worker process"

Öffne die IP-Adresse deines Servers in deinem Webbrowser. Du solltest die folgende Seite sehen, d.h. dein Server ist betriebsbereit.

Nginx Standardseite

Schritt 3 – Installiere PHP und Erweiterungen

Rocky Linux 9 wird standardmäßig mit PHP 8.1 ausgeliefert. Um immer auf der neuesten PHP-Version zu bleiben oder wenn du mehrere PHP-Versionen installieren möchtest, müssen wir das REMI-Repository nutzen.

Der erste Schritt besteht darin, das Epel-Repository zu holen.

$ sudo dnf install epel-release -y

Als nächstes installierst du das Remi-Repository.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Prüfe, ob PHP-Streams verfügbar sind.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Die Standardversion ist 8.1. Zum Zeitpunkt der Erstellung dieses Tutorials ist Prestashop mit PHP 8.1 kompatibel. Aktiviere daher das PHP 8.1 Repository von Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.1

Installiere PHP und die von Prestashop benötigten Erweiterungen.

$ sudo dnf install php php-bcmath php-cli php-curl php-common \
    php-fpm php-gd php-gmp php-intl php-mbstring \
    php-mysql php-opcache php-xml php-zip -y

Überprüfe die installierte Version von PHP.

$ php --version
PHP 8.1.26 (cli) (built: Nov 21 2023 21:53:48) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.26, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.26, Copyright (c), by Zend Technologies

Aktiviere und starte den PHP-FPM-Dienst.

$ sudo systemctl enable php-fpm --now

Überprüfe den Status des Dienstes.

$ sudo systemctl status php-fpm
? php-fpm.service - The PHP FastCGI Process Manager
     Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
     Active: active (running) since Sat 2023-11-25 12:54:31 UTC; 2s ago
   Main PID: 6160 (php-fpm)
     Status: "Ready to handle connections"
      Tasks: 6 (limit: 10841)
     Memory: 15.2M
        CPU: 56ms
     CGroup: /system.slice/php-fpm.service
             ??6160 "php-fpm: master process (/etc/php-fpm.conf)"
             ??6161 "php-fpm: pool www"
             ??6162 "php-fpm: pool www"
             ??6163 "php-fpm: pool www"
             ??6164 "php-fpm: pool www"
             ??6165 "php-fpm: pool www"

Schritt 4 – Percona MySQL Server installieren

Prestashop benötigt einen MySQL-Datenbankserver für die Datenspeicherung. Anstatt MySQL zu installieren, werden wir den Percona MySQL Server installieren. Er ist ein vollwertiger Ersatz für MySQL und bietet mehr Funktionen und Sicherheit.

Der erste Schritt besteht darin, das Percona Release Repository für Rocky Linux zu installieren.

$ sudo dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Wenn du die folgende Fehlermeldung erhältst, kannst du sie getrost ignorieren und weitermachen, da sie keinen Einfluss auf die Installation hat. Der GPG-Schlüssel wird später trotzdem importiert.

error: can't create transaction lock on /var/lib/rpm/.rpm.lock (Resource temporarily unavailable)
error: /etc/pki/rpm-gpg/RPM-GPG-KEY-Percona: key 1 import failed.

Sobald das Repository installiert ist, richte das Percona Server Repository für MySQL 8.0 ein, indem du den folgenden Befehl eingibst.

$ percona-release setup ps80

Der obige Befehl fragt dich, ob du das Standard-MySQL-Modul deaktivieren möchtest. Gib y ein, um fortzufahren. Dadurch wird das MySQL-Installationsmodul deaktiviert und das Percona MySQL-Modul aktiviert.

Installiere Percona Server für MySQL 8.0.

$ sudo dnf -y install percona-server-server

Dadurch werden der Percona Server und der Client für MySQL installiert, die die grundlegenden Pakete sind, die du im Moment brauchst.

Überprüfe die Installation.

$ mysql --version
mysql  Ver 8.0.34-26 for Linux on x86_64 (Percona Server (GPL), Release 26, Revision 0fe62c85)

Starte den MySQL-Dienst.

$ sudo systemctl start mysqld

Überprüfe den Status des MySQL-Dienstes.

$ sudo systemctl status mysqld
? mysqld.service - MySQL Server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: disabled)
     Active: active (running) since Sun 2023-11-26 06:25:37 UTC; 7s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
    Process: 6522 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
   Main PID: 6598 (mysqld)
     Status: "Server is operational"
      Tasks: 39 (limit: 10841)
     Memory: 486.8M
        CPU: 8.131s
     CGroup: /system.slice/mysqld.service
             ??6598 /usr/sbin/mysqld

Nov 26 06:25:28 prestashop.example.com systemd[1]: Starting MySQL Server...
Nov 26 06:25:37 prestashop.example.com systemd[1]: Started MySQL Server.

Percona generiert während der Installation ein temporäres Root-Passwort. Hol dir dieses Passwort mit dem folgenden Befehl.

$ sudo grep "temporary password" /var/log/mysqld.log
2023-11-26T06:25:33.316696Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: (sDeLSgjs7pI

Melde dich in der MySQL-Shell an.

$ sudo mysql -u root -p

Führe den Assistenten zur Einrichtung der MySQL-Sicherheit aus.

$ sudo mysql_secure_installation

Gib das Root-Passwort ein, wenn du dazu aufgefordert wirst.

Securing the MySQL server deployment.

Enter password for user root:

Das temporäre Passwort ist bereits abgelaufen und du wirst aufgefordert, ein neues Root-Passwort zu setzen. Wähle ein sicheres Passwort für das Root-Konto. Dein Passwort sollte den aktuellen Anforderungen der Passwortrichtlinie entsprechen, d.h. es sollte einen Kleinbuchstaben, einen Großbuchstaben, eine Zahl und ein Sonderzeichen enthalten.

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

Als Nächstes wird die Passwortstärke angezeigt und du wirst gefragt, ob du das Passwort ändern möchtest. Gib N ein, um fortzufahren.

The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.

Gib Y ein, um anonyme Benutzer zu entfernen.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.

Gib Y ein, um den Root-Login aus der Ferne zu verbieten.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

Gib Y ein, um die Testdatenbank zu entfernen.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Zum Schluss gibst du N ein, um die Berechtigungstabellen neu zu laden.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Das war’s. Wenn du dich das nächste Mal in der MySQL-Shell anmelden willst, gibst du den folgenden Befehl ein und gibst das Passwort root ein, wenn du dazu aufgefordert wirst.

$ sudo mysql -u root -p

Du erhältst die folgende MySQL-Shell-Eingabeaufforderung.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.34-26 Percona Server (GPL), Release 26, Revision 0fe62c85

Copyright (c) 2009-2023 Percona LLC and/or its affiliates
Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Gib exit ein, um die Shell zu verlassen.

Schritt 5 – Percona MySQL Server konfigurieren

Melde dich in der MySQL-Shell an.

$ sudo mysql -u root -p

Erstelle eine neue MySQL-Datenbank, einen Datenbankbenutzer und ein Passwort für deine Prestashop-Installation.

mysql> CREATE DATABASE prestashop COLLATE utf8mb4_general_ci;
mysql> CREATE USER 'prestauser'@'localhost' IDENTIFIED BY 'Your_password2';
mysql> GRANT ALL PRIVILEGES ON prestashop.* TO 'prestauser'@'localhost';

Ersetze prestashop, prestauser und yourpassword durch die Anmeldedaten deiner Wahl. Wähle ein sicheres Passwort und stelle sicher, dass es den oben beschriebenen Passwortrichtlinien entspricht.

Flush die Berechtigungen, um sicherzustellen, dass sie in der aktuellen Sitzung gespeichert werden.

mysql> FLUSH PRIVILEGES;

Beende die MySQL-Shell.

mysql> exit

Schritt 6 – Herunterladen von Prestashop

Erstelle ein Verzeichnis für Prestashop.

$ sudo mkdir /var/www/html/prestashop -p

Es gibt zwei Versionen von Prestashop – die gebrandete Basic-Version und die ungebrandete Version. Die gebrandete Version ist auf der Website von Prestashop erhältlich, während die ungebrandete Version im GitHub-Repository verfügbar ist. Der Unterschied zwischen den beiden Versionen besteht darin, dass die gebrandete Version zusätzliche Module enthält, darunter einen Zahlungsprozessor, Facebook- und Google-Module für Werbung und SEO sowie verschiedene andere Module zur Verbindung mit Prestashop und für Analysezwecke.

Die Basisversion wird nach der Non-Branded-Version veröffentlicht. Daher ist zum Zeitpunkt der Erstellung dieses Tutorials die neueste Version der Basisversion 8.1.1 und die Nicht-Markenversion 8.1.2 verfügbar. Für unseren Lehrgang werden wir die gebrandete Basisversion verwenden. Wenn du möchtest, kannst du auch die Nicht-Markenversion verwenden. Der Installationsprozess für beide Versionen ist genau derselbe.

Lade die neueste Version mit folgendem Befehl herunter.

$ cd /tmp
$ wget https://assets.prestashop3.com/dst/edition/corporate/8.1.1/prestashop_edition_basic_version_8.1.1.zip

Du erhältst den Link, indem du die Prestashop-Downloadseite besuchst, deine E-Mail eingibst und die Datei herunterlädst. Die ungebrandete Version kannst du von der Prestashop GitHub Release-Seite herunterladen.

Entpacke das heruntergeladene Archiv.

$ unzip prestashop_*.zip

Dieses Archiv enthält eine weitere Zip-Datei namens prestashop.zip, die alle Dateien enthält. Entpacke die Dateien in das Prestashop-Verzeichnis.

$ sudo unzip prestashop.zip -d /var/www/html/prestashop

Ändere den Besitzer des Prestashop-Verzeichnisses auf den Benutzer nginx.

$ sudo chown -R nginx: /var/www/html/prestashop

Schritt 7 – SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Dazu verwenden wir den Snapd-Paketinstaller. Da Rocky Linux nicht mit diesem Paket ausgeliefert wird, installierst du den Snapd-Installer. Er benötigt das EPEL (Extra Packages for Enterprise Linux) Repository, um zu funktionieren. Da wir es aber bereits in Schritt 3 installiert haben, können wir direkt fortfahren.

Installiere Snapd.

$ sudo dnf install -y snapd

Aktiviere und starte den Snap-Dienst.

$ sudo systemctl enable snapd --now

Installiere das Snap-Kernpaket und vergewissere dich, dass deine Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Erstelle die notwendigen Links, damit Snapd funktioniert.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Installiere Certbot.

$ sudo snap install --classic certbot

Stelle mit dem folgenden Befehl sicher, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link auf das Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfe, ob Certbot richtig funktioniert.

$ certbot --version
certbot 2.7.4

Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d prestashop.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/prestashop.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfe den Certbot-Erneuerungszeitplanungsdienst.

$ sudo systemctl list-timers

Du findest snap.certbot.renew.service als einen der Dienste, die für die Ausführung vorgesehen sind.

NEXT                        LEFT           LAST                        PASSED      UNIT                      ACTIVATES     
---------------------------------------------------------------------------------------------------------------------------               
Sun 2023-11-26 17:12:40 UTC 1h 34min left Sun 2023-11-26 15:25:36 UTC 12min ago    dnf-makecache.timer       dnf-makecache.service
Sun 2023-11-26 17:48:00 UTC 2h 10min left -                           -            snap.certbot.renew.timer  snap.certbot.renew.service
Mon 2023-11-27 00:00:00 UTC 8h left       Sun 2023-11-26 00:00:00 UTC 15h ago      logrotate.timer           logrotate.service

Führe einen Probelauf des Prozesses durch, um zu prüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, bist du bereit. Dein Zertifikat wird automatisch erneuert.

Schritt 8 – SELinux konfigurieren

Ändere den Dateisicherheitskontext für Prestashop.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/prestashop(/.*)?"

Wende die Richtlinie an.

$ sudo restorecon -Rv /var/www/html/prestashop/

Wende die Richtlinie an, um Nginx den Zugriff auf MariaDB zu ermöglichen.

$ sudo setsebool -P httpd_can_network_connect_db 1

Wende die Richtlinie an, um Verbindungen zu externen Hosts zu erlauben. Dies wird für den Versand von E-Mails benötigt.

$ sudo setsebool -P httpd_can_network_connect 1

Mit MariaDB 10.11 wirst du mit einem weiteren Problem konfrontiert: SELinux verhindert, dass sich PHP-FPM mit MariaDB verbindet. Das kann durch die Installation eines SELinux-Moduls gelöst werden. Der erste Schritt besteht darin, eine Datei type enforcement zu erstellen.

Erstelle die Datei my-phpfpm.te in deinem Home-Verzeichnis und öffne sie zum Bearbeiten.

$ cd ~
$ nano my-phpfpm.te

Füge den folgenden Code in die Datei ein.

module my-phpfpm 1.0;

require {
        type unconfined_service_t;
        type httpd_t;
        type httpd_sys_content_t;
        class dir write;
        class unix_stream_socket connectto;
}

#============= httpd_t ==============

#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;

#!!!! This avc is allowed in the current policy
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Im nächsten Schritt wandelst du sie mit folgendem Befehl in ein Richtlinienmodul um. Ändere den Dateinamen in dem Befehl nicht, sonst funktioniert er nicht. Das Modul heißt my-phpfpm und der Dateiname sollte mit dem Namen des Moduls übereinstimmen.

$ sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te

Als Nächstes müssen wir das Richtlinienmodul kompilieren, um ein Richtlinienpaket zu erstellen.

$ sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod

Der letzte Schritt besteht darin, das Richtlinienpaket mit dem Befehl semodule zu laden, der die zu verwendende Richtlinie installiert.

$ sudo semodule -i my-phpfpm.pp

Schritt 9 – PHP-FPM konfigurieren

Öffne php.ini zur Bearbeitung.

$ sudo nano /etc/php.ini

Um die Datei-Upload-Größen festzulegen, änderst du die Werte der Variablen upload_max_filesize und post_max_size. Dieser Wert bestimmt die Größe der Datei, die du in Prestashop hochladen kannst. Standardmäßig ist er auf 10 MB eingestellt, was wir mit PHP konfigurieren werden.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 16M/' /etc/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 16M/' /etc/php.ini

Konfiguriere das Speicherlimit von PHP je nach den Ressourcen und Anforderungen deines Servers.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php.ini

Öffne die Datei /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Wir müssen den Unix-Benutzer/die Unix-Gruppe der PHP-Prozesse auf nginx setzen. Finde die Zeilen user=apache und group=apache in der Datei und ändere sie in nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Finde die Zeilen listen.owner = nobody, listen.group = nobody, listen.mode = 0660 in der Datei und ändere sie wie folgt, nachdem du sie auskommentiert hast.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Starte den PHP-fpm-Prozess neu. Vergewissere dich, dass Nginx installiert ist, bevor du den PHP-Dienst neu startest, sonst schlägt er fehl, da er die Gruppe nginx nicht finden kann.

$ sudo systemctl restart php-fpm

Ändere die Gruppe des PHP-Sessions-Verzeichnisses auf Nginx.

$ sudo chgrp -R nginx /var/lib/php/session

Schritt 10 – Nginx konfigurieren

Öffne die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size 64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Erstelle und öffne die Datei /etc/nginx/conf.d/prestashop.conf zum Bearbeiten.

$ sudo nano /etc/nginx/conf.d/prestashop.conf

Füge den folgenden Code in die Datei ein. Ersetze prestashop.example.com durch deinen Domainnamen. Vergewissere dich, dass der Wert von client_max_body_size auf 10 MB eingestellt ist, was der Standard-Uploadgröße von Dateien in Prestashop entspricht. Es ist derselbe Wert, den wir zuvor mit PHP konfiguriert haben.

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # [EDIT] Your domain name(s) go here.
    server_name prestashop.example.com;

    # [EDIT] Path to your domain Nginx logs.
    access_log /var/log/nginx/prestashop.access.log;
    error_log /var/log/nginx/prestashop.error.log;

    # [EDIT] Path to your SSL certificates (take a look at Certbot https://certbot.eff.org).
    ssl_certificate      /etc/letsencrypt/live/prestashop.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/prestashop.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/prestashop.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # [EDIT] Path to your PrestaShop directory.
    root /var/www/html/prestashop;

    index index.php;

    # This should match the `post_max_size` and/or `upload_max_filesize` settings
    # in your php.ini.
    client_max_body_size 16M;

    # Redirect 404 errors to PrestaShop.
    error_page 404 /index.php?controller=404;

    # HSTS (Force clients to interact with your website using HTTPS only).
    # For enhanced security, register your site here: https://hstspreload.org/.
    # WARNING: Don't use this if your site is not fully on HTTPS!
    # add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" preload; always;

    # [EDIT] If you are using multiple languages.
    # rewrite ^/fr$ /fr/ redirect;
    # rewrite ^/fr/(.*) /$1;

    # Images.
    rewrite ^/(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$1$2.jpg last;
    rewrite ^/(\d)(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3.jpg last;
    rewrite ^/(\d)(\d)(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last;
    rewrite ^/(\d)(\d)(\d)(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
    rewrite ^/(\d)(\d)(\d)(\d)(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
    rewrite ^/(\d)(\d)(\d)(\d)(\d)(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
    rewrite ^/(\d)(\d)(\d)(\d)(\d)(\d)(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last;
    rewrite ^/(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(-[\w-]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
    rewrite ^/c/([\w.-]+)/.+\.jpg$ /img/c/$1.jpg last;

    # AlphaImageLoader for IE and FancyBox.
    rewrite ^images_ie/?([^/]+)\.(gif|jpe?g|png)$ js/jquery/plugins/fancybox/images/$1.$2 last;

    # Web service API.
    rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;

    # Installation sandbox.
    rewrite ^(/install(?:-dev)?/sandbox)/.* /$1/test.php last;

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

    # [EDIT] Replace 'admin-dev' in this block with the name of your admin directory.
    location /admin-dev/ {
        if (!-e $request_filename) {
            rewrite ^ /admin-dev/index.php last;
        }
    }

    # .htaccess, .DS_Store, .htpasswd, etc.
    location ~ /\. {
        deny all;
    }

    # Source code directories.
    location ~ ^/(app|bin|cache|classes|config|controllers|docs|localization|override|src|tests|tools|translations|var|vendor)/ {
        deny all;
    }

    # vendor in modules directory.
    location ~ ^/modules/.*/vendor/ {
        deny all;
    }

    # Prevent exposing other sensitive files.
    location ~ \.(log|tpl|twig|sass|yml)$ {
        deny all;
    }

    # Prevent injection of PHP files.
    location /img {
        location ~ \.php$
        { deny all; }
    }

    location /upload {
        location ~ \.php$
        { deny all; }
    }

    # enable browser caching
    location ~* \.(?:css|eot|gif|ico|jpe?g|otf|png|ttf|woff2?)$ {
        expires 1M;
        add_header Cache-Control "public";
    }

    location ~ [^/]\.php(/|$) {
        # Split $uri to $fastcgi_script_name and $fastcgi_path_info.
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;

        # Ensure that the requested PHP script exists before passing it
        # to the PHP-FPM.
        try_files $fastcgi_script_name =404;

        # Environment variables for PHP.
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;

        fastcgi_index index.php;

        fastcgi_keep_conn on;
        fastcgi_read_timeout 30s;
        fastcgi_send_timeout 30s;

        # Uncomment these in case of long loading or 502/504 errors.
        # fastcgi_buffer_size 256k;
        # fastcgi_buffers 256 16k;
        # fastcgi_busy_buffers_size 256k;

        # [EDIT] Connection to PHP-FPM unix domain socket.
        fastcgi_pass unix:/run/php-fpm/www.sock;
    }

    # enable gzip compression
    gzip on;
    gzip_disable "msie6";

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_min_length 1000;
    gzip_types
        application/atom+xml
        application/geo+json
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rdf+xml
        application/rss+xml
        application/x-javascript
        application/xhtml+xml
        application/xml
        font/eot
        font/otf
        font/ttf
        image/svg+xml
        text/css
        text/javascript
        text/plain
        text/xml;
}

# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  prestashop.example.com;
    return 301   https://$host$request_uri;
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe deine Nginx-Konfiguration.

$ sudo nginx -t

Starte den Nginx-Server neu.

$ sudo systemctl restart nginx

Schritt 11 – Installiere Prestashop

Rufe die URL https://prestashop.example.com in deinem Browser auf und du wirst den folgenden Installationsbildschirm sehen.

Prestashop Installer Seite

Klicke auf Weiter, um auf die nächste Seite zu gelangen.

Prestashop Lizenzvertrag Seite

Es wird dir die Prestashop-Lizenz angezeigt. Aktiviere die Schaltfläche Ich stimme den oben genannten Bedingungen zu, um der Lizenz zuzustimmen, und klicke auf Weiter, um fortzufahren.

Prestashop Shop Informationsseite

Als Nächstes wirst du aufgefordert, Informationen über deinen Shop anzugeben. Gib den Namen, das Land, die Zeitzone und den Ladentyp deines Shops an und aktiviere die SSL-Option. Gib außerdem deinen Kontonamen, deine E-Mail-Adresse und dein Passwort ein, mit dem du dich in deinem Laden anmelden kannst. Klicke auf Weiter, wenn du fertig bist.

Prestashop Store Inhaltsseite

Als Nächstes wirst du gefragt, ob du einige Demoprodukte in den Shop aufnehmen möchtest. Wähle Nein, wenn du sie nicht möchtest. Wähle außerdem die Option Alle Module installieren oder wähle die Module aus, die du installieren möchtest. Klicke auf Weiter, wenn du fertig bist.

Prestashop Datenbank Konfiguration

Als Nächstes gibst du die Datenbankzugangsdaten ein, die wir in Schritt 5 erstellt haben. Lasse die anderen Optionen unverändert. Klicke auf die Option Datenbank testen, um die Verbindung zu überprüfen.

Prestashop Datenbank Verbindungstest

Klicke bei erfolgreicher Verbindung zur Datenbank auf Weiter, um zur nächsten Seite zu gelangen.

Prestashop Installer Fortschritt

Hier siehst du den Fortschritt der Prestashop-Installation. Sobald sie abgeschlossen ist, wird automatisch die folgende Seite geöffnet.

Prestashop Fertige Installationsseite

Klicke auf die Schaltfläche Verwalte deinen Laden, um das Administrations-Dashboard zu öffnen und deinen Laden einzurichten.

Prestashop Installationsverzeichnis Warnung

Hier erhältst du eine Warnung, dass du das Verzeichnis install löschen sollst, bevor du versuchst, den Laden zu verwalten, um die Sicherheit zu erhöhen. Melde dich über SSH wieder bei deiner Website an und führe den folgenden Befehl aus.

$ sudo rm -rf /var/www/html/petrashop/install

Gehe zurück zur letzten Seite des Installers und öffne die URL erneut. Wie du siehst, ist die URL der Verwaltungsseite zufällig gewählt. Dies geschieht, um die Sicherheit zu verbessern. Jede Prestashop-Installation erhält eine andere Admin-URL. Für unser Tutorial ist der generierte Link https://prestashop.example.com/admin705saygwpwquwnhixx1. Du wirst die folgende Anmeldeseite erhalten.

Prestashop Login Seite

Gib deine Anmeldedaten ein und klicke auf die Schaltfläche LOG IN, um auf das Dashboard zuzugreifen.

Prestashop Admin Dasboard

Die Shopseite von Prestashop sollte bei einer Standardinstallation wie folgt aussehen.

Prestashop Homepage

Von hier an kannst du Prestashop benutzen.

Schritt 12 – Prestashop aktualisieren

Es gibt mehrere Möglichkeiten, Prestashop zu aktualisieren. Am einfachsten ist es, den eingebauten Aktualisierungsassistenten zu verwenden. Deine Prestashop-Installation wird mit dem Modul ausgeliefert.

Der erste Schritt besteht darin, deinen Shop in den Wartungsmodus zu versetzen. Klicke auf die Option Konfigurieren >> Shop-Parameter >> Allgemein im linken Menü auf der Verwaltungsseite. Wechsle auf der Seite zum Reiter Wartung.

Deaktiviere den Laden und füge deine IP-Adresse als Wartungs-IP hinzu, indem du auf die Schaltfläche Meine IP hinzufügen klickst. So stellst du sicher, dass du auf den Shop zugreifen kannst, auch wenn er gerade gewartet wird. Klicke auf die Schaltfläche Speichern, wenn du fertig bist.

Prestashop Wartungsseite

Als Nächstes öffnest du die Modulmanager-Seite in deinem Administrationsbereich, indem du auf der linken Seite die Option Verbessern >> Module >> Modulmanager auswählst.

Prestashop Modul Manager Admin Menü

Dort installierst du das 1-Click-Upgrade-Modul, indem du auf die Schaltfläche Installieren klickst. Nach der Installation klickst du auf die Schaltfläche Konfigurieren, um eine neue Seite zu öffnen, auf der du die Einstellungen vor der Durchführung des Upgrades konfigurierst.

Im ersten Teil der Seite sind einige Prüfungen vor dem Upgrade aufgeführt. Alle Prüfungen sollten erfüllt sein, bevor das Upgrade durchgeführt werden kann.

Prestashop Vor-Upgrade Checkliste

Mit der ersten Konfiguration kannst du auswählen, welche Art von Upgrade du durchführen möchtest. Da wir die Basisversion 8.1.1 verwenden, ist die Open-Source-Version 8.1.2 für das Upgrade verfügbar. Es wird empfohlen, bei den Minor/Major-Zweigen zu bleiben.

Prestashop Upgrade Typ

Scrolle auf der Seite nach unten zu den Backup-Optionen, wo du Prestashop für die Sicherung der Dateien, der Datenbank und der Bilder auswählen kannst. Diese Funktionen sind zwar experimentell, aber du solltest sie trotzdem einbeziehen.

Prestashop Backup Optionen

Als Nächstes wählst du die Upgrade-Optionen für die Dinge aus, die du behalten und die du aktualisieren möchtest.

Prestashop Upgrade Optionen

Klicke auf die Schaltfläche Speichern über jedem Abschnitt, um die Optionen zu speichern. Wenn du zufrieden bist, klicke auf der gleichen Seite auf die Schaltfläche Prestashop jetzt aktualisieren, um deinen Shop zu aktualisieren. Wenn das Upgrade aus irgendeinem Grund nicht erfolgreich ist, hast du die Möglichkeit, es rückgängig zu machen.

Fazit

Dies ist der Abschluss unseres Tutorials, in dem du gelernt hast, wie du Prestashop auf einem Rocky Linux 9 Server installierst. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.

Das könnte dich auch interessieren …