OpenBSD comme solution de commerce électronique avec PrestaShop et Apache

introduction

Ce tutoriel présente OpenBSD en tant que solution de commerce électronique utilisant PrestaShop et Apache.

Apache est requis car PrestaShop a des exigences de réécriture d'URL complexes qui ne sont pas prises en charge par le serveur Web intégré d'OpenBSD, httpd. Ce didacticiel utilise des certificats auto-signés. Veuillez utiliser un certificat vérifié pour la production.

Tâches de préparation

Créez temporairement un utilisateur régulier autorisé à utiliser doassans mot de passe. Cet accès sera supprimé après la configuration.

user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf

Ajoutez le référentiel de packages OpenBSD.

echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl

Transférez des e-mails quotidiens sur l'état et la sécurité à votre adresse.

echo '[email protected]' > /root/.forward

Définissez le nom d'hôte du serveur.

echo 'www.example.com' > /etc/myname
hostname www.example.com

Ajoutez le nom de domaine complet et l'adresse IP de votre serveur à /etc/hosts.
Remplacez 192.0.2.1par votre adresse IP Vultr.

127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com

Ajoutez les packages requis pour PrestaShop et Apache. Choisissez les dernières versions lorsque vous y êtes invité.

doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip

Création d'un certificat SSL auto-signé pour les tests. Définissez Common Name sur le nom de domaine complet de votre serveur, par exemple www.example.com.

openssl req -x509 -new -nodes -newkey rsa:4096 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/example.com.crt -days 3650 -sha256
chmod 0600 /etc/ssl/private/example.com.key

Télécharger et extraire PrestaShop

Localisez l'URL de la dernière version de PrestaShop , téléchargez /tmpet extrayez vers /var/www/htdocs/prestashop.

cd /tmp
wget <https://download.prestashop.com/download/releases/prestashop_1.7.6.4.zip>
unzip prestashop_1.7.6.4.zip -d /var/www/htdocs/prestashop
chown -R www:www /var/www/htdocs/prestashop

Configurer le pare-feu d'OpenBSD (pf)

Configurez le pare-feu pour bloquer tout le trafic entrant, à l'exception de ssh , www et https .

Faites une copie de sauvegarde de /etc/pf.conf.

cp /etc/pf.conf /etc/pf.conf.bak

Modifiez /etc/pf.confcomme indiqué.

set skip on lo

block in
pass out  

pass in on egress inet proto tcp to port {ssh, www, https} \
    flags S/SA keep state

Testez et activez les règles du pare-feu.

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf

Configurer OpenSMTPD comme relais de messagerie

Sauvegardez votre /etc/mail/smtpd.conffichier.

cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak

Modifiez /etc/mail/smtpd.confcomme indiqué ci-dessous.

Remarques: * La définition de table pour les secrets contient le nom d'utilisateur et le mot de passe pour le relais de messagerie. * L'action sortante recherche le nom d' utilisateur et mot de passe sous l'étiquette prestashopdans /etc/mail/secretset relaie le courrier électronique via votre serveur de messagerie.

    table aliases file:/etc/mail/aliases
    table secrets file:/etc/mail/secrets

    listen on lo0

    action "local_mail" mbox alias <aliases>
    action "outbound" relay host smtp+tls://[email protected]:587 \
        tls no-verify auth <secrets>

    match from local for local action "local_mail"
    match from local for any action "outbound"

Créer /etc/mail/secrets

Remplacez l'adresse e-mail et le mot de passe par les informations d'identification que vous utilisez pour votre serveur de messagerie.

echo "prestashop [email protected]:password" > /etc/mail/secrets

Définir des autorisations pour sécuriser /etc/mail/secrets

chmod 0600 /etc/secrets

Recherchez les erreurs dans le fichier de configuration et redémarrez le démon smtpd.

smtpd -n
rcctl restart smtpd

Configurer l'environnement PHP et PHP-FPM

Configurez le processus PHP-FPM pour écouter sur un socket TCP au lieu d'un socket de domaine UNIX.

Apportez la modification suivante ci-dessous pour le /etc/php-fpm.conffichier.

...
; If using a TCP port, never expose this to a public network.
;listen = /var/www/run/php-fpm.sock
listen = 127.0.0.1:9000

Apportez quelques modifications supplémentaires à l'environnement PHP dans /etc/php-7.3.ini. Ce nom de fichier peut changer légèrement si la version est plus récente que 7.3. Ces changements:

  • Autorisez le téléchargement de fichiers plus volumineux.
  • Désactivez l'environnement chrooté.
  • Configurez PHP pour envoyer des e-mails via sendmail.

    ; Default Value: not set
    ;chroot = /var/www
    ...
    ; Maximum allowed size for uploaded files.
    ; <http://php.net/upload-max-filesize>
    upload_max_filesize = 6M
    ...
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; <http://php.net/sendmail-path>
    ;sendmail_path =
    sendmail_path = /usr/sbin/sendmail -t -i
    ...
    ; Whether to allow the treatment of URLs (like <http://> or <ftp://)> as files.
    ; <http://php.net/allow-url-fopen>
    allow_url_fopen = On
    ...
    ; Maximum size of POST data that PHP will accept.
    ; Its value may be 0 to disable the limit. It is ignored if POST data reading
    ; is disabled through enable_post_data_reading.
    ; <http://php.net/post-max-size>
    post_max_size = 12M
    

    Activez les plugins PHP.

    cp /etc/php-7.3.sample/* /etc/php-7.3/.

Activez et démarrez le démon PHP-FPM. Le nom du démon peut être légèrement différent si la version est plus récente.

rcctl enable php73_fpm
rcctl start php73_fpm

Configuration de MariaDB

MariaDB fournit le backend de base de données pour PrestaShop. Parce que MariaDB a besoin de plus de fichiers ouverts que la classe par défaut ne le permet, créez une classe spéciale dans /etc/login.conf.

Au bas du fichier, ajoutez les lignes suivantes:

mysqld:\
      :openfiles-cur=1024:\
      :openfiles-max=2048:\
      :tc=daemon:

Installez MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configurez la sécurité MariaDB.

 mysql_secure_installation

Créez la base de données PrestaShop. Utilisez un mot de passe fort.

mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT

Configuration d'Apache

Sauvegarder /etc/apache2/httpd2.conf

cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak

Apportez les modifications suivantes à /etc/apache2/httpd2.conf, en utilisant #pour activer et désactiver les modules.

Listen 443
...
LoadModule mpm_event_module /usr/local/lib/apache2/mod_mpm_event.so
#LoadModule mpm_prefork_module /usr/local/lib/apache2/mod_mpm_prefork.so
LoadModule proxy_module /usr/local/lib/apache2/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/lib/apache2/mod_proxy_fcgi.so
LoadModule ssl_module /usr/local/lib/apache2/mod_ssl.so
LoadModule rewrite_module /usr/local/lib/apache2/mod_rewrite.so
...
ServerAdmin [email protected]
ServerName 192.0.2.1:80
  • Plusieurs autres modifications /etc/apache2/httpd2.confse produisent vers le bas du fichier. Supprimez #des instructions incluses indiquées.

  • Ajoutez les lignes d'hébergement virtuel en dernier.

    # Server-pool management (MPM specific)
    Include /etc/apache2/extra/httpd-mpm.conf
    ...
    # Virtual Hosts
    IncludeOptional /etc/apache2/sites/*.conf
    

Créez le /etc/apache2/sitesrépertoire.

mkdir /etc/apache2/sites

Créez /etc/apache2/sites/example.confavec les informations suivantes:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

  SSLEngine On
  SSLCertificateFile "/etc/ssl/example.com.crt"
  SSLCertificateKeyFile "/etc/ssl/private/example.com.key"
  SSLCipherSuite HIGH:!aNULL

</VirtualHost>

Configurez le module proxy d'Apache en ajoutant ce qui suit à /etc/apache2/sites/example.conf

<IfModule proxy_module>
  <IfModule dir_module>
    DirectoryIndex index.php
  </IfModule>
  <FilesMatch "\.php$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>
</IfModule>

Testez la configuration, puis activez et démarrez Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Assurez-vous qu'Apache écoute sur les ports 80 et 443.

netstat -ln -finet

Active Internet connections (only servers)
Proto   Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp          0      0  *.443                  *.*                    LISTEN
tcp          0      0  127.0.0.1.25           *.*                    LISTEN
tcp          0      0  *.22                   *.*                    LISTEN
tcp          0      0  *.80                   *.*                    LISTEN
tcp          0      0  127.0.0.1.3306         *.*                    LISTEN
tcp          0      0  127.0.0.1.9000         *.*                    LISTEN

Installer PrestaShop

Accédez à votre site Web à http://www.example.com. L'assistant d'installation de PrestaShop se lancera.

Une fois l'installation terminée, prenez note de la vitrine et des liens administratifs et supprimez le répertoire /var/www/htdocs/prestashop/install.

Activez SSL.

  • Cliquez sur Paramètres de la boutique
  • Cliquez sur Général
  • Activez SSL pour toutes les parties de votre boutique

Modifiez votre mot de passe administrateur.

  • Cliquez sur Paramètres avancés
  • Cliquez sur Équipe
  • Changez votre mot de passe.

Quelques tâches finales

Sauvegardez votre magasin et sa base de données:

cd /var/www/htdocs
doas tar cvfz /home/auser/prestashop.tar.gz prestashop/
doas mysqldump -u prestashop -p prestashop | gzip -4 > /home/auser/prestashop.sql.tar.gz
doas chown auser:auser /home/auser/prestashop*

Supprimez l'accès doas pour votre compte d'utilisateur en recréant le doas.conffichier.

echo 'permit keepenv :wheel' > /etc/doas.conf


Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.