OpenBSD kot rešitev za e-trgovino s PrestaShop in Apache

Uvod

Ta vadnica prikazuje OpenBSD kot rešitev za e-trgovino z uporabo PrestaShop in Apache.

Apache je potreben, ker ima PrestaShop zapletene zahteve za prepisovanje URL-jev, ki jih vgrajeni spletni strežnik OpenBSD, httpd, ne podpira. Ta vadnica uporablja samopodpisana potrdila. Za proizvodnjo uporabite preverjen certifikat.

Naloge za pripravo

Začasno ustvarite običajnega uporabnika, ki mu je dovoljena uporaba doasbrez gesla. Ta dostop bo po nastavitvi odstranjen.

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

Dodajte skladišče paketov OpenBSD.

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

Posredujte dnevna e-poštna sporočila o stanju in varnosti na svoj naslov.

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

Nastavite ime gostitelja strežnika.

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

Dodajte FQDN in naslov IP vašega strežnika v /etc/hosts.
Zamenjajte 192.0.2.1s svojim naslovom IP Vultr.

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

Dodajte zahtevane pakete za PrestaShop in Apache. Ko ste pozvani, izberite najnovejše različice.

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

Ustvaril samopodpisano potrdilo SSL za testiranje. Nastavite Common Name na FQDN vašega strežnika, npr. 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

Prenesite in ekstrahirajte PrestaShop

Poiščite URL za najnovejšo različico PrestaShop , prenesite /tmpin izvlecite v /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

Konfigurirajte požarni zid (pf) OpenBSD

Konfigurirajte požarni zid tako, da blokira ves vhodni promet razen ssh , www in https .

Naredite varnostno kopijo /etc/pf.conf.

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

Uredite, /etc/pf.confkot je prikazano.

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

Preizkusite in aktivirajte pravila požarnega zidu.

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

Konfigurirajte OpenSMTPD kot e-poštni rele

Varnostno kopirajte svojo /etc/mail/smtpd.confdatoteko.

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

Uredite, /etc/mail/smtpd.confkot je prikazano spodaj.

Opombe: * Definicija tabele za skrivnosti vsebuje uporabniško ime in geslo za poštni rele. * Outbound ukrep pogleda uporabniško ime in geslo, pod nalepko prestashopv /etc/mail/secretsin releje na e-poštni prek e-poštnega strežnika.

    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"

Ustvari /etc/mail/secrets

Zamenjajte e-poštni naslov in geslo s poverilnicami, ki jih uporabljate za svoj e-poštni strežnik.

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

Nastavite dovoljenja za zaščito /etc/mail/secrets

chmod 0600 /etc/secrets

Preglejte konfiguracijsko datoteko za napake in znova zaženite demon smtpd.

smtpd -n
rcctl restart smtpd

Konfigurirajte okolje PHP in PHP-FPM

Konfigurirajte proces PHP-FPM za poslušanje v vtičnici TCP namesto vtičnice domene UNIX.

Za /etc/php-fpm.confdatoteko naredite naslednjo spremembo .

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

Izvedite nekaj dodatnih sprememb v okolju PHP v /etc/php-7.3.ini. To ime datoteke se lahko nekoliko spremeni, če je različica novejša od 7.3. Te spremembe:

  • Dovoli nalaganje večjih datotek.
  • Onemogočite chrooted okolje.
  • Konfigurirajte PHP za pošiljanje e-pošte prek sendmaila.

    ; 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
    

    Omogočite vtičnike PHP.

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

Omogočite in zaženite demon PHP-FPM. Ime demona se lahko nekoliko razlikuje, če je različica novejša.

rcctl enable php73_fpm
rcctl start php73_fpm

Konfiguriranje MariaDB

MariaDB zagotavlja ozadje baze podatkov za PrestaShop. Ker MariaDB potrebuje več odprtih datotek, kot omogoča privzeti razred, ustvarite poseben razred v /etc/login.conf.

Na dnu datoteke dodajte naslednje vrstice:

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

Namestite MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Konfigurirajte varnost MariaDB.

 mysql_secure_installation

Ustvarite bazo podatkov PrestaShop. Uporabite močno geslo.

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

Konfiguriranje Apache

Rezerva /etc/apache2/httpd2.conf

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

Izvedite naslednje spremembe v /etc/apache2/httpd2.conf, z uporabo #za omogočanje in onemogočanje modulov.

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
  • Na /etc/apache2/httpd2.confdnu datoteke se zgodi še več sprememb . Odstranite #iz navedenih izjav o vključevanju.

  • Nazadnje dodajte vrstice za virtualno gostovanje.

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

Ustvarite /etc/apache2/sitesimenik.

mkdir /etc/apache2/sites

Ustvarite /etc/apache2/sites/example.confz naslednjimi informacijami:

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

Konfigurirajte proxy modul Apache tako, da dodate naslednje /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>

Preizkusite konfiguracijo, nato omogočite in zaženite Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Prepričajte se, da Apache posluša na vratih 80 in 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

Namestite PrestaShop

Prebrskajte svoje spletno mesto na naslovu http://www.example.com. Zagnal se bo čarovnik za namestitev PrestaShop.

Ko dokončate namestitev, upoštevajte naslovnice trgovine in administrativne povezave ter izbrišite imenik /var/www/htdocs/prestashop/install.

Omogoči SSL.

  • Kliknite Shop Parameters
  • Kliknite Splošno
  • Omogočite SSL za vse dele vaše trgovine

Spremenite svoje skrbniško geslo.

  • Kliknite Napredni parametri
  • Kliknite Ekipa
  • Zamenjajte geslo.

Nekaj ​​zaključnih nalog

Varnostno kopirajte svojo trgovino in njeno bazo podatkov:

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*

Odstranite dostop doas za vaš uporabniški račun tako, da znova ustvarite doas.confdatoteko.

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

BSD, poslovni, spletni strežniki

Pusti komentar

Vzpon strojev: aplikacije AI v resničnem svetu

Vzpon strojev: aplikacije AI v resničnem svetu

Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.

DDOS napadi: kratek pregled

DDOS napadi: kratek pregled

Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.

Razvoj shranjevanja podatkov – Infografika

Razvoj shranjevanja podatkov – Infografika

Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več