Introduktion
											
										
																			
											
												Forberedende opgaver
											
										
																			
											
												Download og udpak PrestaShop
											
										
																			
											
												Konfigurer OpenBSD's (pf) Firewall
											
										
																			
											
												Konfigurer OpenSMTPD som et e-mail-relæ
											
										
																			
											
												Konfigurer PHP- og PHP-FPM-miljøet
											
										
																			
											
												Konfiguration af MariaDB
											
										
																			
											
												Konfiguration af Apache
											
										
																			
											
												Installer PrestaShop
											
										
																			
											
												Nogle afsluttende opgaver
											
										
																	
												
Introduktion
Denne tutorial demonstrerer OpenBSD som en e-handelsløsning ved hjælp af PrestaShop og Apache.
Apache er påkrævet, fordi PrestaShop har komplekse URL-omskrivningskrav, der ikke understøttes af OpenBSDs indbyggede webserver, httpd. Denne vejledning bruger selvsignerede certifikater. Brug venligst et verificeret certifikat til produktion.
Forberedende opgaver
Opret midlertidigt en almindelig bruger, der må bruge doasuden adgangskode. Denne adgang vil blive fjernet efter opsætning.
user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf
Tilføj OpenBSD-pakkelageret. 
echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl
Videresend daglige status- og sikkerhedsmails til din adresse. 
echo '[email protected]' > /root/.forward
Indstil serverens værtsnavn.
echo 'www.example.com' > /etc/myname
hostname www.example.com
Tilføj din servers FQDN og IP-adresse til   /etc/hosts. 
Erstat 192.0.2.1med din Vultr IP-adresse.
127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com
Tilføj de nødvendige pakker til PrestaShop og Apache. Vælg de nyeste versioner, når du bliver bedt om det.
doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip
Oprettet et selvsigneret SSL-certifikat til test. Indstil Common Name til FQDN på din server, f.eks. 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 og udpak PrestaShop
Find URL'en til den seneste version af PrestaShop , download til /tmpog udpak til /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
Konfigurer firewallen til at blokere al indgående trafik undtagen ssh , www og https .
Lav en sikkerhedskopi af /etc/pf.conf.
cp /etc/pf.conf /etc/pf.conf.bak
Rediger /etc/pf.confsom vist.
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 og aktiver firewall-reglerne.
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
Sikkerhedskopier din /etc/mail/smtpd.conffil.
cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak
Rediger /etc/mail/smtpd.confsom vist nedenfor.
Bemærkninger: * Tabeldefinitionen for hemmeligheder indeholder brugernavnet og adgangskoden til mail-relæet. * Den udgående handling slår brugernavnet og adgangskoden op under etiketten prestashopi /etc/mail/secretsog videresender e-mailen via din e-mail-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"
skab /etc/mail/secrets
Erstat e-mail-adressen og adgangskoden med de legitimationsoplysninger, du bruger til din e-mail-server.
echo "prestashop [email protected]:password" > /etc/mail/secrets
Indstil tilladelser til at sikre /etc/mail/secrets
chmod 0600 /etc/secrets
Test konfigurationsfilen for fejl og genstart smtpd-dæmonen.
smtpd -n
rcctl restart smtpd
Konfigurer PHP-FPM-processen til at lytte på en TCP-socket i stedet for en UNIX-domæne-socket. 
Foretag følgende ændring for /etc/php-fpm.conffilen nedenfor .
...
; 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
Foretag nogle yderligere ændringer til PHP-miljøet i   /etc/php-7.3.ini. Dette filnavn kan ændre sig lidt, hvis versionen er nyere end 7.3. Disse ændringer:
- Tillad, at større filer kan uploades. 
- Deaktiver det chrootede miljø.
- Konfigurer PHP til at sende e-mail 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
 - Aktiver PHP-plugins. - cp /etc/php-7.3.sample/* /etc/php-7.3/. 
Aktiver og start PHP-FPM-dæmonen. Dæmonnavnet kan være lidt anderledes, hvis versionen er nyere.
rcctl enable php73_fpm
rcctl start php73_fpm
Konfiguration af MariaDB
MariaDB leverer database-backend til PrestaShop. Fordi MariaDB har brug for flere åbne filer end standardklassen tillader, skal du oprette en speciel klasse i /etc/login.conf.
I bunden af filen skal du tilføje følgende linjer:
mysqld:\
      :openfiles-cur=1024:\
      :openfiles-max=2048:\
      :tc=daemon:
Installer MariaDB.
 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld
Konfigurer MariaDB-sikkerhed.
 mysql_secure_installation
Opret PrestaShop-databasen. Brug en stærk adgangskode.
mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT
Konfiguration af Apache
Back up /etc/apache2/httpd2.conf
cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak
Foretag følgende ændringer til /etc/apache2/httpd2.conf, brug for   #at aktivere og deaktivere moduler.
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
- Der sker flere ændringer i - /etc/apache2/httpd2.confbunden af filen. Fjern- #fra de angivne inkludere-udsagn.
 
- Tilføj Virtual Hosting-linjerne til sidst. - # Server-pool management (MPM specific)
Include /etc/apache2/extra/httpd-mpm.conf
...
# Virtual Hosts
IncludeOptional /etc/apache2/sites/*.conf
 
Opret /etc/apache2/sitesmappen.
mkdir /etc/apache2/sites
Opret /etc/apache2/sites/example.confmed følgende oplysninger:
<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>
Konfigurer Apaches proxy-modul ved at tilføje følgende til /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 konfigurationen, aktiver og start derefter Apache.
apachectl configtest
rcctl enable apache2
rcctl start apache2
Sørg for, at Apache lytter på porte 80 og 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
Installer PrestaShop
Gå til din hjemmeside på http://www.example.com. Installationsguiden til PrestaShop starter.
Når du har fuldført installationen, skal du notere dig butiksfronten og administrative links og slette mappen /var/www/htdocs/prestashop/install.
Aktiver SSL.
- Klik på Butiksparametre
- Klik på Generelt
- Aktiver SSL for alle dele af din butik
Skift din administrative adgangskode. 
- Klik på Avancerede parametre
- Klik på Team
- Skift dit kodeord.
Nogle afsluttende opgaver
Sikkerhedskopier din butik og dens 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*
Fjern doas-adgang for din brugerkonto ved at genskabe doas.conffilen.
echo 'permit keepenv :wheel' > /etc/doas.conf