OpenBSD ca soluție de comerț electronic cu PrestaShop și Apache

Introducere

Acest tutorial demonstrează OpenBSD ca soluție de comerț electronic folosind PrestaShop și Apache.

Apache este necesar deoarece PrestaShop are cerințe complexe de rescriere a adreselor URL care nu sunt acceptate de serverul Web integrat al OpenBSD, httpd. Acest tutorial utilizează certificate auto-semnate. Vă rugăm să utilizați un certificat verificat pentru producție.

Sarcini de pregătire

Creați temporar un utilizator obișnuit permis să folosească doasfără parolă. Acest acces va fi eliminat după instalare.

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

Adăugați pachetul de pachete OpenBSD.

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

Redirecționați e-mailuri zilnice de stare și securitate la adresa dvs.

echo 'hostmaster@example.com' > /root/.forward

Setați numele de gazdă al serverului.

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

Adăugați adresa FQDN și IP a serverului /etc/hosts.
Înlocuiți- 192.0.2.1vă cu adresa dvs. IP Vultr.

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

Adăugați pachetele necesare pentru PrestaShop și Apache. Alegeți cele mai recente versiuni atunci când vi se solicită.

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

Crearea unui certificat SSL autofirmat pentru testare. Setați Common Name pe FQDN al serverului dvs., de exemplu 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

Descărcați și extrageți PrestaShop

Găsiți adresa URL pentru cea mai recentă versiune a PrestaShop , descărcați /tmpși extrageți în /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ți firewall-ul (pf) OpenBSD

Configurați firewallul pentru a bloca tot traficul de intrare, cu excepția ssh , www și https .

Realizați o copie de rezervă a /etc/pf.conf.

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

Modificați /etc/pf.confdupă cum se arată.

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

Testați și activați regulile firewallului.

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

Configurați OpenSMTPD ca un releu de e-mail

Backup-ul /etc/mail/smtpd.conffișierului.

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

Editați /etc/mail/smtpd.confașa cum se arată mai jos.

Note: * Definiția tabelului pentru secrete conține numele de utilizator și parola pentru releul de poștă. * Acțiunea de ieșire se uită în sus numele de utilizator și parola sub eticheta prestashopîn /etc/mail/secretsși releele e - mail prin serverul de e-mail.

    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://prestashop@mail.example.com:587 \
        tls no-verify auth <secrets>

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

Crea /etc/mail/secrets

Înlocuiți adresa de e-mail și parola cu datele de acreditare pe care le utilizați pentru serverul dvs. de e-mail.

echo "prestashop user@example.com:password" > /etc/mail/secrets

Setați permisiunile la securizare /etc/mail/secrets

chmod 0600 /etc/secrets

Începeți fișierul de configurare pentru erori și reporniți demonul smtpd.

smtpd -n
rcctl restart smtpd

Configurați mediul PHP și PHP-FPM

Configurați procesul PHP-FPM pentru a asculta o priză TCP în loc de o priză de domeniu UNIX.

Faceți următoarea modificare mai jos pentru /etc/php-fpm.conffișier.

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

Faceți unele modificări suplimentare mediului PHP din /etc/php-7.3.ini. Acest nume de fișier se poate modifica ușor dacă versiunea este mai nouă decât 7.3. Aceste schimbari:

  • Permiteți încărcarea fișierelor mai mari.
  • Dezactivați mediul încărcat.
  • Configurați PHP pentru a trimite email prin 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
    

    Activați pluginurile PHP.

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

Activați și porniți demonul PHP-FPM. Numele daemon ar putea fi ușor diferit dacă versiunea este mai nouă.

rcctl enable php73_fpm
rcctl start php73_fpm

Configurarea MariaDB

MariaDB oferă backend-ul bazei de date pentru PrestaShop. Deoarece MariaDB are nevoie de mai multe fișiere deschise decât le permite clasa implicită, creați o clasă specială în /etc/login.conf.

În partea de jos a fișierului, adăugați următoarele linii:

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

Instalați MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configurați securitatea MariaDB.

 mysql_secure_installation

Creați baza de date PrestaShop. Utilizați o parolă puternică.

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

Configurarea lui Apache

Back up /etc/apache2/httpd2.conf

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

Faceți următoarele modificări /etc/apache2/httpd2.conf, utilizând #pentru a activa și dezactiva modulele.

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 webmaster@example.com
ServerName 192.0.2.1:80
  • În /etc/apache2/httpd2.confpartea de jos a fișierului apar mai multe modificări . Eliminați #din declarațiile incluse indicate.

  • Adaugă ultima linie de gazduire virtuală.

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

Creați /etc/apache2/sitesdirectorul.

mkdir /etc/apache2/sites

Creați /etc/apache2/sites/example.confcu următoarele informații:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin webmaster@example.com
  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 webmaster@example.com
  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ți modulul proxy Apache adăugând următoarele /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>

Testați configurația, apoi activați și porniți Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Asigurați-vă că Apache ascultă pe porturile 80 și 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

Instalați PrestaShop

Căutați pe site-ul dvs. web la http://www.example.com. Se va lansa expertul de instalare PrestaShop.

După ce finalizați instalarea, luați notă de legătura administrativă și de ștergere a directorului /var/www/htdocs/prestashop/install.

Activați SSL.

  • Faceți clic pe Parametri magazin
  • Faceți clic pe General
  • Activați SSL pentru toate părțile magazinului

Schimbați parola administrativă.

  • Faceți clic pe Parametri avansați
  • Faceți clic pe Echipa
  • Schimbați-vă parola.

Câteva sarcini finale

Copia de rezervă a magazinului și a bazei de date a acestuia:

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*

Eliminați accesul doas pentru contul de utilizator prin recrearea doas.conffișierului.

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

Lasă un comentariu

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe