Introducció
Tasques de preparació
Baixeu i extreu PrestaShop
Configura el tallafoc d'OpenBSD (pf).
Configureu OpenSMTPD com a retransmissió de correu electrònic
Configura l'entorn PHP i PHP-FPM
Configuració de MariaDB
Configurant Apache
Instal·leu PrestaShop
Algunes tasques finals
Introducció
Aquest tutorial mostra OpenBSD com a solució de comerç electrònic que utilitza PrestaShop i Apache.
Apache és necessari perquè PrestaShop té requisits complexos de reescriptura d'URL que no són compatibles amb el servidor web integrat d'OpenBSD, httpd. Aquest tutorial utilitza certificats autofirmats. Si us plau, utilitzeu un certificat verificat per a la producció.
Tasques de preparació
Creeu temporalment un usuari normal que pugui utilitzar-lo doassense contrasenya. Aquest accés s'eliminarà després de la configuració.
user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf
Afegiu el dipòsit de paquets OpenBSD.
echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl
Reenvieu correus electrònics d'estat i seguretat diaris a la vostra adreça.
echo 'hostmaster@example.com' > /root/.forward
Estableix el nom d'amfitrió del servidor.
echo 'www.example.com' > /etc/myname
hostname www.example.com
Afegiu el FQDN i l'adreça IP del vostre servidor a /etc/hosts.
Substituïu-la 192.0.2.1per la vostra adreça IP de Vultr.
127.0.0.1 localhost
::1 localhost
192.0.2.1 www.example.com
Afegiu els paquets necessaris per a PrestaShop i Apache. Trieu les últimes versions quan se us demani.
doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip
S'ha creat un certificat SSL autofirmat per a la prova. Establiu el nom comú al FQDN del vostre servidor, per exemple, 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
Baixeu i extreu PrestaShop
Localitzeu l'URL de l' última versió de PrestaShop , baixeu-lo /tmpi extreu-lo a /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
Configureu el tallafoc per bloquejar tot el trànsit entrant excepte ssh , www i https .
Feu una còpia de seguretat de /etc/pf.conf.
cp /etc/pf.conf /etc/pf.conf.bak
Editeu /etc/pf.confcom es mostra.
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
Proveu i activeu les regles del tallafoc.
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
Feu una còpia de seguretat del vostre /etc/mail/smtpd.conffitxer.
cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak
Editeu /etc/mail/smtpd.confcom es mostra a continuació.
Notes: * La definició de la taula per a secrets conté el nom d'usuari i la contrasenya per a la retransmissió de correu. * L'acció de sortida busca el nom d'usuari i la contrasenya sota l'etiqueta prestashopd'entrada /etc/mail/secretsi transmet el correu electrònic a través del vostre servidor de correu electrònic.
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"
Crear /etc/mail/secrets
Substituïu l'adreça de correu electrònic i la contrasenya per les credencials que utilitzeu per al vostre servidor de correu electrònic.
echo "prestashop user@example.com:password" > /etc/mail/secrets
Estableix els permisos per protegir /etc/mail/secrets
chmod 0600 /etc/secrets
Esteu el fitxer de configuració per detectar errors i reinicieu el dimoni smtpd.
smtpd -n
rcctl restart smtpd
Configureu el procés PHP-FPM per escoltar en un sòcol TCP en lloc d'un sòcol de domini UNIX.
Feu el canvi següent per al /etc/php-fpm.conffitxer.
...
; 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
Feu els canvis següents a /etc/apache2/httpd2.conf, utilitzant #per activar i desactivar els mòduls.
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
Es /etc/apache2/httpd2.confprodueixen diversos canvis més a la part inferior del fitxer. Eliminar #de les declaracions d'inclusió indicades.
Afegiu les línies d'allotjament virtual per últim.
# Server-pool management (MPM specific)
Include /etc/apache2/extra/httpd-mpm.conf
...
# Virtual Hosts
IncludeOptional /etc/apache2/sites/*.conf
Creeu el /etc/apache2/sitesdirectori.
mkdir /etc/apache2/sites
Creeu /etc/apache2/sites/example.confamb la informació següent:
<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>
Configureu el mòdul proxy d'Apache afegint el següent a /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>
Proveu la configuració, després activeu i inicieu Apache.
apachectl configtest
rcctl enable apache2
rcctl start apache2
Assegureu-vos que Apache escolti als ports 80 i 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
Instal·leu PrestaShop
Navegueu al vostre lloc web a http://www.example.com. S'iniciarà l'assistent d'instal·lació de PrestaShop.
Un cop hàgiu completat la instal·lació, tingueu en compte l'aparador de la botiga i els enllaços administratius i suprimiu el directori /var/www/htdocs/prestashop/install.
Activa SSL.
- Feu clic a Paràmetres de la botiga
- Feu clic a General
- Activeu SSL per a totes les parts de la vostra botiga
Canvia la teva contrasenya administrativa.
- Feu clic a Paràmetres avançats
- Feu clic a Equip
- Canvia la teva contrasenya.
Algunes tasques finals
Feu una còpia de seguretat de la vostra botiga i la seva base de dades:
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*
Elimineu l'accés doas al vostre compte d'usuari recreant el doas.conffitxer.
echo 'permit keepenv :wheel' > /etc/doas.conf