Shopware installeren met NGINX en Let’s Encrypt op FreeBSD 12

Shopware is de volgende generatie van open source e-commerce software. Gebaseerd op geavanceerde technologieën zoals Symfony 3, Doctrine2en Zend Frameworkis Shopware het perfecte platform voor je volgende e-commerce project.Deze handleiding leidt je door de installatie van Shopware Community Edition (CE) op een FreeBSD 12 systeem door NGINX als webserver te gebruiken.

Vereisten

Zorg ervoor dat je systeem aan de volgendeminimum eisen voldoet:

  • Linux-gebaseerd besturingssysteem met NGINX of Apache 2.x (metmod_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.
  • Minstens 4 GB beschikbare ruimte op de harde schijf.
  • IonCube Loader versie 5.0.0 of hoger(optioneel).

OPMERKING: Shopware 5 is momenteel tot PHP 7.2.x compatibel.

Vereisten

  • Een besturingssysteem met FreeBSD 12.
  • Een niet-root gebruiker met sudo privileges.

Ik zal in deze handleiding de domeinnaam example.com gebruiken. Vervang het woord example.com door je eigen domeinnaam overal waar het voorkomt in de onderstaande commando’s en configuratiebestanden (vooral in het Nginx configuratiebestand en de Let’s encrypt commando’s).

Eerste stappen

Controleer je FreeBSD versie:

uname -ro
# FreeBSD 12.0-RELEASE

Stel de tijdzone in:

tzsetup

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 hebt voor de standaard softwarepakketten van je besturingssysteem:

freebsd-update fetch install
pkg update && pkg upgrade -y

Installeer enkele essentiële pakketten die nodig zijn voor het basisbeheer van het FreeBSD 12.0 besturingssysteem:

pkg install -y sudo vim unzip wget bash socat

Stap 1 – Installeer PHP en PHP uitbreidingen

Installeer PHP, en ook de nodige PHP uitbreidingen voor Shopware:

sudo pkg install -y php72 php72-ctype php72-curl php72-dom php72-hash php72-iconv php72-gd php72-json php72-mbstring php72-openssl php72-session php72-simplexml php72-xml php72-zip php72-zlib php72-pdo php72-pdo_mysql php72-filter php72-ftp php72-tokenizer php72-calendar php72-pecl-APCu php72-opcache

Om PHP gecompileerd in modules te tonen, kun je:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Controleer de PHP versie:

php --version

# PHP 7.2.16 (cli) (built: Apr 30 2019 08:37:17) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.3.5, Copyright (c) 1999-2018, by Zend Technologies

Start en schakel de PHP-FPM dienst in:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

We kunnen overgaan tot de volgende stap, namelijk de installatie van de IonCube Loader.

Stap 2 – Installeer IonCube Loader (optioneel)

Deze stap is optioneel omdat Shopware nu zonder IonCube werkt, maar er kunnen nog steeds extensies of thema’s zijn die IonCube gebruiken, dus het kan geen kwaad het toch te installeren. Download IonCube Loader:

cd /tmp && wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_fre_11_x86-64.tar.gz

Pak de loader uit:

tar xfz ioncube_loaders_fre_*.tar.gz

Zoek de PHP extensies directory op het systeem door het onderstaande commando uit te voeren:

php -i | grep extension_dir
# extension_dir => /usr/local/lib/php/20170718 => /usr/local/lib/php/20170718

Kopieer de ionCube Loader naar de PHP extensions directory:

sudo cp /tmp/ioncube/ioncube_loader_fre_7.2.so /usr/local/lib/php/20170718

Neem de loader op via PHP configuratie:

sudo vim /usr/local/etc/php.ini

Voeg dan een regel toe in het bestand om ionCube loader op te nemen. Het kan overal in het bestand staan onder de regel [PHP]:

zend_extension = /usr/local/lib/php/20170718/ioncube_loader_fre_7.2.so

Sla het bestand op en herstart PHP-FPM:

sudo service php-fpm restart

Stap 3 – Installeer MariaDB en maak een databank voor Shopware

Installeer de databaseserver MariaDB:

sudo pkg install -y mariadb102-client mariadb102-server

Controleer deMariaDB versie:

mysql --version
# mysql  Ver 15.1 Distrib 10.2.23-MariaDB, for Linux (x86_64) using readline 5.1

Start de MariaDB dienst en schakel die in:

sudo sysrc mysql_enable="yes"
sudo service mysql-server start

Voermysql_secure installation script uit omMariaDB beter te beveiligen en stel het wachtwoord in voorMariaDB root gebruiker:

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 metMariaDB shell als de root gebruiker:

sudo mysql -u root -p
# Enter password

Maak een legeMariaDB database en gebruiker voor Shopware en onthoud de credentials:

mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

SluitMariaDB af:

mysql> exit

Vervang dbname, username en password door je eigen namen.

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 pkg install -y acme.sh

Controleer de versie van acme.sh:

acme.sh --version
# v2.8.2

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 de --stagingvlag aan de bovenstaande commando's toevoegen.

Na het uitvoeren van de bovenstaande commando's staan jecertificaten ensleutels in:

  • Voor RSA: /home/username/example.com map.
  • Voor ECC/ECDSA: /home/username/example.com_ecc map.

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/letsencryptmap.

# 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 service nginx reload"

Alle certificaten worden om de 60 dagen automatisch vernieuwd.

Verlaat na het verkrijgen van de certs de root gebruiker en ga terug naar de gewone sudo gebruiker:

exit

Stap 5 - Installeer en configureer NGINX

Installeer de NGINX webserver:

sudo pkg install -y nginx

Controleer de NGINX versie:

nginx -v
# nginx version: nginx/1.14.2

Start en schakel NGINX service in:

sudo sysrc nginx_enable=yes
sudo service nginx start

Configureer Nginx voor Shopware door te draaien:

sudo vim /usr/local/etc/nginx/shopware.conf

En vul het bestand met de volgende configuratie:

server {
    listen 80;
    listen [::]:80;
    
    server_name example.com;
    root /usr/local/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 fastcgi.conf;
        fastcgi_pass 127.0.0.1:9000;
    }
}

Voer sudo vim /usr/local/etc/nginx/nginx.conf uit en voeg de onderstaande regel toe aan http {} blok om Shopware config op te nemen.

include shopware.conf;

Controleer Nginx configuratie op syntaxfouten:

sudo nginx -t

Herlaad Nginx service:

sudo service nginx reload

Stap 6 - Installeer Shopware

Maak een document root directory voor Shopware:

sudo mkdir -p /usr/local/www/shopware

Navigeer naar de document root directory:

cd /usr/local/www/shopware

Download Shopwareen pak het uit:

sudo wget https://releases.shopware.com/install_5.5.8_d5bf50630eeaacc6679683e0ab0dcba89498be6d.zip?_ga=2.141661361.269357371.1556739808-1418008019.1556603459 -O shopware.zip
sudo unzip shopware.zip
sudo rm shopware.zip

OPMERKING:Werk de download URL bij als er een nieuwere versie is.

Zorg voor het juiste eigendom:

sudo chown -R www:www /usr/local/www/shopware

Verhoog memory_limit = 256M en upload_max_filesize = 6M, en stel allow_url_fopen = On in als die nog niet ingesteld is in het /usr/local/etc/php.ini bestand:

sudo vim /usr/local/etc/php.ini

Nadat je veranderingen in het /etc/php/7.2/fpm/php.ini bestand hebt aangebracht, herlaad je php-fpm.service:

sudo service php-fpm reload

Open je domein/IP in de web browser en volg de installatie wizard. De backend van Shopware bevindt zich op /backend voorbeeld: http://example.com/backend.

Stap 7 - Voltooi de installatie van Shopware

Begin met de taal te kiezen en klik op Volgende:

Shopware Installatie Wizard

Zorg er vervolgens voor dat je aan alle Shopware eisen voldoet:

Shopware Systeemvereisten

Ga akkoord met Shopware TOS en klik op Volgende:

Servicevoorwaarden van ShopWare

Voer database credentials in en klik op Next:

Configureer de databank

Start de installatie om databasetabellen te maken:

Maak databasetabellen

Daarna zie je een bericht over succesvolle database import:

Installatie geslaagd

Kies een licentie en klik op Volgende:

Licenties

Vul een paar basisinstellingen in om de installatie af te ronden en klik op Next:

Basis inrichting van de winkel

De installatie is voltooid.

Installatie voltooid

Om het admin gedeelte te openen voeg je /backend toe aan je URL.

Shopware login

Je hebt Shopware met succes geïnstalleerd. Veel plezier met je nieuwe online winkel!