Zen Cart installeren op Debian 9

Zen Cart is een gratis open bron platform voor inhoudsbeheer en winkelkarretjes voor e-commerce. De software is geschreven in de programmeertaal PHP en wordt vaak op Linux geïnstalleerd onder Apache/Nginx webservers, PHP en MySQL/MariaDB database management systeem, ook bekend als LAMP of LEMP stack. Zen Cart e-commerce oplossing wordt gebruikt om gemakkelijk online winkels voor verschillende bedrijven te maken en diensten en koopwaar te adverteren en verkopen.

In deze gids laat ik je zien hoe je de nieuwste versie Zen Cart op Debian 9 installeert en configureert, om een gratis online winkel te maken.

Vereisten

  • Minimale installatie van een Debian 9 server op een bare-metal machine of op een virtual private server
  • Een statisch IP adres geconfigureerd voor een van je systeem netwerk interfaces kaarten
  • sudo root privileges voor een lokale of remote account of directe toegang tot de root account
  • Een domeinnaam, privaat of publiek, afhankelijk van je opstelling, met de juiste DNS records geconfigureerd voor webdiensten. Als je geen geldige of een geregistreerde domeinnaam hebt, kun je de installatie uitvoeren en de website benaderen via je server IP adres
  • Als je websiteregistratie, commentaar moderatie en andere functies wilt gebruiken, moet je een draaiende mailserver bij je hebben die goed geconfigureerd is en op afstand toegang heeft tot zijn IMAP en SMTP diensten.

Vereisten vooraf

Voor je begint met het installeren en instellen van Zen Cart vanaf broncode op je eigen server, moet je eerst zeker zijn dat je systeem voldoet aan alle software eisen voor het compileren en installeren van het programma. Update als eerste je systeem repositories en software pakketten door het volgende commando uit te voeren.

apt update
apt upgrade

Stel vervolgens de naam voor je systeem in door het volgende commando uit te voeren (vervang je hostname variabele dienovereenkomstig).

hostnamectl set-hostname zencart

Verifieer de hostname en het hosts bestand van de machine door de volgende commando’s uit te voeren.

hostnamectl 
cat /etc/hostname 
hostname –s
hostname –f

Voer bij de volgende stap het volgende commando uit om enkele noodzakelijke hulpprogramma’s te installeren die gebruikt zullen worden om je systeem verder vanaf de commandoregel te beheren.

apt install wget bash-completion zip unzip curl

Herstart tenslotte de Debian server om kernel updates toe te passen en de hostname veranderingen goed te laten verlopen.

systemctl reboot

Installeer Apache en PHP

Zen Cart is een web-gebaseerd CMS e-commerce platform dat grotendeels in de server-side programmeertaal PHP geschreven is. Om de PHP bestandsscripts van de toepassing te kunnen uitvoeren, moeten een webserver, zoals Apache HTTP server, en een PHP verwerkings-gateway in het systeem geïnstalleerd en operationeel zijn. Om Apache webserver en de PHP interpreter te installeren, samen met alle vereiste PHP modules die de toepassing nodig heeft om goed te kunnen draaien, geef je het volgende commando in je server console.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-curl php7.0-gd php7.0-mbstring php7.0-xml

Nadat Apache en PHP geïnstalleerd zijn, test je of de webserver draait en luistert naar netwerkverbindingen op poort 80 door met root privileges het volgende commando uit te voeren.

netstat –tlpn

Als het netwerkprogramma netstat niet standaard op je Debian systeem geïnstalleerd is, voer dan het volgende commando uit om het te installeren.

apt install net-tools

Door de uitvoer van het netstat commando te inspecteren kun je zien dat de Apache webserver luistert naar inkomende netwerkverbindingen op poort 80. Voor dezelfde taak kun je ook het ss commando gebruiken, dat in Debian 9 standaard automatisch geïnstalleerd is.

ss- tulpn

Configureer de firewall

Als je in je systeem een firewall hebt ingeschakeld, zoals de UFW firewall toepassing, moet je een nieuwe regel toevoegen om HTTP verkeer door de firewall te laten gaan door het volgende commando uit te voeren.

ufw allow WWW

of

ufw allow 80/tcp

Als je iptables raw regels gebruikt om de firewall regels op je Debian server te beheren, voeg dan de volgende regel toe om poort 80 inkomend verkeer op de firewall toe te staan, zodat bezoekers door de online winkel kunnen bladeren.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save 
systemctl iptables-persistent reload

Configureer Apache en SSL/TLS

Schakel vervolgens de volgende Apache modules in die nodig zijn om de e-commerce applicatie goed te laten werken, en pas ze toe met het volgende commando.

a2enmod rewrite expires env alias deflate mime
systemctl restart apache2

Test tenslotte of de standaard webpagina van de Apache webserver in de browsers van je cliënten getoond kan worden door via het HTTP protocol het IP adres van je Debian machine of je domeinnaam of server FQDN te bezoeken, zoals in de volgende afbeelding. Als je het IP adres van je machine niet kent, voer dan ifconfig of ‘ip a’ commando’s uit om het IP adres van je server te onthullen.

http://yourdomain.tld

Apache standaard pagina

Om het web admin paneel van Zen Cart en de frontend website te installeren en te benaderen via het HTTPS protocol dat het verkeer voor je klanten beveiligt, voer je het volgende commando uit om Apache webserver SSL module en SSL site configuratie bestand in te schakelen.

a2enmod ssl 
a2ensite default-ssl.conf

Open vervolgens Apache standaard SSL site configuratiebestand met een teksteditor en schakel URL herschrijfregels in door de volgende regels code toe te voegen na de DocumentRoot richtlijn, zoals in het volgende voorbeeld:

nano /etc/apache2/sites-enabled/default-ssl.conf

Uitreksel van het SSL site configuratiebestand:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Breng ook de volgende verandering aan in de regel VirtualHost zodat die eruit ziet als in het volgende fragment:

<VirtualHost *:443>

SSL Vhost

Sluit het SSL Apache bestand en open het bestand /etc/apache2/sites-enabled/000-default.conf om het te bewerken en voeg dezelfde URL herschrijfregels toe als voor het SSL configuratiebestand. Voeg de regels code in na het DocumentRoot statement zoals in het volgende voorbeeld.

 <Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Directory instellingen in vhost

Herstart tenslotte Apache daemon om alle tot nu toe ingestelde regels toe te passen en bezoek je domein via het HTTP protocol. Omdat je de automatisch zelfondertekende certificatenparen gebruikt die Apache bij de installatie heeft uitgegeven, zou een foutmelding in de browser moeten verschijnen.

systemctl restart apache2

https://yourdomain.tld

SSL pagina

Accepteer de waarschuwing over het onvertrouwde certificaat om verder te gaan en doorgestuurd te worden naar de Apache standaard webpagina.

Apache Standaard pagina

In het geval dat de UFW firewall toepassing inkomende netwerkverbindingen naar de HTTPS poort blokkeert, moet je een nieuwe regel toevoegen om HTTPS verkeer door de firewall te laten door het volgende commando te geven.

ufw allow 'WWW Full'

of

ufw allow 443/tcp

Als iptables de standaard firewall toepassing is die geïnstalleerd is om je Debian systeem op netwerkniveau te beschermen, voeg dan de volgende regel toe om poort 443 inkomend verkeer in de firewall toe te staan, zodat bezoekers je domeinnaam kunnen doorbladeren.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save 
systemctl iptables-persistent reload

In de volgende stap moeten we nog wat veranderingen aanbrengen in het standaard configuratiebestand van PHP om te verzekeren dat de volgende PHP variabelen ingeschakeld zijn en dat de tijdzone van PHP juist ingesteld is en overeenkomt met de geografische locatie van je systeem. Open het bestand /etc/php/7.0/apache2/php.ini om het te bewerken en verzeker je ervan dat de volgende regels als volgt ingesteld zijn. Maak ook eerst een backup van het PHP configuratiebestand.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

Zoek, bewerk en verander de volgende variabelen in hetphp.iniconfiguratiebestand:

file_uploads = On
memory_limit = 128 M
upload_max_file_size = 64M
post_max_size = 64M
date.timezone = Europe/London

Verhoog de post_max_size en upload_max_file_size variabelen als geschikt om grote bestandsbijlagen te ondersteunen en vervang de time.zone variabele dienovereenkomstig naar je fysieke tijd door de lijst van tijdzones te raadplegen die de PHP docs op de volgende link geven http://php.net/manual/en/timezones.php

Als je de laadsnelheid van je website pagina’s wilt verhogen via de OPCache plugin die voor PHP7 beschikbaar is, voeg dan de volgende OPCache instellingen toe onderaan het PHP interpreter configuratiebestand, zoals hieronder beschreven:

opcache.enable=1 
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Sluit het php.ini configuratiebestand en controleer aan het eind van het PHP configuratiebestand of de variabelen juist zijn toegevoegd door het onderstaande commando uit te voeren.

tail /etc/php/7.0/apache2/php.ini

Nadat je alle hierboven beschreven veranderingen hebt aangebracht, herstart je de apache daemon om de nieuwe veranderingen toe te passen door het volgende commando te geven.

systemctl restart apache2

Maak tenslotte een PHP info bestand door het volgende commando uit te voeren en controleer of de PHP tijdzone juist ingesteld is door het PHP info script bestand vanuit een browser te bezoeken op de volgende URL, zoals geïllustreerd in de onderstaande afbeelding. Scroll naar beneden naar datuminstelling om de configuratie van de php tijdzone te controleren.

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://yourdomain.tld/info.php

De e-commerce webapplicatie Zen Cart slaat verschillende configuraties, zoals gebruikers, sessies, contacten, producten, catalogi en andere, op in een RDBMS database. In deze gids configureren we de Zen Cart toepassing om de MariaDB database als backend te gebruiken. Geef het volgende commando om de MariaDB databank te installeren en de PHP module die nodig is om de mysql databank te benaderen.

apt install mariadb-server mariadb-client php7.0-mysql

Nadat je MariaDB geïnstalleerd hebt, controleer je of de daemon draait en naar verbindingen luistert op localhost, poort 3306, door het commando netstat uit te voeren.

netstat –tlpn | grep mysql

Log dan in op de MySQL console en beveilig de MariaDB root account door de volgende commando’s uit te voeren.

mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

Beveilig MariaDB bij de volgende stap door het script mysql_secure_installation uit te voeren dat bij de installatiepakketten uit de Debian stretch repositories geleverd wordt. Tijdens het uitvoeren stelt het script een reeks vragen die bedoeld zijn om de MariaDB database te beveiligen, zoals: het MySQL root wachtwoord veranderen, anonieme gebruikers verwijderen, remote root logins uitschakelen en de test database verwijderen. Voer het script uit met het volgende commando en verzeker je ervan dat je ja typt op alle gestelde vragen om MySQL daemon volledig te beveiligen. Gebruik het volgende uittreksel van het script als leidraad.

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we'll need the current

password for the root user.  If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on...

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

 

You already have a root password set, so you can safely answer 'n'.

 

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 ... Success!

 

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB 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? [Y/n] y

 ... Success!

 

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? [Y/n] y

 ... Success!

 

By default, MariaDB 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? [Y/n] y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

 

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

 

Reload privilege tables now? [Y/n] y

 ... Success!

 

Cleaning up...

 

All done!  If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

Om de beveiliging van MariaDB te testen, probeer je in te loggen op de database vanaf de console zonder root wachtwoord. De toegang tot de database zou geweigerd moeten worden als geen wachtwoord voor de root account wordt verstrekt, zoals te zien is in het volgende commando-uittreksel:

[email protected]:~# mysql -h localhost -u root
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Als het wachtwoord wel wordt verstrekt, zou het inloggen op de MySQL console moeten worden toegestaan, zoals te zien is in het commando-voorbeeld:

[email protected]:~# mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
 exit
Bye

Log vervolgens in op de MariaDB database console, maak een database voor de Zen Cart applicatie en een gebruiker met een wachtwoord die gebruikt zal worden om de applicatie-database te beheren, door de volgende commando’s uit te voeren. Vervang de databasenaam, de gebruiker en het wachtwoord dienovereenkomstig.

mysql –u root -p
create database zencart;
grant SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP on zencart.* to 'zencart_user'@'localhost' identified by 'password1';
flush privileges;
exit

Om alle tot nu toe aangebrachte veranderingen toe te passen, herstart je MySQL en Apache daemons en controleer je of de daemons draaien door de volgende commando’s uit te voeren.

systemctl restart mysql apache2
systemctl status mysql apache2

Installeer Zen Cart

Nadat aan alle systeemvereisten voor de installatie van je e-commerce webwinkel voldaan is, bezoek je de officiële download pagina van SourceForge Zen Cart ophttps://sourceforge.net/projects/zencart/files/ en download je het nieuwste zip pakket gecomprimeerde archief met behulp van het wget hulpprogramma, zoals in het volgende voorbeeld te zien is.

wget https://downloads.sourceforge.net/project/zencart/CURRENT%20-%20Zen%20Cart%201.5.x%20Series/zen-cart-v1.5.5f-12312017b.zip

Nadat de download van het zip archief voltooid is, pak je het Zen Cart zip gecomprimeerde archief direct uit en maak een lijst van de uitgepakte bestanden door de volgende commando’s te geven. Verwijder ook het standaard index.html bestand dat door Apache webserver geïnstalleerd is naar het webroot pad en verwijder ook het eerder aangemaakte info.php bestand.

rm /var/www/html/index.html 
rm /var/www/html/info.php
unzip zen-cart-v1.5.5f-12312017b.zip
ls

De installatiebestanden voor Zen Cart staan in je huidige werkdirectory in de uitgepakte zen-cart directory. Geef het ls commando om de zen-cart directory bestanden te bekijken. Kopieer de hele inhoud van de zen-cart-v1 directory naar je webserver document root pad door het volgende commando te geven.

ls -al zen-cart-v[tab]
cp -rf zen-cart-v1.5.5e-03082017/* /var/www/html/

Verander de directory in web server document root en geef het volgende commando om de configuratiebestanden aan te maken die de Zen Cart toepassing nodig heeft om winkelinstellingen te schrijven.

cd /var/www/html/
cp includes/dist-configure.php includes/configure.php
cp admin/includes/dist-configure.php admin/includes/configure.php 

Voer vervolgens de volgende commando’s uit om Apache runtime gebruiker met volledige schrijfrechten toe te kennen aan het web root pad. Gebruik het ls commando om de permissies op te sommen van de geïnstalleerde bestanden van de applicatie die zich in de /var/www/html/ directory bevinden.

chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/

ZenCart uitgepakt

Ga nu verder met het installatieproces van Zen Cart online shop door een browser te openen en via het HTTPS protocol te navigeren naar het IP adres of de domeinnaam of het FQDN van je server. Op het eerste installatiescherm presenteert Zen Cart installer je een overzicht van een lijst van problemen die je zien op de pagina . Omdat het programma nog niet geïnstalleerd is, klik je op Klik hier om het installatieproces te starten, zoals in de volgende afbeelding.

https://yourdomain.tld

ZenCart web installer

In het volgende installatiescherm voert het installatieprogramma een reeks controles uit op de PHP instellingen van de server en op de geïnstalleerde PHP uitbreiding, om na te gaan of aan alle systeemvereisten voor de installatie van Zen Cart e-commerce toepassing voldaan is. Het controleert ook of de Apache HTTP runtime gebruiker kan schrijven naar een reeks directories vanaf het webroot pad, zoals te zien is in de onderstaande afbeeldingen. Na alle controles van de systeeminspecties te hebben bekeken, klik je op Doorgaan om verder te gaan met het installatieproces.

SysteeminspectieIn het volgende scherm stel je je Zen Cart online winkel in. Vink eerst het vakje Licentieovereenkomst aan en controleer het Admin Server Domain URL adres om via het HTTPS toepassingsprotocol naar je domeinnaam door te verwijzen. Vink vervolgens Enable SSL for Storefront aan in Catalog (Storefront) Settings en controleer de domein URL adressen. Controleer in de laatste vijl of het fysieke pad van de winkel overeenkomt met het root pad van het document van je webserver en klik op Doorgaan om verder te gaan met het installatieproces.

Systeeminstelling

In het volgende installatiescherm voeg je het adres van de MySQL databank toe, de naam en de referenties die je eerder voor de Zen Cart databank maakte. Laat Load Demo Data uitgevinkt en kies de tekenset van je database op UTF8 en het voorvoegsel op zen_. Kies de SQL Cache Methode op Bestand en klik op de Doorgaan knop om naar de volgende installatiestap te gaan.

Database opzet

Voeg nu een Admin Superuser account toe voor je Zen Cart online winkel en een email adres voor het admin account. Noteer het wachtwoord voor de beheerderswinkel en de naam van de beheerdersmap en klik op Doorgaan om het installatieproces te beginnen.

Admin installatie

Als de installatie voltooid is, toont het installatieprogramma twee knoppen voor toegang tot het Zen Cart Backed Administratie paneel, dat gebruikt wordt om je online winkel te beheren, en de Storefront winkel link, die aan je klanten getoond zal worden.

Setup voltooid

Om je webwinkel te bezoeken, klik je eerst op Ga naar je Storefront knop en de voorkant van je e-commerce toepassing wordt in je browser getoond, zoals te zien is in de onderstaande schermafbeelding. Je kunt de voorkant van je winkel ook bezoeken door via het HTTPS protocol naar het IP adres of de domeinnaam van je server te navigeren.

https://www.yourdomain.tld

ZenCart geïnstalleerd

Ga eerst terug naar de server console en voer het volgende commando uit om de Zen Cart installatiedirectory te verwijderen, voordat je inlogt op het achterliggende beheerpaneel van je winkel.

rm -rf /var/www/html/zc_install/

Om je Zen Cart online winkel te beheren, klik je op de Admin Backend link die je naar de winkel backend leidt. Gebruik de tijdens het installatieproces geconfigureerde admin inloggegevens om in te loggen op het Zen Cart backend paneel, zoals te zien is in de onderstaande schermafbeelding.

Je kunt het Zen Cart admin webpaneel ook bezoeken door via het HTTPS protocol naar je server IP adres of domeinnaam te navigeren naar het URL adres van de admin directory, een willekeurige string die tijdens het installatieproces geconfigureerd werd.

https://yourdomain.tld/random_string/login.php

ZenCart loginNadat je ingelogd bent op het door Zen Cart ondersteunde beheerpaneel, voltooi je de eerste setup wizard met je eigen winkel gegevens en git op de Update knop om veranderingen te schrijven, zoals in de volgende schermafbeelding.

ZenCart Eerste installatie wizard

Om de Zen Cart toepassing te beveiligen, ga je terug naar de server console en voer je de volgende commando’s uit om de rechten voor het bestand includes/configure.php en voor het bestand configure.php uit de admin directory te veranderen zodat het eigendom wordt van de root account.

chown root:root /var/www/html/includes/configure.php 
chown root:root /var/www/html/brOil-QUl-cHain/includes/configure.php

Om bezoekers te dwingen de frontend website van Zen Cart te bezoeken en de backend interface veilig te benaderen via het HTTPS protocol dat het verkeer tussen de server en de client browsers versleutelt, ga je terug naar de terminal van je server en maak je een nieuw .htaccess bestand aan door het volgende commando te geven.

nano /var/www/html/.htaccess

Verander de PHP instellingen zodat ze overeenkomen met je eigen server bronnen en voeg de HTTPS omleidingsregels toe zoals in het onderstaande .htaccess uittreksel van het bestand:

# Modify PHP settings
php_flag register_globals off
php_flag magic_quotes_gpc Off
php_value max_execution_time 200
php_value max_input_time 200
php_value upload_max_filesize 999M
php_value post_max_size 999M

# Redirect to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>

Dat is alles! Je hebt met succes de e-commerce toepassing Zen Cart geïnstalleerd en ingesteld in Debian 9.2. Maar omdat de Apache HTTP server een onvertrouwd Zelf-ondertekend certificaat gebruikt om het verkeer tussen de server en de browsers van de bezoekers te versleutelen, wordt er steeds een waarschuwing gegenereerd en in hun browsers getoond. Deze waarschuwing is slecht voor je online winkelbedrijf. In dit geval moet je een certificaat kopen dat door een vertrouwde Certificaat Autoriteit is uitgegeven of een gratis certificaat-paar van Let’s Encrypt CA krijgen.

Voor andere aangepaste configuraties voor de Zen Cart toepassing kun je de documentatie pagina bezoeken op het volgende adres: https://www.zen-cart.com/wiki/index.php/Main_Page