OpenBSD come soluzione di e-commerce con PrestaShop e Apache

introduzione

Questo tutorial dimostra OpenBSD come soluzione di e-commerce usando PrestaShop e Apache.

Apache è necessario perché PrestaShop ha complessi requisiti di riscrittura degli URL che non sono supportati dal server Web incorporato di OpenBSD, httpd. Questo tutorial utilizza certificati autofirmati. Si prega di utilizzare un certificato verificato per la produzione.

Compiti di preparazione

Creare temporaneamente un utente normale autorizzato a utilizzare doassenza password. Questo accesso verrà rimosso dopo l'installazione.

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

Aggiungi il repository di pacchetti OpenBSD.

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

Inoltra e-mail giornaliere di stato e sicurezza al tuo indirizzo.

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

Imposta il nome host del server.

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

Aggiungi il nome FQDN e l'indirizzo IP del tuo server a /etc/hosts.
Sostituisci 192.0.2.1con il tuo indirizzo IP Vultr.

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

Aggiungi i pacchetti richiesti per PrestaShop e Apache. Scegli le ultime versioni quando richiesto.

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

Creato un certificato SSL autofirmato per il test. Impostare Common Name sul nome FQDN del server, ad esempio www.esempio.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

Scarica ed estrai PrestaShop

Individua l'URL dell'ultima versione di PrestaShop , scaricalo /tmped estrailo in /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

Configura il firewall di OpenBSD (pf)

Configura il firewall per bloccare tutto il traffico in entrata ad eccezione di ssh , www e https .

Fai una copia di backup di /etc/pf.conf.

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

Modifica /etc/pf.confcome mostrato.

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

Testare e attivare le regole del firewall.

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

Configurare OpenSMTPD come inoltro e-mail

Esegui il backup del tuo /etc/mail/smtpd.conffile.

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

Modifica /etc/mail/smtpd.confcome mostrato di seguito.

Note: * La definizione della tabella per i segreti contiene il nome utente e la password per l'inoltro della posta. * L'azione in uscita guarda in alto il nome utente e la password sotto l'etichetta prestashopdi /etc/mail/secretse relè l'e-mail attraverso il vostro server di posta elettronica.

    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"

Creare /etc/mail/secrets

Sostituisci l'indirizzo e-mail e la password con le credenziali che usi per il tuo server e-mail.

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

Imposta le autorizzazioni per proteggere /etc/mail/secrets

chmod 0600 /etc/secrets

Testare il file di configurazione per errori e riavviare il demone smtpd.

smtpd -n
rcctl restart smtpd

Configura l'ambiente PHP e PHP-FPM

Configurare il processo PHP-FPM per l'ascolto su un socket TCP anziché su un socket di dominio UNIX.

Apportare le seguenti modifiche per il /etc/php-fpm.conffile.

...
; 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

Apporta alcune modifiche aggiuntive all'ambiente PHP in /etc/php-7.3.ini. Questo nome di file può cambiare leggermente se la versione è più recente di 7.3. Questi cambiamenti:

  • Consentire il caricamento di file più grandi.
  • Disabilita l'ambiente chroot.
  • Configura PHP per inviare e-mail tramite 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
    

    Abilita i plugin PHP.

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

Abilita e avvia il demone PHP-FPM. Il nome del demone potrebbe essere leggermente diverso se la versione è più recente.

rcctl enable php73_fpm
rcctl start php73_fpm

Configurazione di MariaDB

MariaDB fornisce il backend del database per PrestaShop. Poiché MariaDB richiede più file aperti rispetto a quelli consentiti dalla classe predefinita, creare una classe speciale in /etc/login.conf.

Nella parte inferiore del file, aggiungi le seguenti righe:

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

Installa MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configura la sicurezza di MariaDB.

 mysql_secure_installation

Creare il database PrestaShop. Usa una password complessa.

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

Configurare Apache

Eseguire il backup /etc/apache2/httpd2.conf

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

Apportare le seguenti modifiche a /etc/apache2/httpd2.conf, utilizzando #per abilitare e disabilitare i moduli.

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
  • Diverse altre modifiche si /etc/apache2/httpd2.confverificano nella parte inferiore del file. Rimuovere #dalle istruzioni include indicate.

  • Aggiungi le ultime linee di hosting virtuale.

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

Crea la /etc/apache2/sitesdirectory.

mkdir /etc/apache2/sites

Crea /etc/apache2/sites/example.confcon le seguenti informazioni:

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

Configura il modulo proxy di Apache aggiungendo quanto segue a /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>

Testare la configurazione, quindi abilitare e avviare Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Assicurarsi che Apache sia in ascolto sulle porte 80 e 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

Installa PrestaShop

Passare al sito Web all'indirizzo http://www.example.com. Verrà avviata l'installazione guidata di PrestaShop.

Una volta completata l'installazione, prendere nota della parte anteriore del negozio e dei collegamenti amministrativi ed eliminare la directory /var/www/htdocs/prestashop/install.

Abilita SSL.

  • Fai clic su Parametri negozio
  • Fai clic su Generale
  • Abilita SSL per tutte le parti del tuo negozio

Cambia la tua password amministrativa.

  • Fai clic su Parametri avanzati
  • Fai clic su Team
  • Cambia la tua password.

Alcune attività finali

Esegui il backup del tuo negozio e del suo database:

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*

Rimuovere doas access per il tuo account utente ricreando il doas.conffile.

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


Leave a Comment

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.