Shopware te installeren met NGINX en Let’s encrypt op Debian 9
Shopware is een veel gebruikte professionele open source e-commerce software. Gebaseerd op geavanceerde technologieën als Symfony 3, Doctrine2 en Zend Framework is Shopware het perfecte platform voor je volgende e-commerce project. Deze handleiding toont je hoe je Shopware Community Edition (CE) op een Debian 9 systeem installeert door NGINX als webserver te gebruiken en hoe je de website met een gratis Let’s encrypt SSL certificaat beveiligt.
Vereisten
Zorg ervoor dat je systeem aan de volgende minimum eisen voldoet:
- Linux-gebaseerd besturingssysteem met NGINX of Apache 2.x (met mod_rewrite) webserver geïnstalleerd.
- PHP 5.6.4 of hoger met ctype, gd, curl, dom, hash, iconv, zip, json, mbstring, openssl, session, simplexml, xml, zlib, fileinfo, en pdo/mysql uitbreidingen. PHP 7.1 of hoger wordt sterk aanbevolen.
- MySQL 5.5.0 of hoger.
- Mogelijkheid om cron jobs in te stellen.
- Minimaal 4 GB beschikbare ruimte op de harde schijf.
- IonCube Loader versie 5.0.0 of hoger(optioneel).
OPMERKING: Shopware is momenteel tot PHP 7.2.x compatibel.
Vereisten
- Een besturingssysteem met Debian 9.
- Een niet-root gebruiker met sudo privileges.
Eerste stappen
Controleer je Debian versie:
lsb_release -ds
# Debian GNU/Linux 9.8 (stretch)
Stel de tijdzone in:
sudo dpkg-reconfigure tzdata
Werk je besturingssysteem pakketten (software) bij. Dit is een belangrijke eerste stap omdat je er zeker van bent dat je de laatste updates en beveiligingsfixes voor de standaard softwarepakketten van je besturingssysteem hebt:
sudo apt update && sudo apt upgrade -y
Installeer enkele essentiële pakketten die nodig zijn voor het basisbeheer van het Debian besturingssysteem:
sudo apt install -y curl wget vim git unzip socat apt-transport-https
Stap 1 – Installeer PHP en PHP uitbreidingen
Installeer PHP, en ook de nodige PHP uitbreidingen voor Shopware:
sudo apt install -y php7.0 php7.0-cli php7.0-fpm php7.0-common php7.0-mysql php7.0-curl php7.0-json php7.0-zip php7.0-gd php7.0-xml php7.0-mbstring php7.0-opcache
Om PHP gecompileerd in modules te tonen, kun je:
php -m
ctype
curl
exif
fileinfo
. . .
. . .
Controleer de PHP versie:
php --version
# PHP 7.0.30-0+deb9u1 (cli) (built: Jun 14 2018 13:50:25) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.2.15-0debian0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies
De PHP-FPM dienst wordt automatisch gestart en ingeschakeld bij het herstarten op een Debian 9 systeem, dus je hoeft hem niet handmatig te starten en in te schakelen. We kunnen overgaan tot de volgende stap, namelijk de installatie van de IonCube Loader.
Stap 2 – Installeer IonCube Loader(optioneel)
Download IonCube Loader:
cd /tmp && wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
Pak de loader uit:
tar xfz ioncube_loaders_lin_*.gz
Zoek de PHP extensies directory op het systeem door het onderstaande commando uit te voeren:
php -i | grep extension_dir
# extension_dir => /usr/lib/php/20170718 => /usr/lib/php/20170718
Kopieer de ionCube Loader naar de PHP extensions directory:
sudo cp /tmp/ioncube/ioncube_loader_lin_7.0.so /usr/lib/php/20170718/
Neem de loader op via PHP configuratie:
sudo vim /etc/php/7.0/fpm/php.ini
Voeg dan een regel toe in het bestand om ionCube loader op te nemen. Die kan overal in het onderstaande bestand staan [PHP] line:
zend_extension = /usr/lib/php/20170718/ioncube_loader_lin_7.0.so
Sla het bestand op en herstart PHP-FPM:
sudo systemctl restart php7.0-fpm.service
Stap 3 – Installeer MariaDB en maak een databank voor Shopware
Installeer MariaDB databaseserver:
sudo apt install -y mariadb-server
Controleer de versie van MariaDB:
mysql --version
# mysql Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using EditLine wrapper
Voer uit mysql_secure installation script to improve MariaDB security and set the password for MariaDB
root user:
sudo mysql_secure_installation
Beantwoord elk van de vragen:
Would you like to setup VALIDATE PASSWORD plugin? N
New password: your_secure_password
Re-enter new password: your_secure_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
Maak verbinding met MariaDB shell als de root gebruiker:
sudo mysql -u root -p
# Enter password
Maak een lege MariaDB databank en gebruiker voor Shopware en onthoud de inloggegevens:
mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
Sluit MariaDB af:
mysql> exit
Vervang dbname,
username and
password with your own names.
Stap 4 – Installeer Acme.sh client en verkrijg het Let’s Encrypt certificaat (optioneel)
Je website met HTTPS beveiligen is niet noodzakelijk, maar het is een goed gebruik om je site verkeer te beveiligen. Om een TLS certificaat van Let’s Encrypt te verkrijgen zullen we Acme.sh client gebruiken. Acme.sh is een zuivere Unix shell software voor het verkrijgen van TLS certificaten van Let’s Encrypt zonder afhankelijkheden.
Download en installeer acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~
Controleer de versie van acme.sh:
acme.sh --version
# v2.8.1
Verkrijg RSA en ECC/ECDSA certificaten voor je domein/hostnaam:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
Als je nep certificaten wilt om te testen kun je toevoegen --staging flag to the above commands.
Na het uitvoeren van de bovenstaande commando’s zijn je certificaten en sleutels binnen:
- Voor RSA:
/home/username/example.com directory.
- Voor ECC/ECDSA:
/home/username/example.com_ecc directory.
Om je uitgegeven certs op te sommen kun je uitvoeren:
acme.sh --list
Maak een directory om je certs in op te slaan. We zullen een directory gebruiken /etc/letsencrypt.
mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Installeer/kopieer certificaten naar /etc/letsencrypt directory.
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
Alle certificaten worden om de 60 dagen automatisch vernieuwd.
Verlaat na het verkrijgen van certs de root gebruiker en ga terug naar de gewone sudo gebruiker:
exit
Stap 5 - Installeer en configureer NGINX
Installeer de NGINX webserver:
sudo apt install -y nginx
Controleer de NGINX versie:
sudo nginx -v
# nginx version: nginx/1.10.3
Configureer NGINX voor Shopware. Voer uit. sudo vim /etc/nginx/sites-available/shopware.conf and add the following configuration:
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
server_name example.com;
root /var/www/shopware;
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.0-fpm.sock;
}
}
Activeer de nieuwe shopware.conf configuration by linking the file to the
sites-enabled directory:
sudo ln -s /etc/nginx/sites-available/shopware.conf /etc/nginx/sites-enabled
Controleer NGINX configuratie op syntaxfouten:
sudo nginx -t
Herlaad NGINX service:
sudo systemctl reload nginx.service
Stap 6 - Installeer Shopware
Maak een document root directory voor Shopware:
sudo mkdir -p /var/www/shopware
Verander het eigendom van de /var/www/shopware directory to {jour_user}
:
sudo chown -R {your_user}:{your_user} /var/www/shopware
Navigeer naar de document root directory:
cd /var/www/shopware
Download en unzip de nieuwste Shopware release via wget:
wget https://releases.shopware.com/install_5.5.8_d5bf50630eeaacc6679683e0ab0dcba89498be6d.zip?_ga=2.141661361.269357371.1556739808-1418008019.1556603459 -O shopware.zip
unzip shopware.zip
rm shopware.zip
OPMERKING: Werk de download URL bij als er een nieuwere uitgave is.
Verander het eigendom van de /var/www/shopware directory to
www-data.
sudo chown -R www-data:www-data /var/www/shopware
Verhoog memory_limit = 256M and
upload_max_filesize = 6M, and set
allow_url_fopen = On if not already set in
/etc/php/7.0/fpm/php.ini file.
sudo vim /etc/php/7.0/fpm/php.ini
Na het aanbrengen van wijzigingen in /etc/php/7.0/fpm/php.ini file, reload
php7.0-fpm.service:
sudo systemctl reload php7.0-fpm.service
Open je domein/IP in de web browser en volg de installatie wizard. De backend van Shopware bevindt zich op /backend example:
http://example.com/backend.
Stap 7 - Voltooi de installatie van Shopware
Begin met de taal te kiezen en klik op Volgende:
Zorg er vervolgens voor dat je aan alle Shopware eisen voldoet:
Ga akkoord met Shopware TOS en klik op Volgende:
Voer database credentials in en klik op Next:
Start de installatie om databasetabellen te maken:
Daarna zie je een bericht over succesvolle database import:
Kies een licentie en klik op Volgende:
Vul een paar basisinstellingen in om de installatie af te ronden en klik op Next:
De installatie is voltooid.
Om toegang te krijgen tot het admin gedeelte voeg je /backend toe aan je URL.
Je hebt Shopware met succes geïnstalleerd. Veel plezier met je nieuwe online winkel!