installeer je het X-cart e-commerce platform op Debian 9

Deze handleiding leert je hoe je de nieuwste versie van het e-commerce platform X-Cart in Debian 9.2 release installeert en configureert, om een gratis online winkel te maken.

X-Cart is een krachtig en complex commercieel open bron platform voor e-commerce winkelwagens, waarvan de meeste onderdelen in de programmeertaal PHP zijn geschreven en dat vaak als een Software as a Service oplossing (SaaS) wordt aangeboden. Het X-cart winkelplatform kan ook in Linux geïnstalleerd worden onder Apache/Nginx webservers, PHP en MySQL/MariaDB database management systeem, ook bekend als LAMP of LEMP stack. X-Cart CMS online e-commerce platform wordt veel gebruikt om on-line winkels voor verschillende bedrijven te maken en diensten en koopwaar te adverteren en verkopen.

Vereisten

  • Installatie van Debian 9 server op een bare-metal machine of op een virtual private server
  • sudo root privileges voor een lokale of remote account of directe toegang tot de root account
  • Een statisch IP adres geconfigureerd voor een van de netwerkinterface kaarten van je systeem
  • 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 goed draaiende mailserver bij je hebben die op afstand toegang heeft tot zijn IMAP en SMTP diensten.

Vereisten vooraf

Voordat je begint met de installatie en configuratie van X-Cart vanaf broncode in je eigen server, moet je eerst zeker zijn dat het systeem voldoet aan alle software eisen voor het compileren en installeren van de toepassing. Bij de eerste stap, update je systeem repositories en software pakketten door het onderstaande commando te geven.

apt update
apt upgrade

Nadat het systeem volledig is bijgewerkt, stel je de naam voor je systeem in door het volgende commando uit te voeren. Vervang je hostname variabele dienovereenkomstig.

hostnamectl set-hostname xcart

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

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

systemctl reboot

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

X-Cart is een web-gebaseerd CMS e-commerce platform dat hoofdzakelijk in de server-kant 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 gemaakt worden. 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-mbstring php7.0-curl php7.0-gd php7.0-xml php7.0-opcache

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

In het geval dat 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 wordt.

ss- tulpn

Als je een firewall op je systeem 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 te geven.

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

Schakel vervolgens de volgende Apache modules in en pas ze toe, die nodig zijn om de e-commerce applicatie goed te laten draaien, door het onderstaande commando uit te voeren.

a2enmod rewrite
systemctl restart apache2

Test tenslotte of de standaard webpagina van de Apache webserver in de browsers van je klanten getoond kan worden door het IP adres van je Debian machine of je domeinnaam of server FQDN via het HTTP protocol te bezoeken, zoals in de onderstaande 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://your_domain.tld

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

a2enmod ssl
a2ensite default-ssl.conf

Open vervolgens het 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 onderstaande voorbeeld:

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

Uittreksel 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 onderstaande fragment:

<VirtualHost *:443>

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 de DocumentRoot verklaring zoals in het voorbeeld hieronder.

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

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 door Apache bij de installatie uitgegeven Zelfondertekende certificatenparen gebruikt, zou een foutmelding in de browser moeten verschijnen.

systemctl restart apache2

https://yourdomain.tld

Accepteer de waarschuwing om verder te gaan en doorgestuurd te worden naar de standaard Apache webpagina, zoals in de afbeelding hieronder.

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 gaan 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

Bij 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 het php.iniconfiguratiebestand:

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

Verhoog de memory_limit variabele 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 http://php.net/manual/en/timezones.php geven.

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 apache daemon om de nieuwe veranderingen toe te passen door het volgende commando te geven.

systemctl restart apache2

Maak tenslotte een PHP info bestand aan 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://domain.tld/info.php

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

apt install mariadb-server 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 netstat commando uit te voeren.

netstat –tlpn | grep mysql

Log dan in op de MySQL console en beveilig de root account van MariaDB 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 draaien zal het script een reeks vragen stellen 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 onderstaande commando en verzeker je ervan dat je ja typt op alle gestelde vragen om MySQL daemon volledig te beveiligen. Gebruik de uitvoer van het volgende script behalve 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 gegeven. Als het wachtwoord wel wordt verstrekt, zou het inloggen op de MySQL console moeten worden toegestaan, zoals te zien is in de volgende schermafbeelding.

mysql -h localhost -u root
mysql -h localhost -u root –p

Vervolgens, ingelogd in de MariaDB database console, maak je een database voor de X-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 my_xcart;
grant all privileges on my_xcart.* to 'xcart_user' identified by 'x_password';
flush privileges;   
exit

Om alle tot nu toe aangebrachte wijzigingen toe te passen, herstart je de 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 X-Cart

Nadat aan alle systeemvereisten voor de installatie van je e-commerce webwinkel is voldaan, bezoek je de X-Cart download pagina op https://www.x-cart.com/download.html vanaf een desktop machine en download je het nieuwste zip pakket gecomprimeerde archief door het vereiste webformulier van hun website in te vullen.

Nadat het downloaden van het archief voltooid is, gebruik je een bestandsoverdrachtprotocol, zoals scp om het gedownloade zip-bestand van de desktop machine naar je Debian server te kopiëren. Breng het zip-bestand over naar de /tmp directory van je server. Maak via SSH een lijst van de /tmp directory van de externe server om te bevestigen of de upload overdracht van het zip bestand met succes voltooid is.

scp x-cart-5.3.3.4-gb.zip [email protected]_server_IP_or_domain:/tmp
ssh  [email protected]_server_IP_or_domain 'ls /tmp'

Nadat de download van het zip archief voltooid is, pak je het X-Cart zip gecomprimeerde archief uit naar de /tmp directory en maak een lijst van de uitgepakte bestanden door de onderstaande commando’s uit te voeren. Verwijder ook het standaard index.html bestand dat door Apache webserver geïnstalleerd is naar het webroot pad en verwijder ook het eerder gemaakte info.php bestand.

rm /var/www/html/index.html 
rm /var/www/html/info.php
cd /tmp
unzip x-cart-5.3.3.4-gb.zip
ls

De installatiebestanden voor X-Cart staan in je huidige werkdirectory (/tmp directory in dit geval) in de xcart directory. Geef het ls commando om de bestanden in de xcart map op te sommen. Kopieer de hele inhoud van de xcart directory naar het root pad van je webserver document door het volgende commando uit te voeren. Zorg er ook voor dat je het verborgen bestand .htaccess naar het webroot pad kopieert.

cd /tmp
ls -al xcart/
cp -rf xcart/* /var/www/html/
cp xcart/.htaccess /var/www/html/

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

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

Ga nu verder met de installatie van X-Cart online shop door een browser te openen en navigeer via het HTTPS protocol naar het IP adres of de domeinnaam of FQDN van je server. Op het eerste installatiescherm zal X-Cart installer een bericht tonen dat X-cart niet geïnstalleerd is, zoals in de onderstaande afbeelding. Klik op de Klik hier link om het installatieproces te starten.

https://yourdomain.tld

In het volgende installatiescherm van X-Cart toont de wizard je de licentieovereenkomst, zoals in de onderstaande afbeelding. Vink I accept the License Agreement and the Privacy policy aan en klik op Next om de licentie te accepteren en verder te gaan met het installatieproces.

Maak vervolgens een beheerdersaccount aan voor de backend van je online winkel, op basis van je e-mail adres, en kies een wachtwoord voor dit account, zoals in de onderstaande schermafbeelding. Druk op de Next knop om verder te gaan met het installatieproces.

In het volgende installatiescherm voeg je het adres en de naam van de MySQL database toe, en de eerder voor de X-Cart database aangemaakte referenties. Vink Installeer een voorbeeld catalogus aan en klik op Geavanceerde MySQL instellingen en Geavanceerde server instellingen

Laat bij geavanceerde MySQL instellingen de poortwaarde standaard op 3306 staan en het voorvoegsel op xc_. Scroll naar beneden naar Geavanceerde server instellingen en voeg je server hostname, of je domeinnaam, toe in Webserver naam en in Beveiligde webserver naam. Kies de standaard tijdzone van je winkel en klik op Next om dit installatiestadium te voltooien, zoals te zien is in de afbeelding hieronder.

Wacht een paar minuten tot het installatieprogramma de mappen heeft opgezet en het databaseschema met alle vereiste informatie heeft gevuld en tot het hele installatieproces voltooid is, zoals te zien is in onderstaande schermafbeelding.

Nadat de installatie voltooid is, toont het installatieprogramma twee links die gebruikt kunnen worden om toegang te krijgen tot het X-Cart Backend Administratie paneel, dat gebruikt zal worden om je online winkel te beheren, en het X-cart Online Shop frontend (Klantenzone) van je winkel, dat aan je klanten getoond zal worden.

Om de voorkant van je online winkel te bezoeken, klik je op de Klantzone link en de voorkant van je e-commerce toepassing wordt in je browser getoond, zoals in de onderstaande schermafbeelding. Je kunt de voorkant van de winkel ook bezoeken door via het HTTPS protocol naar het IP adres of de domeinnaam van je server te navigeren.

https://yourdomain.tld

Voordat je inlogt op je winkel backend admin paneel, ga je eerst terug naar de server console en voer je de volgende commando’s uit om het X-cart winkelsysteem configuratiebestand te beveiligen.

chmod -R 755 /var/www/html/
chmod -R 755 /var/www/html/etc/
chmod -R 644 /var/www/html/config.php
chown -R root:root /var/www/html/etc/
chown root:root /var/www/html/config.php

Om je X-Cart online winkel te beheren, klik je op de Beheerders zone (Backoffice) link om in de winkel admin backend te komen. Gebruik de inloggegevens die je tijdens het installatieproces hebt ingesteld om in te loggen in het X-Cart backend paneel, zoals in de schermafbeelding hieronder.

Je kunt het X-Cart admin webpaneel ook bezoeken door naar het IP adres van je server of domeinnaam te navigeren via het HTTPS protocol naar de URL /admin.php.

https://yourdomain.tld/admin.php

Nadat je ingelogd bent op het X-Cart backend admin paneel, verschijnt een melding op je scherm die je informeert dat de proefversie voor bedrijven over 30 dagen vervalt. Ook moet je naar het menu Update gaan en alle updates installeren die voor de huidige editie van X-cart zijn uitgebracht, zoals te zien is in de onderstaande schermafdruk.

Tenslotte, om bezoekers te dwingen de X-Cart frontend website te bezoeken en de backend interface veilig te benaderen via het HTTPS protocol om het verkeer tussen de server en de client browsers te versleutelen, ga je terug naar de terminal van je server en bewerk je het .htaccess bestand dat in het pad van je website staat, door het onderstaande commando uit te voeren.

nano /var/www/html/.htaccess

Bewerk dan het .htaccess bestand, en wijzig onderaan het bestand de eigen PHP instellingen met de onderstaande configuraties. Je kunt de PHP instellingen aanpassen aan de bronnen van je eigen server.

.htaccessbestandsuittreksel:

# Wijzig de PHP instellingen

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 500M
php_value post_max_size 500M

Tenslotte ad de onderstaande regels om domeinverkeer om te leiden naar HTTPS en install en systeem directories te beschermen tegen toegang via web verzoeken.

# 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 het e-commerce programma X-Cart geïnstalleerd en ingesteld in Debian 9.2. Maar omdat de Apache HTTP server zelfondertekende certificaten 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 met betrekking tot de X-Cart toepassing, bezoek de documentatie pagina op het volgende adres: https://kb.x-cart.com/en/index.html