OpenBSD as an E-Commerce Solution With PrestaShop and Apache

Introduction

This tutorial demonstrates OpenBSD as an e-commerce solution using PrestaShop and Apache.

Apache is required because PrestaShop has complex URL rewriting requirements that are not supported by OpenBSD's built-in web server, httpd. This tutorial uses self-signed certificates. Please use a verified certificate for production.

Preparation Tasks

Temporarily create a regular user allowed to use doas without a password. This access will be removed after setup.

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

Add the OpenBSD package repository.

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

Forward daily status and security emails to your address.

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

Set the hostname of the server.

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

Add your server's FQDN and IP address to /etc/hosts.
Replace 192.0.2.1 with your Vultr IP address.

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

Add the required packages for PrestaShop and Apache. Choose the latest versions when prompted.

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

Created a self-signed SSL certificate for testing. Set Common Name to the FQDN of your server, e.g. 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 and Extract PrestaShop

Locate the URL for the latest version of PrestaShop, download to /tmp and extract to /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

Configure OpenBSD's (pf) Firewall

Configure the firewall to block all inbound traffic except for ssh, www and https.

Make a backup copy of /etc/pf.conf.

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

Edit /etc/pf.conf as shown.

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 and activate the firewall rules.

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

Configure OpenSMTPD as an Email Relay

Backup your /etc/mail/smtpd.conf file.

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

Edit /etc/mail/smtpd.conf as shown below.

Notes: * The table definition for secrets holds the username and password for the mail relay. * The outbound action looks up the username and password under the label prestashop in /etc/mail/secrets and relays the email through your email server.

    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"

Create /etc/mail/secrets

Replace the email address and password with the credentials that you use for your email server.

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

Set permissions to secure /etc/mail/secrets

chmod 0600 /etc/secrets

Thest the configuration file for errors and restart the smtpd daemon.

smtpd -n
rcctl restart smtpd

Configure the PHP and PHP-FPM Environment

Configure the PHP-FPM process to listen on a TCP socket instead of a UNIX domain socket.

Make the following change below for the /etc/php-fpm.conf file.

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

Make the following changes to /etc/apache2/httpd2.conf, using # to enable and disable modules.

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
  • Several more changes in /etc/apache2/httpd2.conf occur towards the bottom of the file. Remove # from the include statements indicated.

  • Add the Virtual Hosting lines last.

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

Create the /etc/apache2/sites directory.

mkdir /etc/apache2/sites

Create /etc/apache2/sites/example.conf with the following information:

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

Configure Apache's proxy module by adding the following to /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 the configuration, then enable and start Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Ensure that Apache is listening on ports 80 and 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

Install PrestaShop

Browse to your website at http://www.example.com. The PrestaShop install wizard will launch.

Once you complete the install, take note of the store front and administrative links and delete the directory /var/www/htdocs/prestashop/install.

Enable SSL.

  • Click Shop Parameters
  • Click General
  • Enable SSL for all parts of your store

Change your administrative password.

  • Click Advanced Parameters
  • Click Team
  • Change your password.

Some Final Tasks

Backup your store and its 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*

Remove doas access for your user account by recreating the doas.conf file.

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

Kuidas installida väike väike RSS-lugeja FreeBSD 11 FAMP VPS-i

Kuidas installida väike väike RSS-lugeja FreeBSD 11 FAMP VPS-i

Kas kasutate teistsugust süsteemi? Tiny Tiny RSS Reader on tasuta ja avatud lähtekoodiga isehostitav veebipõhine uudistevoo (RSS/Atom) lugeja ja koondaja, mis on loodud

Kuidas installida Wiki.jsi FreeBSD 11-sse

Kuidas installida Wiki.jsi FreeBSD 11-sse

Kas kasutate teistsugust süsteemi? Wiki.js on tasuta avatud lähtekoodiga kaasaegne vikirakendus, mis on üles ehitatud Node.js-ile, MongoDB-le, Gitile ja Markdownile. Wiki.js lähtekood on avalik

Kuidas installida Pagekit 1.0 CMS FreeBSD 11 FAMP VPS-i

Kuidas installida Pagekit 1.0 CMS FreeBSD 11 FAMP VPS-i

Kas kasutate teistsugust süsteemi? Pagekit 1.0 CMS on ilus, modulaarne, laiendatav ja kerge, tasuta ja avatud lähtekoodiga sisuhaldussüsteem (CMS).

Kuidas installida MODX Revolution FreeBSD 11 FAMP VPS-i

Kuidas installida MODX Revolution FreeBSD 11 FAMP VPS-i

Kas kasutate teistsugust süsteemi? MODX Revolution on kiire, paindlik, skaleeritav avatud lähtekoodiga ettevõttetasemel sisuhaldussüsteem (CMS), mis on kirjutatud PHP-s. See i

Seadistage OpenBSD 5.5 64-bitine

Seadistage OpenBSD 5.5 64-bitine

See artikkel juhendab teid OpenBSD 5.5 (64-bitise) seadistamise kaudu KVM-is Vultr VPS-iga. Samm 1. Logige Vultri juhtpaneelile sisse. Samm 2. Klõpsake nuppu DEPLOY

Kuidas installida osTicket FreeBSD 12-sse

Kuidas installida osTicket FreeBSD 12-sse

Kas kasutate teistsugust süsteemi? osTicket on avatud lähtekoodiga klienditoe piletimüügisüsteem. osTicketi lähtekoodi majutatakse avalikult Githubis. Selles õpetuses

Kuidas installida Flarum Forum FreeBSD 12-sse

Kuidas installida Flarum Forum FreeBSD 12-sse

Kas kasutate teistsugust süsteemi? Flarum on tasuta ja avatud lähtekoodiga järgmise põlvkonna foorumitarkvara, mis muudab veebiarutelu lõbusaks. Flarum lähtekoodi majutatakse o

Kuidas lubada TLS 1.3 Nginxis FreeBSD 12-s

Kuidas lubada TLS 1.3 Nginxis FreeBSD 12-s

Kas kasutate teistsugust süsteemi? TLS 1.3 on transpordikihi turvalisuse (TLS) protokolli versioon, mis avaldati 2018. aastal RFC 8446 pakutud standardina.

Installige WordPress OpenBSD 6.2-le

Installige WordPress OpenBSD 6.2-le

Sissejuhatus WordPress on Internetis domineeriv sisuhaldussüsteem. See võimaldab kõike alates ajaveebidest kuni keeruliste dünaamilise sisuga veebisaitideni

Kuidas installida Subrion 4.1 CMS FreeBSD 11 FAMP VPS-ile

Kuidas installida Subrion 4.1 CMS FreeBSD 11 FAMP VPS-ile

Kas kasutate teistsugust süsteemi? Subrion 4.1 CMS on võimas ja paindlik avatud lähtekoodiga sisuhaldussüsteem (CMS), mis pakub intuitiivset ja selget sisu

Kuidas konfigureerida DJBDNS-i FreeBSD-s

Kuidas konfigureerida DJBDNS-i FreeBSD-s

See õpetus näitab teile, kuidas konfigureerida DNS-teenust, mida on lihtne hooldada, lihtne konfigureerida ja mis on üldiselt turvalisem kui klassikaline BIN.

Kuidas installida Nginxi, MySQL-i ja PHP (FEMP) pinu FreeBSD 12.0-sse

Kuidas installida Nginxi, MySQL-i ja PHP (FEMP) pinu FreeBSD 12.0-sse

FEMP-pinn, mis on võrreldav LEMP-pinuga Linuxis, on avatud lähtekoodiga tarkvara kogum, mis tavaliselt installitakse koos FreeBS-i lubamiseks.

MongoDB installimine FreeBSD 10-sse

MongoDB installimine FreeBSD 10-sse

MongoDB on maailmatasemel NoSQL-i andmebaas, mida kasutatakse sageli uuemates veebirakendustes. See pakub suure jõudlusega päringuid, jagamist ja replikatsiooni

Kuidas installida Monicat FreeBSD 12-sse

Kuidas installida Monicat FreeBSD 12-sse

Kas kasutate teistsugust süsteemi? Monica on avatud lähtekoodiga isiklike suhete haldussüsteem. Mõelge sellele kui CRM-ile (populaarne tööriist, mida kasutavad müügimeeskonnad th

OpenBSD as an E-Commerce Solution With PrestaShop and Apache

OpenBSD as an E-Commerce Solution With PrestaShop and Apache

Introduction This tutorial demonstrates OpenBSD as an e-commerce solution using PrestaShop and Apache. Apache is required because PrestaShop has complex UR

Fork CMS-i installimine FreeBSD 12-sse

Fork CMS-i installimine FreeBSD 12-sse

Kas kasutate teistsugust süsteemi? Fork on avatud lähtekoodiga CMS, mis on kirjutatud PHP-s. Forksi lähtekoodi hostitakse GitHubis. See juhend näitab teile, kuidas Fork CM-i installida

Directus 6.4 CMS installimine FreeBSD 11 FAMP VPS-i

Directus 6.4 CMS installimine FreeBSD 11 FAMP VPS-i

Kas kasutate teistsugust süsteemi? Directus 6.4 CMS on võimas ja paindlik, tasuta ja avatud lähtekoodiga sisuhaldussüsteem (CMS), mis pakub arendajatele

FreeBSD turvalisuse suurendamine IPFW ja SSHGuardi abil

FreeBSD turvalisuse suurendamine IPFW ja SSHGuardi abil

VPS-serverid on sageli sissetungijate sihikule. Levinud ründetüüp kuvatakse süsteemilogides sadade volitamata ssh-i sisselogimiskatsetena. Seadistan

httpd seadistamine OpenBSD-s

httpd seadistamine OpenBSD-s

Sissejuhatus OpenBSD 5.6 tutvustas uut deemonit nimega httpd, mis toetab CGI-d (FastCGI kaudu) ja TLS-i. Uue http installimiseks pole vaja täiendavat tööd teha

Seadistage iRedMail FreeBSD 10-s

Seadistage iRedMail FreeBSD 10-s

See õpetus näitab teile, kuidas installida grupitöö iRedMail värskele FreeBSD 10 installile. Peaksite kasutama serverit, millel on vähemalt üks gigabaid

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit