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.
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.
Klicke auf Weiter, um auf die nächste Seite zu gelangen.
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.
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.
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.
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.
Klicke bei erfolgreicher Verbindung zur Datenbank auf Weiter, um zur nächsten Seite zu gelangen.
Hier siehst du den Fortschritt der Prestashop-Installation. Sobald sie abgeschlossen ist, wird automatisch die folgende Seite geöffnet.
Klicke auf die Schaltfläche Verwalte deinen Laden, um das Administrations-Dashboard zu öffnen und deinen Laden einzurichten.
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.
Gib deine Anmeldedaten ein und klicke auf die Schaltfläche LOG IN, um auf das Dashboard zuzugreifen.
Die Shopseite von Prestashop sollte bei einer Standardinstallation wie folgt aussehen.
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.
Als Nächstes öffnest du die Modulmanager-Seite in deinem Administrationsbereich, indem du auf der linken Seite die Option Verbessern >> Module >> Modulmanager auswählst.
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.
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.
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.
Als Nächstes wählst du die Upgrade-Optionen für die Dinge aus, die du behalten und die du aktualisieren möchtest.
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.