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 '[email protected]' > /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://[email protected]: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 [email protected]: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 [email protected]
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 [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>

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


Leave a Comment

Cómo instalar Blacklistd en FreeBSD 11.1

Cómo instalar Blacklistd en FreeBSD 11.1

Introducción Cualquier servicio que esté conectado a Internet es un objetivo potencial para ataques de fuerza bruta o acceso injustificado. Hay herramientas como fail2ba

How To Install Apache, MySQL and PHP (FAMP) Stack on FreeBSD 12.0

How To Install Apache, MySQL and PHP (FAMP) Stack on FreeBSD 12.0

Introduction A FAMP stack, which is comparable to a LAMP stack on Linux, is a collection of open-source software that is typically installed together t

Configurar OpenBSD 5.6 con cifrado de disco completo

Configurar OpenBSD 5.6 con cifrado de disco completo

Este tutorial le mostrará cómo configurar OpenBSD 5.6 con un disco completamente encriptado en su Vultr VPS. Una nota sobre la parte de cifrado: la mayoría de los centros de datos alrededor de

Cómo usar Sudo en Debian, CentOS y FreeBSD

Cómo usar Sudo en Debian, CentOS y FreeBSD

Usar un usuario sudo para acceder a un servidor y ejecutar comandos a nivel raíz es una práctica muy común entre Linux y Unix Systems Administrator. El uso de un sud

Cómo instalar osTicket en FreeBSD 12

Cómo instalar osTicket en FreeBSD 12

¿Usando un sistema diferente? osTicket es un sistema de tickets de soporte al cliente de código abierto. El código fuente de osTicket está alojado públicamente en Github. En este tutorial

How to Install Osclass on FreeBSD 12

How to Install Osclass on FreeBSD 12

Using a Different System? Osclass is an open source project that allows you to easily create a classified site without any technical knowledge. Its sourc

How to Install Wiki.js on FreeBSD 11

How to Install Wiki.js on FreeBSD 11

Using a Different System? Wiki.js is a free and open source, modern wiki app built on Node.js, MongoDB, Git and Markdown. Wiki.js source code is publicl

How to Install Lychee 3.1 Photo Album on a FreeBSD 11 FAMP VPS

How to Install Lychee 3.1 Photo Album on a FreeBSD 11 FAMP VPS

Using a Different System? Lychee 3.1 Photo Album is a simple and flexible, free and open source photo-management tool which runs on a VPS server. It install

Installing Fork CMS on FreeBSD 12

Installing Fork CMS on FreeBSD 12

Using a Different System? Fork is an open source CMS written in PHP. Forks source code is hosted on GitHub. This guide will show you how to install Fork CM

Crear archivo de intercambio en FreeBSD 10

Crear archivo de intercambio en FreeBSD 10

Fuera de la caja, los servidores Vultr FreeBSD no están configurados para incluir espacio de intercambio. Si su intención es una instancia de nube desechable, probablemente no necesite

Cómo cambiar el tamaño de un disco en FreeBSD

Cómo cambiar el tamaño de un disco en FreeBSD

El sistema operativo FreeBSD utiliza UFS (Sistema de archivos Unix) para su sistema de archivos de particiones raíz; también conocido como freebsd-ufs en caso de una actualización

How to Install Selfoss RSS Reader on a FreeBSD 11 FAMP VPS

How to Install Selfoss RSS Reader on a FreeBSD 11 FAMP VPS

Using a Different System? Selfoss RSS Reader is a free and open source self-hosted web-based multipurpose, live stream, mashup, news feed (RSS/Atom) reade

How to Install Matomo Analytics on FreeBSD 11

How to Install Matomo Analytics on FreeBSD 11

Using a Different System? Matomo (formerly Piwik) is an open source analytics platform, an open alternative to Google Analytics. Matomo source is hosted o

How to Enable TLS 1.3 in Nginx on FreeBSD 12

How to Enable TLS 1.3 in Nginx on FreeBSD 12

Using a Different System? TLS 1.3 is a version of the Transport Layer Security (TLS) protocol that was published in 2018 as a proposed standard in RFC 8446

How to Install Craft CMS on FreeBSD 12

How to Install Craft CMS on FreeBSD 12

Using a Different System? Introduction Craft CMS is an open source CMS written in PHP. Craft CMS source code is hosted on GitHub. This guide will show yo

Cómo instalar Backdrop CMS en un FreeBSD 11 FAMP VPS

Cómo instalar Backdrop CMS en un FreeBSD 11 FAMP VPS

¿Usando un sistema diferente? Backdrop CMS 1.8.0 es un sistema de administración de contenido (CMS) simple y flexible, amigable para dispositivos móviles, gratuito y de código abierto que nos permite

Cómo instalar ImpressPages CMS 5.0 en un FreeBSD 11 FAMP VPS

Cómo instalar ImpressPages CMS 5.0 en un FreeBSD 11 FAMP VPS

¿Usando un sistema diferente? ImpressPages CMS 5.0 es un sistema de gestión de contenido (CMS) simple y efectivo, gratuito y de código abierto, fácil de usar y basado en MVC

How to Install NodeBB forum on FreeBSD 12

How to Install NodeBB forum on FreeBSD 12

Using a Different System? NodeBB is a Node.js based forum software. It utilizes web sockets for instant interactions and real-time notifications. The NodeB

Install eSpeak on FreeBSD 12

Install eSpeak on FreeBSD 12

Using a Different System? ESpeak can generate text-to-speech (TTS) audio files. These can be useful for many reasons, such as creating your own Turin

Instalar TaskServer (taskd) en FreeBSD 11

Instalar TaskServer (taskd) en FreeBSD 11

¿Usando un sistema diferente? TaskWarrior es una herramienta de gestión de tiempo de código abierto que es una mejora en la aplicación Todo.txt y sus clones. Debido a th

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.