OpenBSD jako rozwiązanie e-commerce z PrestaShop i Apache

Wprowadzenie

Ten samouczek pokazuje OpenBSD jako rozwiązanie e-commerce wykorzystujące PrestaShop i Apache.

Wymagany jest Apache, ponieważ PrestaShop ma złożone wymagania dotyczące przepisywania adresów URL, które nie są obsługiwane przez wbudowany serwer WWW OpenBSD, httpd. W tym samouczku używane są certyfikaty z podpisem własnym. Do produkcji użyj zweryfikowanego certyfikatu.

Zadania przygotowawcze

Tymczasowo utwórz zwykłego użytkownika, którego można używać doasbez hasła. Ten dostęp zostanie usunięty po instalacji.

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

Dodaj repozytorium pakietów OpenBSD.

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

Prześlij codzienne wiadomości e-mail dotyczące statusu i bezpieczeństwa na swój adres.

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

Ustaw nazwę hosta serwera.

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

Dodaj FQDN i adres IP swojego serwera do /etc/hosts.
Zamień na 192.0.2.1swój adres IP Vultr.

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

Dodaj wymagane pakiety dla PrestaShop i Apache. Po wyświetleniu monitu wybierz najnowsze wersje.

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

Utworzono samopodpisany certyfikat SSL do testowania. Ustaw Common Name na FQDN swojego serwera, np. 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

Pobierz i rozpakuj PrestaShop

Znajdź adres URL najnowszej wersji PrestaShop , pobierz /tmpi wyodrębnij /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

Skonfiguruj zaporę OpenBSD (pf)

Skonfiguruj zaporę ogniową, aby blokować cały ruch przychodzący z wyjątkiem ssh , www i https .

Wykonaj kopię zapasową /etc/pf.conf.

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

Edytuj /etc/pf.confjak pokazano.

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

Przetestuj i aktywuj reguły zapory.

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

Skonfiguruj OpenSMTPD jako przekaźnik e-mail

Utwórz kopię zapasową /etc/mail/smtpd.confpliku.

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

Edytuj, /etc/mail/smtpd.confjak pokazano poniżej.

Uwagi: * Definicja tabeli dla sekretów zawiera nazwę użytkownika i hasło dla przekaźnika poczty. * Akcja wychodzące wyszukuje nazwę użytkownika i hasło pod etykietą prestashopw /etc/mail/secretsi przekaźników poprzez wiadomość e-mail z serwerem pocztowym.

    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"

Stwórz /etc/mail/secrets

Zastąp adres e-mail i hasło poświadczeniami, których używasz na swoim serwerze e-mail.

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

Ustaw uprawnienia, aby zabezpieczyć /etc/mail/secrets

chmod 0600 /etc/secrets

Sprawdź plik konfiguracyjny pod kątem błędów i zrestartuj demona smtpd.

smtpd -n
rcctl restart smtpd

Skonfiguruj środowisko PHP i PHP-FPM

Skonfiguruj proces PHP-FPM, aby nasłuchiwał na gnieździe TCP zamiast gniazda domeny UNIX.

Wprowadź poniższą zmianę dla /etc/php-fpm.confpliku.

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

Wprowadź dodatkowe zmiany w środowisku PHP w /etc/php-7.3.ini. Ta nazwa pliku może się nieznacznie zmienić, jeśli wersja jest nowsza niż 7.3. Te zmiany:

  • Zezwól na przesyłanie większych plików.
  • Wyłącz środowisko chrootowane.
  • Skonfiguruj PHP do wysyłania wiadomości e-mail za pośrednictwem 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
    

    Włącz wtyczki PHP.

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

Włącz i uruchom demona PHP-FPM. Nazwa demona może się nieco różnić, jeśli wersja jest nowsza.

rcctl enable php73_fpm
rcctl start php73_fpm

Konfigurowanie MariaDB

MariaDB zapewnia zaplecze bazy danych dla PrestaShop. Ponieważ MariaDB potrzebuje więcej otwartych plików, niż pozwala na to klasa domyślna, utwórz specjalną klasę w /etc/login.conf.

W dolnej części pliku dodaj następujące wiersze:

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

Zainstaluj MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Skonfiguruj zabezpieczenia MariaDB.

 mysql_secure_installation

Utwórz bazę danych PrestaShop. Użyj silnego hasła.

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

Konfigurowanie Apache

Utworzyć kopię zapasową /etc/apache2/httpd2.conf

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

Wprowadź następujące zmiany /etc/apache2/httpd2.conf, używając, #aby włączyć lub wyłączyć moduły.

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
  • Kilka dalszych zmian /etc/apache2/httpd2.confwystępuje w dolnej części pliku. Usuń #ze wskazanych instrukcji dołączania.

  • Dodaj linie Virtual Hosting na końcu.

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

Utwórz /etc/apache2/siteskatalog.

mkdir /etc/apache2/sites

Utwórz /etc/apache2/sites/example.confza pomocą następujących informacji:

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

Skonfiguruj moduł proxy Apache, dodając następujące elementy 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>

Przetestuj konfigurację, a następnie włącz i uruchom Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Upewnij się, że Apache nasłuchuje na portach 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

Zainstaluj PrestaShop

Przejdź do swojej witryny pod adresem http://www.example.com. Uruchomi się kreator instalacji PrestaShop.

Po zakończeniu instalacji zwróć uwagę na interfejsy sklepu i linki administracyjne i usuń katalog /var/www/htdocs/prestashop/install.

Włącz SSL.

  • Kliknij opcję Parametry sklepu
  • Kliknij Ogólne
  • Włącz SSL dla wszystkich części swojego sklepu

Zmień hasło administracyjne.

  • Kliknij Zaawansowane parametry
  • Kliknij Zespół
  • Zmień swoje hasło.

Niektóre końcowe zadania

Wykonaj kopię zapasową sklepu i jego bazy danych:

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*

Usuń dostęp doas dla swojego konta użytkownika, ponownie tworząc doas.confplik.

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


Leave a Comment

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.