Introduksjon
Forberedelsesoppgaver
Last ned og pakk ut PrestaShop
Konfigurer OpenBSDs (pf) brannmur
Konfigurer OpenSMTPD som et e-postrelé
Konfigurer PHP- og PHP-FPM-miljøet
Konfigurerer MariaDB
Konfigurerer Apache
Installer PrestaShop
Noen siste oppgaver
Introduksjon
Denne opplæringen demonstrerer OpenBSD som en e-handelsløsning som bruker PrestaShop og Apache.
Apache er nødvendig fordi PrestaShop har komplekse URL-omskrivingskrav som ikke støttes av OpenBSDs innebygde webserver, httpd. Denne opplæringen bruker selvsignerte sertifikater. Vennligst bruk et bekreftet sertifikat for produksjon.
Forberedelsesoppgaver
Opprett midlertidig en vanlig bruker som har tillatelse til å bruke doasuten passord. Denne tilgangen vil bli fjernet etter oppsett.
user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf
Legg til OpenBSD-pakkelageret.
echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl
Videresend daglig status og sikkerhetse-poster til adressen din.
echo 'hostmaster@example.com' > /root/.forward
Angi vertsnavnet til serveren.
echo 'www.example.com' > /etc/myname
hostname www.example.com
Legg til serverens FQDN og IP-adresse til /etc/hosts.
Erstatt 192.0.2.1med din Vultr IP-adresse.
127.0.0.1 localhost
::1 localhost
192.0.2.1 www.example.com
Legg til de nødvendige pakkene for PrestaShop og Apache. Velg de nyeste versjonene når du blir 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
Laget et selvsignert SSL-sertifikat for testing. Sett Common Name til FQDN til serveren din, 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
Last ned og pakk ut PrestaShop
Finn URL-en til den nyeste versjonen av PrestaShop , last ned til /tmpog pakk ut 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 brannmuren til å blokkere all innkommende trafikk bortsett fra ssh , www og https .
Lag en sikkerhetskopi av /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 brannmurreglene.
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
Sikkerhetskopier /etc/mail/smtpd.conffilen din .
cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak
Rediger /etc/mail/smtpd.confsom vist nedenfor.
Merknader: * Tabelldefinisjonen for hemmeligheter inneholder brukernavnet og passordet for e-postreléet. * Den utgående handlingen slår opp brukernavnet og passordet under etiketten prestashopi /etc/mail/secretsog videresender e-posten via e-postserveren din.
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"
Skape /etc/mail/secrets
Erstatt e-postadressen og passordet med legitimasjonen du bruker for e-postserveren.
echo "prestashop user@example.com:password" > /etc/mail/secrets
Angi tillatelser for å sikre /etc/mail/secrets
chmod 0600 /etc/secrets
Test konfigurasjonsfilen for feil og start smtpd-demonen på nytt.
smtpd -n
rcctl restart smtpd
Konfigurer PHP-FPM-prosessen til å lytte på en TCP-socket i stedet for en UNIX-domenekontakt.
Gjør følgende endring nedenfor for /etc/php-fpm.conffilen.
...
; 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
Gjør noen ekstra endringer i PHP-miljøet i /etc/php-7.3.ini. Dette filnavnet kan endres litt hvis versjonen er nyere enn 7.3. Disse endringene:
- Tillat at større filer kan lastes opp.
- Deaktiver det chrootede miljøet.
Konfigurer PHP til å sende e-post 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-demonen. Daemonnavnet kan være litt annerledes hvis versjonen er nyere.
rcctl enable php73_fpm
rcctl start php73_fpm
Konfigurerer MariaDB
MariaDB leverer databasebackend for PrestaShop. Fordi MariaDB trenger flere åpne filer enn standardklassen tillater, kan du opprette en spesiell klasse i /etc/login.conf.
Legg til følgende linjer nederst i filen:
mysqld:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
Installer MariaDB.
doas su
mysql_install_db
rcctl enable mysqld
rcctl start mysqld
Konfigurer MariaDB-sikkerhet.
mysql_secure_installation
Opprett PrestaShop-databasen. Bruk et sterkt passord.
mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT
Konfigurerer Apache
Sikkerhetskopiere /etc/apache2/httpd2.conf
cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak
Gjør følgende endringer i /etc/apache2/httpd2.conf, bruk for #å 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 webmaster@example.com
ServerName 192.0.2.1:80
Det /etc/apache2/httpd2.confskjer flere endringer i bunnen av filen. Fjern #fra inkluderingsutsagnene som er angitt.
Legg til Virtual Hosting-linjene sist.
# Server-pool management (MPM specific)
Include /etc/apache2/extra/httpd-mpm.conf
...
# Virtual Hosts
IncludeOptional /etc/apache2/sites/*.conf
Opprett /etc/apache2/siteskatalogen.
mkdir /etc/apache2/sites
Opprett /etc/apache2/sites/example.confmed følgende informasjon:
<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>
Konfigurer Apaches proxy-modul ved å legge til følgende i /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 konfigurasjonen, aktiver og start Apache.
apachectl configtest
rcctl enable apache2
rcctl start apache2
Sørg for at Apache lytter på portene 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
Bla til nettstedet ditt på http://www.example.com. Installasjonsveiviseren for PrestaShop vil starte.
Når du har fullført installasjonen, legg merke til butikkfronten og administrative koblinger og slett katalogen /var/www/htdocs/prestashop/install.
Aktiver SSL.
- Klikk på Handleparametere
- Klikk Generelt
- Aktiver SSL for alle deler av butikken din
Endre ditt administrative passord.
- Klikk på Avanserte parametre
- Klikk på Team
- Bytt passord.
Noen siste oppgaver
Sikkerhetskopier butikken 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-tilgang for brukerkontoen din ved å gjenskape doas.conffilen.
echo 'permit keepenv :wheel' > /etc/doas.conf