Bevezetés
Felkészülési feladatok
Töltse le és bontsa ki a PrestaShop szolgáltatást
Az OpenBSD (pf) tűzfalának beállítása
Az OpenSMTPD konfigurálása e-mail továbbítóként
Állítsa be a PHP és a PHP-FPM környezetet
A MariaDB konfigurálása
Apache konfigurálása
Telepítse a PrestaShop-ot
Néhány végső feladat
Bevezetés
Ez az oktatóanyag az OpenBSD-t mint e-kereskedelmi megoldást mutatja be PrestaShop és Apache használatával.
Az Apache azért szükséges, mert a PrestaShop összetett URL-újraírási követelményekkel rendelkezik, amelyeket az OpenBSD beépített webszervere, a httpd nem támogat. Ez az oktatóanyag önaláírt tanúsítványokat használ. A gyártáshoz használjon ellenőrzött tanúsítványt.
Felkészülési feladatok
Ideiglenesen hozzon létre egy normál felhasználót doas, amely jelszó nélkül használható . Ez a hozzáférés a beállítás után megszűnik.
user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf
Adja hozzá az OpenBSD csomagtárat.
echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl
Továbbítsa a napi állapot- és biztonsági e-maileket az Ön címére.
echo 'hostmaster@example.com' > /root/.forward
Állítsa be a szerver gazdagépnevét.
echo 'www.example.com' > /etc/myname
hostname www.example.com
Adja hozzá szervere FQDN-jét és IP-címét a /etc/hosts.
Cserélje 192.0.2.1ki a Vultr IP-címét.
127.0.0.1 localhost
::1 localhost
192.0.2.1 www.example.com
Adja hozzá a szükséges csomagokat a PrestaShop és az Apache számára. Amikor a rendszer kéri, válassza ki a legújabb verziókat.
doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip
Létrehozott egy önaláírt SSL-tanúsítványt teszteléshez. Állítsa be a Common Name beállítást a kiszolgáló FQDN-jére, pl. 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
Töltse le és bontsa ki a PrestaShop szolgáltatást
Keresse meg a PrestaShop legfrissebb verziójának URL-jét , töltse le ide, /tmpés csomagolja ki ide /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
Állítsa be a tűzfalat úgy, hogy az ssh , www és https kivételével minden bejövő forgalmat blokkoljon .
Készítsen biztonsági másolatot a /etc/pf.conf.
cp /etc/pf.conf /etc/pf.conf.bak
Szerkessze /etc/pf.confa képen látható módon.
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
Tesztelje és aktiválja a tűzfalszabályokat.
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
Készítsen biztonsági másolatot a /etc/mail/smtpd.conffájlról.
cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak
Szerkessze /etc/mail/smtpd.confaz alábbiak szerint.
Megjegyzések: * A titkok táblázatdefiníciója tartalmazza a levéltovábbító felhasználónevét és jelszavát. * A kimenő művelet megkeresi a felhasználónevet és a jelszót a címke prestashopalatt, /etc/mail/secretsés továbbítja az e-mailt az e-mail kiszolgálón keresztül.
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://prestashop@mail.example.com:587 \
tls no-verify auth <secrets>
match from local for local action "local_mail"
match from local for any action "outbound"
Teremt /etc/mail/secrets
Cserélje ki az e-mail címet és jelszót az e-mail szerverhez használt hitelesítő adatokra.
echo "prestashop user@example.com:password" > /etc/mail/secrets
Állítsa be a biztonsághoz szükséges engedélyeket /etc/mail/secrets
chmod 0600 /etc/secrets
Keresse meg a konfigurációs fájlt a hibákért, és indítsa újra az smtpd démont.
smtpd -n
rcctl restart smtpd
Állítsa be a PHP-FPM folyamatot úgy, hogy UNIX tartományi socket helyett TCP-foglalatban figyeljen.
Hajtsa végre a következő módosítást a /etc/php-fpm.conffájlon.
...
; 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
Végezzen néhány további módosítást a PHP-környezetben /etc/php-7.3.ini. Ez a fájlnév kissé módosulhat, ha a verzió 7.3-nál újabb. Ezek a változások:
- Lehetővé teszi nagyobb fájlok feltöltését.
- A chrootolt környezet letiltása.
Állítsa be a PHP-t úgy, hogy sendmailen keresztül küldjön e-mailt.
; 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
Engedélyezze a PHP bővítményeket.
cp /etc/php-7.3.sample/* /etc/php-7.3/.
Engedélyezze és indítsa el a PHP-FPM démont. A démon neve kissé eltérhet, ha a verzió újabb.
rcctl enable php73_fpm
rcctl start php73_fpm
A MariaDB konfigurálása
A MariaDB biztosítja a PrestaShop adatbázis-háttérrendszerét. Mivel a MariaDB-nek több nyitott fájlra van szüksége, mint amennyit az alapértelmezett osztály lehetővé tesz, hozzon létre egy speciális osztályt a /etc/login.conf.
A fájl alján adja hozzá a következő sorokat:
mysqld:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
Telepítse a MariaDB-t.
doas su
mysql_install_db
rcctl enable mysqld
rcctl start mysqld
Állítsa be a MariaDB biztonságot.
mysql_secure_installation
Hozd létre a PrestaShop adatbázist. Használjon erős jelszót.
mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT
Apache konfigurálása
Biztonsági mentés /etc/apache2/httpd2.conf
cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak
Végezze el a következő módosításokat /etc/apache2/httpd2.confsegítségével #engedélyezheti és letilthatja a modulokat.
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 webmaster@example.com
ServerName 192.0.2.1:80
Számos további változás /etc/apache2/httpd2.conftörténik a fájl alján. Távolítsa #el a feltüntetett állítások közül.
Utoljára adja hozzá a Virtuális tárhely sorokat.
# Server-pool management (MPM specific)
Include /etc/apache2/extra/httpd-mpm.conf
...
# Virtual Hosts
IncludeOptional /etc/apache2/sites/*.conf
Hozza létre a /etc/apache2/siteskönyvtárat.
mkdir /etc/apache2/sites
Hozzon létre /etc/apache2/sites/example.confa következő adatokkal:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
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 webmaster@example.com
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>
Állítsa be az Apache proxy modulját a következők hozzáadásával /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>
Tesztelje a konfigurációt, majd engedélyezze és indítsa el az Apache-t.
apachectl configtest
rcctl enable apache2
rcctl start apache2
Győződjön meg arról, hogy az Apache figyel a 80-as és 443-as portokon.
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
Telepítse a PrestaShop-ot
Böngésszen a webhelyére a következő címen: http://www.example.com. Elindul a PrestaShop telepítővarázsló.
A telepítés befejezése után vegye figyelembe az áruház első és adminisztratív hivatkozásait, és törölje a könyvtárat /var/www/htdocs/prestashop/install.
SSL engedélyezése.
- Kattintson a Shop Parameters elemre
- Kattintson az Általános elemre
- Engedélyezze az SSL-t az üzlet minden részén
Módosítsa a rendszergazdai jelszót.
- Kattintson a Speciális paraméterek elemre
- Kattintson a Csapat elemre
- Változtasd meg a jelszavadat.
Néhány végső feladat
Készítsen biztonsági másolatot az üzletéről és annak adatbázisáról:
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*
A doas.conffájl újbóli létrehozásával távolítsa el felhasználói fiókja doas-hozzáférését .
echo 'permit keepenv :wheel' > /etc/doas.conf