OpenBSD jako řešení elektronického obchodu s PrestaShop a Apache

Úvod

Tento tutoriál ukazuje OpenBSD jako řešení pro e-commerce využívající PrestaShop a Apache.

Apache je vyžadován, protože PrestaShop má složité požadavky na přepisování URL, které nejsou podporovány vestavěným webovým serverem OpenBSD, httpd. Tento kurz používá certifikáty s vlastním podpisem. Pro výrobu použijte ověřený certifikát.

Přípravné úkoly

Dočasně vytvořte běžného uživatele, který může používat doasbez hesla. Tento přístup bude po nastavení odebrán.

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

Přidejte úložiště balíčků OpenBSD.

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

Přeposílejte denní stavové a bezpečnostní e-maily na vaši adresu.

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

Nastavte název hostitele serveru.

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

Přidejte FQDN a IP adresu vašeho serveru do /etc/hosts.
Nahraďte 192.0.2.1svou IP adresou Vultr.

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

Přidejte požadované balíčky pro PrestaShop a Apache. Po zobrazení výzvy vyberte nejnovější verze.

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

Vytvořil self-signed SSL certifikát pro testování. Nastavte Common Name na FQDN vašeho serveru, např. 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

Stáhněte a extrahujte PrestaShop

Vyhledejte adresu URL nejnovější verze PrestaShopu , stáhněte si ji /tmpa rozbalte do /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

Nakonfigurujte OpenBSD (pf) Firewall

Nakonfigurujte bránu firewall tak, aby blokovala veškerý příchozí provoz kromě ssh , www a https .

Vytvořte záložní kopii souboru /etc/pf.conf.

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

Upravte /etc/pf.confpodle obrázku.

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

Otestujte a aktivujte pravidla brány firewall.

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

Nakonfigurujte OpenSMTPD jako e-mailové relé

Zálohujte svůj /etc/mail/smtpd.confsoubor.

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

Upravte, /etc/mail/smtpd.confjak je uvedeno níže.

Poznámky: * Definice tabulky pro tajné informace obsahuje uživatelské jméno a heslo pro přenos pošty. * Odchozí akce vyhledá uživatelské jméno a heslo, pod značkou prestashopv /etc/mail/secretsa přenese emailovou prostřednictvím svého e-mailového serveru.

    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"

Vytvořit /etc/mail/secrets

Nahraďte e-mailovou adresu a heslo přihlašovacími údaji, které používáte pro svůj e-mailový server.

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

Nastavte oprávnění na zabezpečení /etc/mail/secrets

chmod 0600 /etc/secrets

Vyhledejte v konfiguračním souboru chyby a restartujte démona smtpd.

smtpd -n
rcctl restart smtpd

Nakonfigurujte prostředí PHP a PHP-FPM

Nakonfigurujte proces PHP-FPM tak, aby naslouchal na soketu TCP místo na soketu domény UNIX.

Proveďte následující změnu pro /etc/php-fpm.confsoubor.

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

Make some additional changes to the PHP environment in /etc/php-7.3.ini. This file name may change slightly if the version is newer than 7.3. These changes:

  • Allow for larger files to be uploaded.
  • Disable the chrooted environment.
  • Configure PHP to send email 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
    

    Enable the PHP plugins.

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

Enable and start the PHP-FPM daemon. The daemon name might be slightly different if the version is newer.

rcctl enable php73_fpm
rcctl start php73_fpm

Configuring MariaDB

MariaDB provides the database backend for PrestaShop. Because MariaDB needs more open files than the default class allows, create a special class in /etc/login.conf.

At the bottom of the file, add the following lines:

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

Install MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configure MariaDB security.

 mysql_secure_installation

Create the PrestaShop database. Use a strong password.

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

Configuring Apache

Back up /etc/apache2/httpd2.conf

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

Proveďte následující změny v /etc/apache2/httpd2.conf, pomocí #k povolení a zakázání modulů.

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
  • V /etc/apache2/httpd2.confdolní části souboru dochází k několika dalším změnám . Odebrat #z označených příkazů include.

  • Řádky virtuálního hostování přidejte jako poslední.

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

Vytvořte /etc/apache2/sitesadresář.

mkdir /etc/apache2/sites

Vytvořte /etc/apache2/sites/example.confs následujícími informacemi:

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

Nakonfigurujte proxy modul Apache přidáním následujícího do /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>

Otestujte konfiguraci, poté povolte a spusťte Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Ujistěte se, že Apache naslouchá na portech 80 a 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

Nainstalujte si PrestaShop

Přejděte na svůj web na adrese http://www.example.com. Spustí se průvodce instalací PrestaShopu.

Jakmile dokončíte instalaci, poznamenejte si frontu obchodu a administrativní odkazy a odstraňte adresář /var/www/htdocs/prestashop/install.

Povolit SSL.

  • Klikněte na Parametry obchodu
  • Klepněte na Obecné
  • Povolte SSL pro všechny části vašeho obchodu

Změňte heslo správce.

  • Klepněte na Pokročilé parametry
  • Klikněte na Tým
  • Změňte si své heslo.

Některé závěrečné úkoly

Zálohujte svůj obchod a jeho databázi:

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*

Odeberte přístup doas pro svůj uživatelský účet opětovným vytvořením doas.confsouboru.

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

Zanechat komentář

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.

Útoky DDOS: Stručný přehled

Útoky DDOS: Stručný přehled

Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.

Revoluční vynálezy od Googlu, které vám usnadní život.

Revoluční vynálezy od Googlu, které vám usnadní život.

Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…

Technologická singularita: vzdálená budoucnost lidské civilizace?

Technologická singularita: vzdálená budoucnost lidské civilizace?

Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.

Funkcionality vrstev referenční architektury velkých dat

Funkcionality vrstev referenční architektury velkých dat

Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.

Evoluce ukládání dat – Infografika

Evoluce ukládání dat – Infografika

Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více