OpenBSD como una solución de comercio electrónico con PrestaShop y Apache

Introducción

Este tutorial muestra OpenBSD como una solución de comercio electrónico con PrestaShop y Apache.

Se requiere Apache porque PrestaShop tiene requisitos complejos de reescritura de URL que no son compatibles con el servidor web incorporado de OpenBSD, httpd. Este tutorial utiliza certificados autofirmados. Utilice un certificado verificado para la producción.

Tareas de preparación

Temporalmente cree un usuario normal con permiso para usar doassin contraseña. Este acceso se eliminará después de la configuración.

user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf

Agregue el repositorio de paquetes de OpenBSD.

echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl

Reenvíe correos electrónicos de estado y seguridad diarios a su dirección.

echo 'hostmaster@example.com' > /root/.forward

Establecer el nombre de host del servidor.

echo 'www.example.com' > /etc/myname
hostname www.example.com

Agregue el FQDN y la dirección IP de su servidor /etc/hosts.
Reemplace 192.0.2.1con su dirección IP Vultr.

127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com

Agregue los paquetes necesarios para PrestaShop y Apache. Elija las últimas versiones cuando se le solicite.

doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip

Creó un certificado SSL autofirmado para la prueba. Establezca el Nombre común en el FQDN de su servidor, por ejemplo, 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

Descargar y extraer PrestaShop

Localice la URL de la última versión de PrestaShop , descárguela /tmpy extráigala /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

Configurar el firewall de OpenBSD (pf)

Configure el firewall para bloquear todo el tráfico entrante, excepto ssh , www y https .

Haga una copia de respaldo de /etc/pf.conf.

cp /etc/pf.conf /etc/pf.conf.bak

Edite /etc/pf.confcomo se muestra.

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

Probar y activar las reglas del firewall.

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf

Configure OpenSMTPD como retransmisión de correo electrónico

Copia de seguridad de su /etc/mail/smtpd.confarchivo.

cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak

Edite /etc/mail/smtpd.confcomo se muestra a continuación.

Notas: * La definición de tabla para secretos contiene el nombre de usuario y la contraseña para la retransmisión de correo. * La acción de salida busca el nombre de usuario y contraseña bajo la etiqueta prestashopde /etc/mail/secretsy transmite el correo electrónico a través de su servidor de correo electrónico.

    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

Reemplace la dirección de correo electrónico y la contraseña con las credenciales que utiliza para su servidor de correo electrónico.

echo "prestashop user@example.com:password" > /etc/mail/secrets

Establecer permisos para asegurar /etc/mail/secrets

chmod 0600 /etc/secrets

Pruebe el archivo de configuración para detectar errores y reinicie el demonio smtpd.

smtpd -n
rcctl restart smtpd

Configurar el entorno PHP y PHP-FPM

Configure el proceso PHP-FPM para escuchar en un socket TCP en lugar de un socket de dominio UNIX.

Realice el siguiente cambio a continuación para el /etc/php-fpm.confarchivo.

...
; 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

Realice algunos cambios adicionales en el entorno PHP en /etc/php-7.3.ini. Este nombre de archivo puede cambiar ligeramente si la versión es más reciente que la 7.3. Estos cambios:

  • Permitir que se carguen archivos más grandes.
  • Deshabilita el entorno chrooteado.
  • Configure PHP para enviar correos electrónicos a través de 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
    

    Habilita los complementos de PHP.

    cp /etc/php-7.3.sample/* /etc/php-7.3/.

Habilite e inicie el demonio PHP-FPM. El nombre del demonio puede ser ligeramente diferente si la versión es más nueva.

rcctl enable php73_fpm
rcctl start php73_fpm

Configurando MariaDB

MariaDB proporciona el backend de la base de datos para PrestaShop. Debido a que MariaDB necesita más archivos abiertos de los que permite la clase predeterminada, cree una clase especial en /etc/login.conf.

Al final del archivo, agregue las siguientes líneas:

mysqld:\
      :openfiles-cur=1024:\
      :openfiles-max=2048:\
      :tc=daemon:

Instala MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configure la seguridad de MariaDB.

 mysql_secure_installation

Crea la base de datos PrestaShop. Utiliza una contraseña segura.

mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT

Configurando Apache

Apoyo /etc/apache2/httpd2.conf

cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak

Realice los siguientes cambios en /etc/apache2/httpd2.conf, #para habilitar y deshabilitar los módulos.

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
  • Se /etc/apache2/httpd2.confproducen varios cambios más en la parte inferior del archivo. Eliminar #de las declaraciones de inclusión indicadas.

  • Agregue las líneas de alojamiento virtual al final.

    # Server-pool management (MPM specific)
    Include /etc/apache2/extra/httpd-mpm.conf
    ...
    # Virtual Hosts
    IncludeOptional /etc/apache2/sites/*.conf
    

Crea el /etc/apache2/sitesdirectorio.

mkdir /etc/apache2/sites

Crea /etc/apache2/sites/example.confcon la siguiente información:

<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>

Configure el módulo proxy de Apache agregando lo siguiente 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>

Pruebe la configuración, luego habilite e inicie Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Asegúrese de que Apache esté escuchando en los puertos 80 y 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

Instalar PrestaShop

Navegue a su sitio web en http://www.example.com. Se iniciará el asistente de instalación de PrestaShop.

Una vez que complete la instalación, tome nota del frente de la tienda y los enlaces administrativos y elimine el directorio /var/www/htdocs/prestashop/install.

Habilitar SSL.

  • Haga clic en Comprar parámetros
  • Haga clic en general
  • Habilite SSL para todas las partes de su tienda

Cambia tu contraseña administrativa.

  • Haga clic en Parámetros avanzados
  • Haga clic en equipo
  • Cambia tu contraseña.

Algunas tareas finales

Copia de seguridad de su tienda y su base de datos:

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*

Elimine el acceso doas para su cuenta de usuario recreando el doas.confarchivo.

echo 'permit keepenv :wheel' > /etc/doas.conf

Dejar un comentario

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.