OpenBSD als een e-commerce oplossing met PrestaShop en Apache

Invoering

Deze tutorial laat OpenBSD zien als een e-commerce oplossing met PrestaShop en Apache.

Apache is vereist omdat PrestaShop complexe vereisten voor het herschrijven van URL's heeft die niet worden ondersteund door de ingebouwde webserver van OpenBSD, httpd. Deze tutorial maakt gebruik van zelfondertekende certificaten. Gebruik een geverifieerd certificaat voor productie.

Voorbereidingstaken

Maak tijdelijk een gewone gebruiker aan die mag gebruiken doaszonder wachtwoord. Deze toegang wordt na de installatie verwijderd.

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

Voeg de OpenBSD pakketrepository toe.

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

Stuur dagelijkse status- en beveiligingsmails door naar uw adres.

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

Stel de hostnaam van de server in.

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

Voeg het FQDN- en IP-adres van uw server toe aan /etc/hosts.
Vervang 192.0.2.1door uw Vultr IP-adres.

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

Voeg de vereiste pakketten toe voor PrestaShop en Apache. Kies de nieuwste versies wanneer daarom wordt gevraagd.

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

Een zelfondertekend SSL-certificaat gemaakt om te testen. Stel Common Name in op de FQDN van uw server, bijvoorbeeld 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

Download en pak PrestaShop uit

Zoek de URL voor de nieuwste versie van PrestaShop , download naar /tmpen pak uit /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

Configureer OpenBSD's (pf) Firewall

Configureer de firewall om al het inkomende verkeer te blokkeren, behalve ssh , www en https .

Maak een reservekopie van /etc/pf.conf.

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

Bewerk /etc/pf.confzoals afgebeeld.

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

Test en activeer de firewallregels.

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

Configureer OpenSMTPD als een e-mailrelay

Maak een back-up van uw /etc/mail/smtpd.confbestand.

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

Bewerk /etc/mail/smtpd.confzoals hieronder weergegeven.

Opmerkingen: * De tabeldefinitie voor geheimen bevat de gebruikersnaam en het wachtwoord voor de e-mailrelay. * De uitgaande actie zoekt de gebruikersnaam en het wachtwoord op onder het label prestashopin /etc/mail/secretsen stuurt de e-mail door via uw e-mailserver.

    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"

Creëer /etc/mail/secrets

Vervang het e-mailadres en wachtwoord door de gegevens die u voor uw e-mailserver gebruikt.

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

Stel machtigingen in om te beveiligen /etc/mail/secrets

chmod 0600 /etc/secrets

Test het configuratiebestand op fouten en start de smtpd-daemon opnieuw op.

smtpd -n
rcctl restart smtpd

Configureer de PHP- en PHP-FPM-omgeving

Configureer het PHP-FPM-proces om te luisteren op een TCP-socket in plaats van op een UNIX-domeinsocket.

Breng hieronder de volgende wijziging aan voor het /etc/php-fpm.confbestand.

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

Breng wat extra wijzigingen aan in de PHP-omgeving in /etc/php-7.3.ini. Deze bestandsnaam kan enigszins veranderen als de versie nieuwer is dan 7.3. Deze veranderingen:

  • Sta toe dat grotere bestanden worden geüpload.
  • Schakel de chrooted-omgeving uit.
  • Configureer PHP om e-mail te verzenden 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
    

    Schakel de PHP-plug-ins in.

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

Schakel de PHP-FPM-daemon in en start deze. De daemon-naam kan enigszins verschillen als de versie nieuwer is.

rcctl enable php73_fpm
rcctl start php73_fpm

MariaDB configureren

MariaDB biedt de database-backend voor PrestaShop. Omdat MariaDB meer open bestanden nodig heeft dan de standaardklasse toestaat, maakt u een speciale klasse aan /etc/login.conf.

Voeg onder aan het bestand de volgende regels toe:

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

Installeer MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configureer MariaDB-beveiliging.

 mysql_secure_installation

Maak de PrestaShop-database. Gebruik een sterk wachtwoord.

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

Apache configureren

Maak een back-up /etc/apache2/httpd2.conf

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

Breng de volgende wijzigingen aan in /etc/apache2/httpd2.conf, #om modules in en uit te schakelen.

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
  • /etc/apache2/httpd2.confOnderaan het bestand vinden nog enkele wijzigingen plaats. Verwijderen #uit de aangegeven vermeldingen.

  • Voeg de Virtual Hosting-regels als laatste toe.

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

Maak de /etc/apache2/sitesdirectory.

mkdir /etc/apache2/sites

Maak /etc/apache2/sites/example.confmet de volgende informatie:

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

Configureer de proxy-module van Apache door het volgende toe te voegen aan /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>

Test de configuratie, schakel Apache in en start het.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Zorg ervoor dat Apache luistert op poort 80 en 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

Installeer PrestaShop

Blader naar uw website op http://www.example.com. De PrestaShop-installatiewizard wordt gestart.

Nadat u de installatie hebt voltooid, noteert u de voorkant van de winkel en de beheerlinks en verwijdert u de directory /var/www/htdocs/prestashop/install.

Schakel SSL in.

  • Klik op Winkelparameters
  • Klik op Algemeen
  • Schakel SSL in voor alle delen van uw winkel

Wijzig uw beheerderswachtwoord.

  • Klik op Geavanceerde parameters
  • Klik op Team
  • Wijzig uw wachtwoord.

Enkele laatste taken

Maak een back-up van uw winkel en de 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*

Verwijder doas-toegang voor uw gebruikersaccount door het doas.confbestand opnieuw te maken.

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


Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.