Įvadas
											
										
																			
											
												Paruošimo užduotys
											
										
																			
											
												Atsisiųskite ir išskleiskite PrestaShop
											
										
																			
											
												Konfigūruoti OpenBSD (pf) ugniasienę
											
										
																			
											
												Konfigūruokite „OpenSMTPD“ kaip el. pašto relę
											
										
																			
											
												Sukonfigūruokite PHP ir PHP-FPM aplinką
											
										
																			
											
												„MariaDB“ konfigūravimas
											
										
																			
											
												„Apache“ konfigūravimas
											
										
																			
											
												Įdiekite PrestaShop
											
										
																			
											
												Kai kurios baigiamosios užduotys
											
										
																	
												
Įvadas
Ši pamoka parodo OpenBSD kaip el. prekybos sprendimą naudojant PrestaShop ir Apache.
Apache reikalinga, nes PrestaShop turi sudėtingus URL perrašymo reikalavimus, kurių nepalaiko OpenBSD integruotas žiniatinklio serveris httpd. Šioje mokymo programoje naudojami savarankiškai pasirašyti sertifikatai. Gamindami naudokite patvirtintą sertifikatą.
Paruošimo užduotys
Laikinai sukurti įprastą vartotoją, kuriam leidžiama naudoti doasbe slaptažodžio. Ši prieiga bus pašalinta po sąrankos.
user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf
Pridėkite OpenBSD paketų saugyklą. 
echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl
Persiųskite kasdienius būsenos ir saugos el. laiškus savo adresu. 
echo '[email protected]' > /root/.forward
Nustatykite serverio pagrindinio kompiuterio pavadinimą.
echo 'www.example.com' > /etc/myname
hostname www.example.com
Pridėkite savo serverio FQDN ir IP adresą prie   /etc/hosts. 
Pakeiskite 192.0.2.1savo Vultr IP adresu.
127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com
Pridėkite reikiamus PrestaShop ir Apache paketus. Kai būsite paraginti, pasirinkite naujausias versijas.
doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip
Sukurtas savarankiškai pasirašytas SSL sertifikatas testavimui. Nustatykite bendrąjį pavadinimą į savo serverio FQDN, pvz., 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
Atsisiųskite ir išskleiskite PrestaShop
Raskite naujausios PrestaShop versijos URL , atsisiųskite /tmpir išskleiskite į /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
Sukonfigūruokite ugniasienę, kad blokuotų visą gaunamą srautą, išskyrus ssh , www ir https .
Padarykite atsarginę kopiją /etc/pf.conf.
cp /etc/pf.conf /etc/pf.conf.bak
Redaguoti /etc/pf.confkaip parodyta.
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
Išbandykite ir suaktyvinkite ugniasienės taisykles.
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
Sukurkite /etc/mail/smtpd.conffailo atsarginę kopiją .
cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak
Redaguokite, /etc/mail/smtpd.confkaip parodyta žemiau.
Pastabos: * Paslapčių lentelės apibrėžime yra pašto perdavimo naudotojo vardas ir slaptažodis. * Išvykstamojo veiksmai atrodo iki vartotojo vardą ir slaptažodį pagal etiketėje prestashopį /etc/mail/secretsir relės el.pašto per savo elektroninio pašto 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"
Sukurti /etc/mail/secrets
Pakeiskite el. pašto adresą ir slaptažodį kredencialais, kuriuos naudojate el. pašto serveryje.
echo "prestashop [email protected]:password" > /etc/mail/secrets
Nustatykite leidimus, kad apsaugotumėte /etc/mail/secrets
chmod 0600 /etc/secrets
Patikrinkite konfigūracijos failą dėl klaidų ir iš naujo paleiskite smtpd demoną.
smtpd -n
rcctl restart smtpd
Sukonfigūruokite PHP-FPM procesą, kad klausytumėte TCP lizdo, o ne UNIX domeno lizdo. 
Atlikite toliau nurodytus /etc/php-fpm.conffailo pakeitimus.
...
; 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
Atlikite keletą papildomų PHP aplinkos pakeitimų   /etc/php-7.3.ini. Šis failo pavadinimas gali šiek tiek pasikeisti, jei versija yra naujesnė nei 7.3. Šie pakeitimai:
- Leisti įkelti didesnius failus. 
- Išjungti chrootuotą aplinką.
- Sukonfigūruokite PHP siųsti el. paštą per 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
 - Įgalinkite PHP papildinius. - cp /etc/php-7.3.sample/* /etc/php-7.3/. 
Įjunkite ir paleiskite PHP-FPM demoną. Demono pavadinimas gali šiek tiek skirtis, jei versija yra naujesnė.
rcctl enable php73_fpm
rcctl start php73_fpm
„MariaDB“ konfigūravimas
„MariaDB“ teikia „PrestaShop“ duomenų bazės užpakalinę programą. Kadangi MariaDB reikia daugiau atidarytų failų, nei leidžia numatytoji klasė, sukurkite specialią klasę /etc/login.conf.
Failo apačioje pridėkite šias eilutes:
mysqld:\
      :openfiles-cur=1024:\
      :openfiles-max=2048:\
      :tc=daemon:
Įdiekite MariaDB.
 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld
Konfigūruokite MariaDB saugumą.
 mysql_secure_installation
Sukurkite PrestaShop duomenų bazę. Naudokite stiprų slaptažodį.
mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT
„Apache“ konfigūravimas
Atgal į viršų /etc/apache2/httpd2.conf
cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak
Atlikite toliau nurodytus pakeitimus /etc/apache2/httpd2.confnaudodami ,   #kad įjungtumėte ir išjungtumėte modulius.
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.confFailo apačioje atsiranda dar keletas pakeitimų . Pašalinkite- #nurodytus teiginius iš įtraukimo.
 
- Virtualiojo prieglobos eilutes pridėkite paskutinę. - # Server-pool management (MPM specific)
Include /etc/apache2/extra/httpd-mpm.conf
...
# Virtual Hosts
IncludeOptional /etc/apache2/sites/*.conf
 
Sukurkite /etc/apache2/siteskatalogą.
mkdir /etc/apache2/sites
Sukurkite /etc/apache2/sites/example.confnaudodami šią informaciją:
<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>
Sukonfigūruokite „Apache“ tarpinio serverio modulį, pridėdami toliau nurodytus elementus /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>
Išbandykite konfigūraciją, tada įjunkite ir paleiskite „Apache“.
apachectl configtest
rcctl enable apache2
rcctl start apache2
Įsitikinkite, kad „Apache“ klausosi 80 ir 443 prievaduose.
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
Įdiekite PrestaShop
Naršykite savo svetainėje adresu http://www.example.com. Bus paleistas PrestaShop diegimo vedlys.
Baigę diegti, atkreipkite dėmesį į parduotuvės priekinę ir administracines nuorodas ir ištrinkite katalogą /var/www/htdocs/prestashop/install.
Įgalinti SSL.
- Spustelėkite Parduotuvės parametrai
- Spustelėkite Bendra
- Įgalinkite SSL visose parduotuvės dalyse
Pakeiskite administratoriaus slaptažodį. 
- Spustelėkite Išplėstiniai parametrai
- Spustelėkite Komanda
- Pasikeiskite slaptažodį.
Kai kurios baigiamosios užduotys
Parduotuvės ir jos duomenų bazės atsarginė kopija:
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*
Pašalinkite prieigą prie savo vartotojo paskyros iš naujo sukurdami doas.conffailą.
echo 'permit keepenv :wheel' > /etc/doas.conf