OpenCart installeren met Nginx en Let’s Encrypt op Debian 10

Opencart is een populaire open-source shopping cart oplossing waarmee je je eigen volledig functionele e-commerce website kunt hosten. Opencart biedt een eenvoudige en gebruiksvriendelijke interface om je producten online te verkopen, zoals Amazon en Flipcart. Het is speciaal ontworpen voor kleine en middelgrote bedrijven en heeft alle standaard e-commerce functies die nodig zijn voor online winkels. Het biedt een rijke reeks functies, waaronder meerdere valuta’s, taal, onbeperkt aantal categorieën, producten, productbeoordelingen, multi-winkel en nog veel meer.

In deze handleiding laten we je zien hoe je OpenCart met Nginx op Debian 10 installeert en het met Let’s Encrypt SSL beveiligt.

Vereisten

  • Een server met Debian 10.
  • Een root wachtwoord is op je server ingesteld.

Aan de slag

Werk eerst je systeem bij naar de nieuwste versie met het volgende commando:

apt-get update -y
apt-get upgrade -y

Zodra je server bijgewerkt is, herstart je hem om de veranderingen toe te passen.

Installeer de LEMP server

Installeer eerst de Nginx webserver, MariaDB databaseserver, PHP en andere vereiste PHP uitbreidingen door het volgende commando uit te voeren:

apt-get install nginx mariadb-server php-common php-cli php-fpm php-opcache php-gd php-mysql php-curl php-intl php-xsl php-mbstring php-zip php-bcmath php-soap unzip git -y

Als alle pakketten geïnstalleerd zijn, bewerk dan het php.ini bestand en breng enkele veranderingen aan:

nano /etc/php/7.3/fpm/php.ini

Verander de volgende regels:

memory_limit = 256M
upload_max_filesize = 100M
opcache.save_comments=1
max_execution_time = 300
date.timezone = Asia/Kolkata

Sla het bestand op en sluit het als je klaar bent.

Configureer de MariaDB Database

Vervolgens moet je een MariaDB root wachtwoord instellen, want dat is in de Debian 10 niet ingesteld.

Log daarvoor in op de MariaDB shell met het volgende commando:

mysql

Eenmaal ingelogd stel je een MariaDB root wachtwoord in met het volgende commando:

MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("yournewrootpassword");

Stel vervolgens de MariaDB authenticatieplugin in op mysql_native_password met het volgende commando:

MariaDB [(none)]> SET GLOBAL innodb_fast_shutdown = 0;
MariaDB [(none)]> UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';

Spoel vervolgens de privileges door en verlaat de MariaDB shell met het volgende commando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Meld je vervolgens aan bij MariaDB met root gebruiker:

mysql -u root -p

Geef je root wachtwoord en maak een database en gebruiker voor OpenCart aan met het volgende commando:

MariaDB [(none)]> CREATE DATABASE opencartdb;
MariaDB [(none)]> GRANT ALL ON opencartdb.* TO 'opencart'@'localhost' IDENTIFIED BY 'password';

Spoel vervolgens de privileges en verlaat de MariaDB shell met het volgende commando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Als de MariaDB geconfigureerd is, kun je verder gaan met de volgende stap.

OpenCart downloaden

Je kunt de nieuwste versie van OpenCart downloaden van de Git repository met het volgende commando:

wget https://github.com/opencart/opencart/releases/download/3.0.3.2/opencart-3.0.3.2.zip

Na het downloaden van OpenCart pak je het gedownloade bestand uit met het volgende commando:

unzip opencart-3.0.3.2.zip

Verplaats vervolgens de upload directory naar de Nginx web root directory met het volgende commando:

mv upload /var/www/html/opencart

Verander vervolgens de directory in opencart en hernoem het bestand config-dist.php:

cd /var/www/html/opencart/
mv config-dist.php config.php
mv admin/config-dist.php admin/config.php

Geef vervolgens de juiste permissies aan de opencart directory met het volgende commando:

chown -R www-data:www-data /var/www/html/opencart/
chmod -R 775 /var/www/html/opencart/

Als je klaar bent, kun je verder gaan met de volgende stap.

Configureer Nginx voor OpenCart

Vervolgens moet je een Nginx virtual host configuratiebestand maken om OpenCart te serveren. Je kunt het maken met het volgende commando:

nano /etc/nginx/sites-available/opencart.conf

Voeg de volgende inhoud toe:

server {
    listen 80;
    server_name opencart.linuxbuz.com;
    root /var/www/html/opencart;
    index index.php;
    access_log /var/log/nginx/opencart_access.log;
    error_log /var/log/nginx/opencart_error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

Bewaar en sluit het bestand en controleer Nginx dan op een syntaxfout met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten krijgen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Schakel vervolgens het Nginx virtuele host bestand in met het volgende commando:

ln -s /etc/nginx/sites-available/opencart.conf /etc/nginx/sites-enabled/

Herstart vervolgens de Nginx en PHP-FPM dienst om de veranderingen toe te passen:

systemctl restart nginx
systemctl restart php7.3-fpm

Als je klaar bent, kun je verder gaan met de volgende stap.

Beveilig OpenCart met Let’s Encrypt SSL

Vervolgens moet je een Certbot client installeren om Let’s Encrypt voor je website te installeren en in te stellen.

Certbot is standaard niet beschikbaar in de Debian 10 standaard repository. Je zult dus een Certbot repository aan je systeem moeten toevoegen.

Je kunt het toevoegen met het volgende commando:

echo "deb http://ftp.debian.org/debian buster-backports main" >> /etc/apt/sources.list

Werk vervolgens de repository bij en installeer de Certbot client voor Nginx met het volgende commando:

apt-get update -y
apt-get install python3-certbot-nginx -t buster-backports

Eenmaal geïnstalleerd, voer je het volgende commando uit om Let’s Encrypt SSL te downloaden en Nginx te configureren om deze SSL te gebruiken:

certbot --nginx -d opencart.linuxbuz.com

Je wordt gevraagd de servicevoorwaarden te accepteren en je geldige e-mail adres op te geven, zoals hieronder:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for opencart.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/nginx/sites-available/opencart-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/nginx/sites-available/opencart-le-ssl.conf
Enabling available site: /etc/nginx/sites-available/opencart-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

Vervolgens moet je kiezen of je HTTP verkeer al dan niet naar HTTPS wilt omleiden, zoals hieronder:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Typ 2 en druk op Enter om verder te gaan. Als de installatie voltooid is, zou je de volgende uitvoer moeten krijgen:

Redirecting vhost in /etc/nginx/sites-enabled/opencart.conf to ssl vhost in /etc/nginx/sites-available/opencart-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://opencart.linuxbuz.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=opencart.linuxbuz.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/opencart.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/opencart.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-04-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Op dit moment is OpenCart beveiligd met Let’s Encrypt SSL.

Toegang tot de OpenCart Web Interface

Open nu je web browser en typ de URL https://opencart.linuxbuz.com. Je wordt doorverwezen naar de OpenCart Licentie Overeenkomst pagina:

OpenCart Licentie / GPL

Klik op de Ga door knop om de Licentie Overeenkomst te accepteren. Je zou de volgende pagina moeten zien:

Controle vóór installatie

Verdere controles

Controleer of alle vereiste PHP extensies geïnstalleerd zijn en klik dan op de CONTINUE knop. Je zou de volgende pagina moeten zien:

Database configuratie

Geef je database credentials, admin gebruikersnaam, wachtwoord op en klik op de CONTINUE knop. Als de installatie voltooid is, zou je de volgende pagina moeten zien:

OpenCart installatie voltooid

Open nu je terminal en verwijder de installatiemap met het volgende commando:

rm -rf /var/www/html/opencart/install/

Klik nu op de knop GO TO YOUR ONLINE SHOP. Je zou je OpenCart winkel op de volgende pagina moeten zien:

OpenCart winkel voorpagina

Klik vervolgens op de knop LOGIN TO YOUR ADMINISTRATION. Je zou de OpenCart login pagina moeten zien:

OpenCart admin login

Geef je beheerders gebruikersnaam en wachtwoord op en klik op de Inloggen knop. Je zou je OpenCart administratie paneel op de volgende pagina moeten zien:

OpenCart dashboard

Conclusie

Gefeliciteerd! Je hebt OpenCart met succes geïnstalleerd en beveiligd op Debian 10. Je kunt nu je eigen online shopping cart hosten met OpenCart. Voel je vrij me te vragen als je vragen hebt.