In diesem Artikel:
Kategorie: Linux , PHP , PrestaShop Tags: Hetzner , LAMP , Onlineshop , PrestaShop Linux: apt install , apt update , apt-upgrade , chmod , chown , CREATE DATABASE , CREATE USER , FLUSH PRIVILEGES , GRANT ALL PRIVILEGES , mpm_event , mysql , php-curl , php-fpm , php-gd , php-intl , php-mbstring , php-simplexml , php-zip , proxy_fcgi , rm , setenvif , ufwServerpakete aktualisieren
apt update
apt upgrade
reboot
Datenbank erstellen
Hetzner speichert das Root-Passwort für MariaDB in der Datei /root/.hcloud_password
#Automatisch generiertes Passwort abfragen:
nano .hcloud_password
#Mit mysql einloggen und Datenbank erstellen:
mysql -u root -p
[Passwort aus .hcloud_password einfügen]
CREATE DATABASE presta_db;
CREATE USER 'presta_user'@'localhost' IDENTIFIED BY 'Passwort';
GRANT ALL PRIVILEGES ON presta_db.* TO 'presta_user'@'localhost';
FLUSH PRIVILEGES;
Installationsdaten per FTP hochladen und vorbereiten
Auf der Webseite von Prestashop kann die aktuellste Version heruntergeladen werden.
https://prestashop.com/prestashop-edition-basic/
Die heruntergeladenen Datei entpacken und nur die prestashop.zip per FTP auf den Server ins Webseiten-Verzeichnis unter /var/www/deien_webseite.de hochladen.
ls /var/www/deine_webseite.de
Falls neben der prestashop.zip noch andere Dateien (wie bspw. eine index.php) vorhanden sind, müssen diese entfernt werden.
rm index.php
Das Paket unzip installieren, damit wir die prestashop.zip entpacken können. Danach wird die prestashop.zip entfernt mit rm.
apt install unzip
unzip prestashop.zip
rm prestashop.zip
Nun das Verzeichnis app/Resources/translations erstellen, damit wir auch dafür schon die Verzeichnisrechte anpassen können.
mkdir /var/www/deine_webseite.de/app/Resources/translations
Verzeichnisrechte und -besitzer müssen angepasst werden.
chown -R www-data:www-data /var/www/deine_webseite.de/
chmod -R 755 /var/www/deine_webseite.de/
PHP Extensions installieren
Prestashop benötigt und/oder empfiehlt die Installation mehrere PHP-Extensions.
apt install php-zip php-simplexml php-curl php-gd php-intl php-mbstring php-bcmath php-imagick
PHP Memcached installieren
apt install memcached libmemcached-tools -y
apt install php-memcached
service apache2 restart
PHP-FPM installieren
Wir installieren zusätzlich PHP-FPM
apt install php-fpm
a2enconf php8.1-fpm
a2dismod php8.1
a2enmod mpm_event proxy_fcgi setenvif
Empfohlene PHP Konfiguration
Die empfohlen Konfiguration kann über die phppsinfo.php aufgerufen und überprüft werden. Die phppsinfo.php kann unter folgendem Link heruntergerladen werden.
https://github.com/PrestaShop/php-ps-info/
Außerdem hat Prestashop eine Beitrag veröffentlicht, in dem mehrere Optimierungshinweise zu PHP enthalten sind.
https://devdocs.prestashop-project.org/8/scale/optimizations/
Im weiteren Verlauf wird nun die php.ini entsprechend den Empfehlungen angepasst.
#Änderungen in der www.conf
nano /etc/php/8.1/fpm/pool.d/www.conf
pm.max_children = 15
#Änderungen in der php.ini
nano /etc/php/8.1/fpm/php.ini
max_execution_time = 300
max_input_time = 300
max_input_vars = 5000
memory_limit = 512M
post_max_size = 128M
upload_max_filesize = 128M
realpath_cache_size = 4096K
realpath_cache_ttl = 600
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=16229
opcache.max_wasted_percentage=10
opcache.revalidate_freq=10
opcache.fast_shutdown=1
opcache.enable_file_override=0
opcache.max_file_size=0
Alle Einstellungen werden erst nach Neustart wirksam. Daher einmal den apache2 Dienst neu starten.
systemctl restart php8.1-fpm
systemctl restart apache2
Firewall installieren
apt install ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow from your_static_public_ip to any port ssh (ACHTUNG!)
ufw allow http
ufw allow https
ufw enable
ufw status
Prestashop installieren
Für die Installation die URL deine_webseite.de/install im Browser aufrufen.
Nach der Installation und vor dem Aufrufen des Backends muss das Installationsverzeichnis /install gelöscht werden.
rm -r /var/www/deine_webseite.de/install