Cómo instalar ERPNext en Rocky Linux 9
ERPNext es un sistema ERP (Planificación de Recursos Empresariales) de código abierto que puedes implantar en tu empresa. ERPNext puede implantarse en múltiples tipos de industrias, como fabricación, distribución, venta al por menor, comercio, servicios, educación, organizaciones sin ánimo de lucro y sanidad. Además, proporciona módulos como contabilidad, CRM, ventas, compras, sitio web, comercio electrónico, punto de venta, fabricación, almacén, gestión de proyectos, inventario y servicios.
ERPNext es una plataforma ERP empresarial licenciada bajo la Licencia Pública General GNU v3. Está escrita principalmente en Python y Javascript, y desarrollada por Frappe Technologies Pvt. ERPNext es una aplicación escrita bajo el marco frappe, un marco web de código abierto en Python y Javascript.
ERPNext se ha creado como alternativa a servicios como NetSuite de oracle, QAD, Tython, OpenBrave y Odoo. En cuanto a funcionalidad, ERPNext es similar a Odoo (antes OpenERP).
En este tutorial, instalarás ERPNext en un servidor Rocky Linux 9 y luego asegurarás tu instalación con certificados SSL/TLS mediante Certbot y Letsencrypt. También aprenderás a instalar dependencias para ERPNext como Python 3.10 desde el código fuente, Redis que se utilizará como gestor de sesiones, Nginx como servidor web y proxy inverso, Supervisor como gestor de procesos, Fail2ban para la protección contra la fuerza bruta, MariaDB como servidor de base de datos, Node.js y Yarn para construir y compilar archivos estáticos.
ERPNext es una aplicación construida sobre el framework frappe, por lo que también instalarás frappe framework en el proceso mediante frappe-bench.
Requisitos previos
Necesitarás algunos de los siguientes requisitos para completar este tutorial:
- Un servidor Debian 11 – Este ejemplo utiliza un servidor Debian con el nombre de host‘erpnext-rocky‘.
- Un usuario no root con privilegios de administrador sudo/root. Ejecutarás todos los comandos de esta guía como usuario no root.
- Un nombre de dominio apuntando a la dirección IP del servidor.
- Un SELinux ejecutándose en modo permisivo.
Ahora vamos a empezar e instalar ERPNext.
Configurar el usuario
La primera tarea de este tutorial es crear un nuevo usuario dedicado que se utilizará para ejecutar la aplicación ERPNext. También utilizarás este nuevo usuario para ejecutar todos los comandos de instalación y configuración de paquetes.
Ejecuta el siguiente comando para crear un nuevo usuario‘frappe‘. A continuación, configura la contraseña para el usuario ‘frappe‘, introduce la nueva contraseña fuerte y repite la contraseña.
sudo useradd -m -s /bin/bash frappe sudo passwd frappe
Ahora ejecuta el siguiente comando para añadir el usuario «frappe» al grupo«wheel«. Esto permitirá al usuario «frappe» ejecutar el comando sudo convertido en usuario root o ejecutar el comando con privilegios de root.
sudo usermod -aG wheel frappe
Por último, inicia sesión como el usuario «frappe» para verificar y asegurarte de que se ha creado tu usuario. A continuación, ejecuta el comando sudo su para obtener los privilegios de root.
sudo - frappe sudo su
Introduce tu contraseña para el usuario «frappe». Si lo consigues, aparecerá un mensaje como ‘root@hostname:/home/frappe…‘.
Ahora escribe exit o pulsa Ctrl+d para salir del intérprete de comandos root.
Instalación de Python 3.10
ERPNext es una aplicación web creada utilizando el framework web frappe basado en Python. En el momento de escribir esto, la última versión del framework frappe y ERPNext requerían al menos Python 3.10.
En este paso, instalarás Python 3.10 manualmente desde el código fuente en el servidor Rocky Linux 9.
Para empezar, ejecuta el siguiente comando dnf para instalar algunas dependencias básicas para compilar Python 3.10.
sudo dnf install gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make
Introduce y cuando se te solicite y pulsa ENTER para continuar.
A continuación, descarga el código fuente de Python 3.10 mediante el siguiente comando wget.
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz
Una vez descargado Python 3.10, extrae el código fuente de Python y mueve tu directorio de trabajo a él.
tar xzf Python-3.10.9.tgz cd Python-*/
A continuación, ejecuta el siguiente comando para iniciar la compilación de Python 3.10. A continuación, instálalo en tu sistema. Esto instalará los archivos binarios de Python 3.10 en el directorio ‘/usr/local/bin’.
./configure --enable-optimizations nproc sudo make -j2 sudo make altinstall
Ejecuta el siguiente comando para verificar los archivos binarios de Python 3.10. Deberías ver varios archivos binarios de Python, que incluyen Pip3.10.
ls /usr/local/bin
A continuación, para asegurarte de que puedes ejecutar la nueva versión de los comandos de Python, debes añadir el directorio ‘/usr/local/bin‘ al PATH del sistema y al secure_path de visudo.
Ejecuta el siguiente comando del editor nano para abrir un nuevo archivo‘/etc/bashrc‘.
sudo nano /etc/bashrc
Añade la siguiente línea al archivo.
export PATH=$PATH:/usr/local/bin/
Guárdalo y sal cuando hayas terminado.
Ahora ejecuta el siguiente comando para recargar el archivo de configuración ‘/etc/bashrc’. A continuación, comprueba el PATH del sistema.
source /etc/bashrc echo $PATH
Ahora deberías ver que el directorio ‘/usr/local/bin’ se ha añadido a la variable de entorno PATH del sistema.
A continuación, ejecuta el siguiente comando para añadir y modificar el archivo de configuración sudoers.
sudo visudo
Añade el directorio ‘/usr/local/bin’ a la opción‘Defaults secure_path:‘ como se indica a continuación.
Defaults secure_path=....:/usr/local/bin
Guarda el archivo y sal del editor cuando hayas terminado.
Ahora ejecuta el binario Python3.10 y Pip3.10 mediante el comando sudo como se indica a continuación.
sudo python3.10 --version sudo pip3.10 --version
Deberías recibir una salida similar a esta – Python 3.10 está instalado desde el código fuente en tu servidor Rocky Linux.
En el siguiente paso, instalarás y configurarás el Servidor MariaDB para ERPNext.
Instalar y configurar el servidor MariaDB
En la instalación por defecto, ERPNext utilizará MySQL/MariaDB como servidor de base de datos. ERPNext requiere una versión específica de MySQL/MariaDB para la instalación. En el momento de escribir esto, la última versión de ERPNext requería MariaDB 10.6.
En este paso, instalarás el servidor MariaDB 10.6 desde el repositorio oficial de MariaDB. A continuación, añadirás configuraciones a tu Servidor MariaDB y asegurarás la implementación del Servidor MariaDB.
Ejecuta el siguiente comando para añadir el repositorio MariaDB v10.6.
sudo curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-10.6"
Recibirás una salida como ésta.
A continuación, ejecuta el siguiente comando dnf para instalar los paquetes de MariaDB. Introduce y cuando se te pida confirmación y pulsa ENTER para continuar.
sudo dnf install MariaDB-server MariaDB-client
Además, cuando se te pida que aceptes la clave GPG del repositorio de MariaDB, introduce y y pulsa INTRO.
Una vez instalado el servidor MariaDB, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio MariaDB.
sudo systemctl start mariadb sudo systemctl enable mariadb
Ahora verifica el servicio MariaDB mediante el siguiente comando. Deberías ver que el servicio MariaDB se está ejecutando y debería estar habilitado, lo que significa que se iniciará automáticamente al arrancar.
sudo systemctl status mariadb
Con el servidor MariaDB en ejecución, empezarás a configurar MariaDB como se requiere para ERPNext.
Abre el archivo de configuración de MariaDB ‘/etc/my.cnf.d/server.cnf‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/my.cnf.d/server.cnf
Añade las siguientes líneas a la sección ‘[mysqld]‘. Esto habilitará el formato barracuda en tu MariaDB. Además, configurará el juego de caracteres por defecto a utf8mb4.
[mysqld] innodb-file-format=barracuda innodb-file-per-table=1 innodb-large-prefix=1 character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
Guarda y sal del archivo cuando hayas terminado.
A continuación, abre otro archivo de configuración de MariaDB‘/etc/my.cnf.d/mysql-clients.cnf‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/my.cnf.d/mysql-clients.cnf
Añade la siguiente línea a la sección ‘[mysql]‘. Esto establecerá siempre el juego de caracteres del cliente en utf8mb4.
[mysql] default-character-set = utf8mb4
Guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio MariaDB y aplicar los cambios.
sudo systemctl restart mariadb
Ejecuta el siguiente comando‘mariadb-secure-installation‘ para asegurar la instalación de MariaDB. A continuación, se te pedirá que configures la contraseña raíz de MariaDB, así que asegúrate de introducir y repetir la nueva contraseña. Para el resto de configuraciones, introduce Y para confirmar y pulsa ENTER.
sudo mariadb-secure-installation
Con esto, ya has terminado la instalación y configuración del Servidor MariaDB. En el siguiente paso, instalarás Redis, Nginx y Supervisor en tu máquina Rocky Linux.
Instalación de dependencias desde el repositorio Rocky Linux
En este paso, instalarás algunas dependencias para la instalación de ERPNxt, esto incluye la instalación de Redis que se utilizará como gestor de sesiones, Nginx como servidor web, Supervisor como gestor de procesos, y Fail2ban que protege tu ERPNext contra ataques de fuerza bruta.
La mayoría de los paquetes que vas a instalar aquí están disponibles por defecto en el repositorio AppStream de Rocky Linux. Pero también debes asegurarte de que el repositorio de terceros, como EPEL, está disponible en tu sistema.
Ejecuta el siguiente comando dnf para instalar Redis, Nginx, Supervisory Fail2ban a tu sistema Rocky Linux.
sudo dnf install redis nginx supervisor fail2ban
Cuando se te pida confirmación, introduce Y y pulsa ENTER para continuar.
Una vez finalizada la instalación del paquete, ejecuta los siguientes comandos systemctl para iniciar y habilitar los servicios. A continuación, verifica cada servicio para asegurarte de que se está ejecutando.
Inicia y habilita el servicio Redis, luego verifica Redis para asegurarte de que se está ejecutando.
sudo systemctl start redis sudo systemctl enable redis
sudo systemctl status redis
Recibirás una salida similar a ésta.
A continuación, inicia y habilita el servicio Nginx, luego verifica Nginx para asegurarte de que el servicio se está ejecutando.
sudo systemctl start nginx sudo systemctl enable nginx
sudo systemctl status nginx
Recibirás una salida similar a ésta.
Después, inicia el servicio Supervisor y habilítalo. A continuación, verifica el servicio Supervisor para asegurarte de que se está ejecutando.
sudo systemctl start supervisord sudo systemctl enable supervisord
sudo systemctl status supervisord
A continuación se muestra la salida que deberías obtener en la pantalla de tu terminal.
Y por último, para el servicio Fail2ban, inícialo y habilítalo mediante la utilidad de comandos systemctl que aparece a continuación. A continuación, verifica el servicio Fail2ban para asegurarte de que se está ejecutando.
sudo systemctl start fail2ban sudo systemctl enable fail2ban
sudo systemctl status fail2ban
Ahora deberías ver que el estado del servicio Fail2ban es en ejecución.
Ahora, una vez completada esta sección y verificado que los servicios Redis, Nginx, Supervisor y Fail2ban están en ejecución. Pasa a la siguiente sección para instalar el gestor de paquetes Node.js y Yarn.
Instalación de Nodejs 16 y Yarn
La última versión de ERPNext es la v14, por lo que se requiere al menos el gestor de paquetes Node.js 16 y Yarn. En este paso, configurarás el repositorio Nodesource para Node.js v16 y añadirás el repositorio Yarn para la distribución RHEL. A continuación, instalarás tanto Node.js como yarn mediante DNF.
Primero, ejecuta el siguiente comando para añadir el repositorio Nodesource para Node.js v16 para las distribuciones RHEL.
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
El script detectará automáticamente la versión de la distribución RHEL actual y añadirá el repositorio Nodesource.
Para el repositorio Yarn, ejecuta el siguiente comando para descargar el repositorio y añadirlo a tu sistema.
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
A continuación se muestra la salida que deberías recibir en tu terminal.
Ahora que los repositorios Nodesource y Yarn están añadidos a tu sistema Rocky Linux, es hora de instalar el gestor de paquetes Node.js y Yarn mediante DNF.
Ejecuta el siguiente comando dnf para instalar Node.js y Yarn en tu sistema. Introduce y cuando te pida confirmación y pulsa ENTER para continuar.
sudo dnf install gcc-c++ make nodejs yarn
La instalación de Node.js y Yarn debería comenzar.
Además, cuando se te pregunte por la clave GPG para ambos repositorios, introduce y y pulsa ENTER para añadir la clave GPG a tu sistema.
Ahora que el gestor de paquetes Node.js y Yarn está instalado, a continuación instalarás el paquete Wkhtmltopdf mediante un archivo RPM.
Instalación de Wkhtmltopdf
En este paso, instalarás el paquete Wkhtmltopdf que utilizará ERPNext para generar informes PDF. El Wkhtmltopdf puede descargarse e instalarse manualmente mediante el archivo .deb o el archivo .rpm.
En primer lugar, ejecuta el siguiente comando dnf para instalar las dependencias del paquete Wkhtmltopdf.
sudo dnf install fontconfig freetype libX11 libXext libXrender libjpeg libpng xorg-x11-fonts-75dpi xorg-x11-fonts-Type1
Introduce y cuando te lo pida y pulsa ENTER para continuar.
A continuación, ejecuta el siguiente comando rpm para descargar e instalar el paquete Wkhtmltopdf en tu sistema Rocky Linux.
sudo rpm -Uvh https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
Una vez instalado el paquete Wkhtmltopdf, ejecuta los siguientes comandos para verificar la instalación.
El paquete Wkhtmltopdf proporciona dos herramientas de línea de comandos, el comando wkhtmltopdf se utiliza para convertir una página HTML a PDF, mientras que el wkhtmltoimage convierte la página HTML a varios formatos de imagen.
which wkhtmltopdf which wkhtmltoimage
wkhtmltopdf --version wkhtmltoimage --version
Recibirás una salida similar a ésta: El paquete Wkhtmltopdf v0.12 está instalado en tu sistema Rocky Linux.
Llegados a este punto, habrás finalizado la instalación de las dependencias de los paquetes para ERPNext y frappeframework. Esto incluye los paquetes Python3.10, Redis, Nginx, Supervisor, Fail2ban, MariaDB Server y Wkhtmltopdf.
En la siguiente sección, iniciarás la instalación de ERPNext. Pero antes, instalarás y configurarás el frappeframework.
Instalación de frappeframework a través del banco
ERPNext es un software ERP de código abierto creado con frappeframework, que está escrito en Python y JavaScript. El ERPNext se ejecutará dentro del frappeframework, por lo que debes instalar el frappeframework en tu sistema y, a continuación, podrás instalar el ERPNext.
Así que primero, debes instalar el banco. Después, instala el frappeframework a través del banco. Por último, instalarás la aplicación ERPNext dentro del frappeframework.
Ejecuta el siguiente comando pip3.10 para instalar ‘bench’ desde el repositorio PyPI.
sudo pip3.10 install frappe-bench
Recibirás una salida similar a ésta durante la instalación del banco.
Una vez instalado el banco, ejecuta el siguiente comando para verificarlo.
which bench bench --version
Recibirás la ruta binaria del comando ‘bench‘ y la versión actual del bench que has instalado.
Con el banco instalado, a continuación instalarás el framework frappe mediante el comando «bench».
Ejecuta el siguiente comando ‘bench‘ para instalar el framework frappe en tu directorio de trabajo actual. Además, especificarás la versión de Python que se utilizará a Python 3.10, especifica la versión del framework frappe a v14. El directorio de instalación de destino es ‘frappe-bench’.
bench init --python python3.10 --frappe-branch version-14 frappe-bench
Recibirás una salida similar a ésta durante la instalación de frappeframework.
Una vez finalizada la instalación de frappe framework, deberías recibir la siguiente salida.
Por último, ejecuta el siguiente comando para permitir que otros usuarios lean y ejecuten en el directorio de instalación de frappe framework ‘/home/frappe/frappe-bench’. Esto es necesario para que el servidor web Nginx pueda leer y ejecutar el framework frappe.
sudo chmod -R o+rx /home/frappe/frappe-bench or sudo chmod -R o+rx /home/frappe
Con el marco frappe instalado, estarás listo para instalar y configurar ERPNext.
Configurar una nueva aplicación en Frappe
Antes de instalar ERPNext, debes crear un nuevo sitio/proyecto en el framework frappe. En este paso, crearás un nuevo sitio/proyecto y cambiarás el entorno al nuevo proyecto a través del banco.
En primer lugar, mueve tu directorio de trabajo a «frappe-bench » mediante el comando cd.
cd ~/frappe-bench
Ejecuta el comando bench que aparece a continuación para crear un nuevo sitio/proyecto para el ERPNext. En este ejemplo, crearás un nuevo sitio«erp.hwdomain.io«, que es el nombre de dominio de destino de la instalación de ERPNext. Además, durante el proceso de configuración, se te pedirá que configures la contraseña de administrador para tu proyecto, así que introduce tu contraseña y repite. Esta contraseña se utilizará para iniciar sesión en tu aplicación ERPNext.
bench new-site erp.hwdomain.io
Por último, ejecuta el siguiente comando para cambiar al nuevo sitio/proyecto«erp.hwdomain.io«.
bench use erp.hwdomain.io
A continuación se muestra la salida durante la creación del sitio/proyecto y después de cambiar al nuevo sitio/proyecto.
Instalar ERPNext a través del banco
En este paso, iniciarás la instalación de ERPNext dentro del proyecto frappe framework que has creado.
En primer lugar, ejecuta el siguiente comando para descargar las aplicaciones«pagos» y«erpnext«. En este ejemplo, descargarás el ERPNexxt v14.
bench get-app payments bench get-app --branch version-14 erpnext
A continuación se muestra una salida similar que recibirás durante el proceso de descarga de «pagos«.
Y a continuación se muestra el proceso de descarga de la aplicación ERPNext.
A continuación, ejecuta el siguiente comando para instalar la aplicación ERPNext en el sitio/proyecto «erp.hwdomain.io».
bench --site erp.hwdomain.io install-app erpnext
Recibirás una salida similar a ésta – También deberías ver que la aplicación«pagos» se instala automáticamente como dependencia de la aplicación ERPNext.
Por último, ejecuta el siguiente comando de banco para activar el programador y desactivar el modo de mantenimiento en el sitio/proyecto de ERPNext «erp.hwdomain.io».
bench --site erp.hwdomain.io enable-scheduler bench --site erp.hwdomain.io set-maintenance-mode off
En este punto, la instalación de ERPNext ha finalizado. En los siguientes pasos, configurarás el servidor web Nginx y el Supervisor para el despliegue de ERPNext en producción, que se puede configurar mediante el comando bench.
Configurar el despliegue para ERPNext
En primer lugar, ejecuta el siguiente comando para empezar a configurar frappe framework y ERPNext para el entorno de producción. Esto instalará Ansible y configurará el despliegue de ERPNext automáticamente mediante Ansible.
sudo bench setup production frappe
A continuación se muestra la salida durante la instalación de Ansible.
A continuación se muestra la salida una vez finalizada la configuración.
A continuación, ejecuta el siguiente comando de banco para configurar Nginx y Supervisor para ERPNext. Cuando se te pregunte si deseas sobrescribir la configuración actual, introduce y para confirmar y pulsa INTRO.
sudo bench setup supervisor sudo bench setup nginx
Después, vuelve a ejecutar el comando de banco que aparece a continuación para asegurarte de que las configuraciones de Supervisor y Nginx están instaladas.
sudo bench setup production frappe
Introduce y para sobrescribir la configuración actual y pulsa INTRO para continuar.
A continuación, abre la configuración del Supervisor‘/etc/supervisor.conf‘ mediante el siguiente comando del editor nano.
sudo nano /etc/supervisor.conf
Asegúrate de que tienes la siguiente línea en la sección ‘[include]‘. Si no es así, puedes cambiar el formato a ‘*.conf‘ como se indica a continuación.
[include] file = /etc/supervisord.d/*.conf
Guarda el archivo y sal de él cuando hayas terminado.
Ahora ejecuta la utilidad de comandos systemctl que aparece a continuación para reiniciar el servicio Supervisor y aplicar los cambios.
sudo systemctl restart supervisord
Por último, ejecuta el siguiente comando‘supervisorctl‘ con privilegios sudo. Esto verificará todos los procesos y servicios que utiliza frappe framework y ERPNext.
sudo supervisorctl status
Si la instalación de ERPNext se ha realizado correctamente, deberías recibir una salida similar a la siguiente: Todos los servicios de ERPNext se están ejecutando.
En este punto, ya tienes la instalación de ERPNext terminada y se está ejecutando con Nginx como servidor web y Supervisor para el gestor de procesos. Ahora puedes acceder a tu instalación de ERPNext a través de tu nombre de dominio y el navegador web.
Configurar ERPNext
Abre tu navegador web y visita el nombre de dominio de tu instalación de ERPNext (es decir: http://erp.hwdomain.io/). Verás la página de inicio de sesión de frappe framework.
Introduce el usuario por defecto«Administrador» e introduce la contraseña que has utilizado durante la creación del sitio/proyecto.
Ahora selecciona el idioma, la zona horaria y la moneda por defecto. A continuación, haz clic en Siguiente.
Introduce el nuevo usuario administrador para tu instalación de ERPNext. Introduce tu nombre completo, dirección de correo electrónico y contraseña, y haz clic en Siguiente.
Introduce el nombre de la empresa y sube el logotipo de tu empresa, luego haz clic en Siguiente.
Introduce detalles sobre tu organización y haz clic en Finalizar configuración.
Ahora deberías ver el panel de administración de tu instalación de ERPNext.
Protección con certificados SSL/TLS mediante Certbot y Letsencrypt
En este último paso, protegerás ERPNext con certificados SSL/TLS mediante la herramienta Certbot y Letsencrypt. Antes de empezar, asegúrate de que tu nombre de dominio apunta a la dirección IP de tu servidor, y asegúrate de que tienes una dirección de correo electrónico válida que utilizarás para registrarte en Letsencrypt.
Instala la herramienta Certbot y el plugin Certbot Nginx mediante el siguiente comando dnf. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.
sudo dnf install certbot python3-certbot-nginx
Una vez instalado certbot, ejecuta el siguiente comando certbot para generar certificados SSL para tu nombre de dominio ERPNext. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.
sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email protected] -d erp.hwdomain.io
Con esto, la instalación de ERPNext está ahora protegida con certificados SSL/TLS a través de Certbot y Letsencrypt. También has configurado la redirección automática HTTP a HTTPS en tu nombre de dominio ERPNext, que Certbot gestiona automáticamente.
Conclusión
En este tutorial, has aprendido a instalar ERPNext, un software ERP de código abierto, en un servidor Rocky Linux 9. También has aprendido la instalación de algunas dependencias como Python 3.10, que se instala manualmente compilando el código fuente e instalándolo. Otras dependencias que también has instalado son MariaDB Server, Nginx, Supervisor, Redis y Fail2ban.
También has aprendido a instalar el framework frappe y has instalado ERPNext sobre él. A continuación, has aprendido la configuración básica de ERPNext como software ERP.
Por último, también has desplegado ERPNext para producción configurando Nginx como servidor web y Supervisor como gestor de procesos. También has asegurado el despliegue de ERPNext mediante Certbot y Letsencrypt.