COMMUNITY - COMPONENTE ERP

ID:

Ver:

1.0.0.0

ErpNext - Manual de Instalación (Centos 7)

Pág  de  

Grupo de Investigación y Desarrollo de

Tecnologías de la Información

ERPNext

Manual de Instalación Centos 7

Historial de Cambios

Versión

Fecha

Descripción cambios

Responsable(s)

0.0.0.1

Contenido

Vargas, S.

1.0.0.0

Contenido

Coronado, C.

Tabla: Cuadro historial de versiones


Tabla de Contenido

Preliminares

Crear un Usuario para el Sistema

Permitir conexión por SSH

Actualizar el Sistema

Instalar los prerrequisitos

Python 2.7

Node.js

MariaDB

Redis

WKHTMLtoPDF

PIP

Instalar Frappe Bench

Instalar ERPNext

Habilitar como Entorno de Producción

Borrar un sitio después de creado

Desinstalar Frappe

Problemas Comunes

Mensaje

Solución

Mensaje

Solución

Licencia


Este modo de instalación solo se recomienda para casos específicos en donde se quiera cambiar alguno de los parámetros predeterminados de la instalación. En la mayoría de los casos es adecuado seguir el manual simplificado.

Preliminares

ERPNext está basado en un marco de desarrollo para lenguaje Python denominado Frappe. Tiene como base de datos MariaDB  y Redis.

Para poder instalar ERPNext es necesario instalar Frappe-bench, un  programa de línea de comandos que se utiliza como instalador y gestor de sitios para el marco de trabajo Frappe.

Instalación via Script

La forma más simple y sencilla de instalar ERPNext es utilizando el script de instalación que provee el grupo de desarrollo de ERPNext:

Tener en cuenta que SELinux debe estar en modo permissive.

$ wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh[1]

# bash setup_frappe.sh --setup-production

Verificar que en el archivo /etc/nginx/nginx.conf no exista la sección server, si existe borrarla y reiniciar nginx (systemctrl nginx restart).

Instalación Manual[2]

El script de instalación no es más que la automatización de los siguientes pasos:

Crear un Usuario para el Sistema[3]

Si aún no se cuenta con un usuario específico (que no sea root) es necesario crearlo.

# adduser erpnext

# passwd erpnext

Habilitar que el usuario ejecute comandos como superusuario:

# gpasswd -a erpnext wheel

Permitir conexión por SSH

Editar el archivo /etc/ssh/sshd_config, agregando la línea:

AllowUsers erpnext

Luego reiniciar el servicio sshd

systemctl restart sshd.service

Actualizar el Sistema

Se debe garantizar que se tiene la última versión estable de los paquetes.

# yum update

Además se debe instalar un conjunto de utilidades (la mayoría disponibles de manera predeterminada en las instalaciones de Centos 7)

# yum install -y nano wget mlocate git

Instalar los prerrequisitos

Nota, en los cuadros color verde se presentan los comandos a ejecutar. Cuando se anteceden del símbolo $ significan que deben ser ejecutados por el usuario normal. Si van precedidos de # significa que deben ser ejecutados como superusuario.

Python 2.7

# yum install -y python-devel.x86_64 gcc libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel

Node.js

# yum -y install epel-release

# yum -y install nodejs npm

MariaDB

# yum install -y  mariadb-server mysql mariadb-devel.x86_64

# systemctl enable mariadb.service

# systemctl restart mariadb.service

$ mysql_secure_installation

Importante

No se recomienda permitir el acceso a la base de datos desde una IP pública. Se puede restringir para conexiones locales en el archivo /etc/my.cnf:

# nano /etc/my.cnf

En el editor agregar:

bind-address = localhost

Guardar y reiniciar el servicio.

Redis

$ wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/e/

# rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-*.rpm

# yum install redis

# systemctl enable redis.service

# systemctl start redis.service

WKHTMLtoPDF

Con soporte para QT (requerido para la generación de PDF)

# yum  install -y wkhtmltopdf.x86_64 python-pdfkit.noarch

PIP

# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"

# python get-pip.py

# pip install --upgrade pip

# easy_install -U setuptools

# pip install --upgrade setuptools

Instalar Frappe Bench

$ git clone https://github.com/frappe/bench bench-repo

# pip install -e bench-repo

$ bench init frappe-bench

Instalar ERPNext

$ cd frappe-bench/

$ bench get-app erpnext https://github.com/frappe/erpnext

$ bench new-site site1.local

Durante la creación del sitio se pide editar el archivo /etc/my.cnf agregando:

[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

[mysql]

default-character-set = utf8mb4

Luego de ello reiniciar el motor de base de datos:

# systemctl restart mariadb.service

Y se termina la instalación de la aplicación:

$ bench install-app erpnext

$ bench start

Una vez realizado lo anterior, se podrá ingresar a la aplicación desde un navegador:

http://<direcciónIP>:8000

Donde <direcciónIP> debe ser reemplazado por la dirección de la instancia en donde se instaló el aplicativo.

El usuario predeterminado es: Administrator y la clave es la que se ingresó cuando se creó el nuevo sitio.

Figura: Formulario de inicio de sesión ERPNext

Instalar Supervisor

Supervisor permite gestionar los procesos relacionados con el entorno frappe Automatiza las tareas de reinicio y recuperación ante fallos.

# easy_install supervisor

# mkdir /etc/supervisord.d/

# cd ~/frappe-bench/

$ bench setup supervisor

# ln -s config/supervisor.conf /etc/supervisor/conf.d/frappe-bench.ini

# echo_supervisord_conf > /etc/supervisord.conf

Se debe verificar que en el archivo /etc/supervisord.conf  la sección [include] sea:

[include]

files = /etc/supervisor/conf.d/*.ini

Registrar como un servicio del sistema

#  nano  /etc/rc.d/init.d/supervisord

En este nuevo archivo agregar:

#!/bin/sh

#

# /etc/rc.d/init.d/supervisord

#

# Supervisor is a client/server system that

# allows its users to monitor and control a

# number of processes on UNIX-like operating

# systems.

#

# chkconfig: - 64 36

# description: Supervisor Server

# processname: supervisord

# Source init functions

. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"

exec_prefix="${prefix}"

prog_bin="${exec_prefix}/bin/supervisord"

PIDFILE="/var/run/$prog.pid"

start()

{

       echo -n $"Starting $prog: "

       daemon $prog_bin --pidfile $PIDFILE

       [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"

       echo

}

stop()

{

       echo -n $"Shutting down $prog: "

       [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"

       echo

}

case "$1" in

 start)

   start

 ;;

 stop)

   stop

 ;;

 status)

       status $prog

 ;;

 restart)

   stop

   start

 ;;

 *)

   echo "Usage: $0 {start|stop|restart|status}"

 ;;

esac

Guardar y registrar el archivo:

# chmod +x /etc/rc.d/init.d/supervisord

# chkconfig --add supervisord

# chkconfig supervisord on

# service supervisord start

Si el usuario erpnext aún no está en la lista de sudoers:

# bench setup sudoers $(whoami)

Instalar Nginx

Nginx es el servidor web recomendado para el marco frappe.

# yum install epel-release

# yum -y install nginx

# systemctl enable nginx

$ cd ~/frappe-bench/

$ bench setup nginx

# ln -s `pwd`/config/nginx.conf /etc/nginx/conf.d/frappe-bench.conf

# systemctl start nginx

Instalar Soporte para PHP en el Puerto 8080

# yum install php php-mysql php-fpm

# nano /etc/php.ini

Colocar en del archivo la directiva:

cgi.fix_pathinfo=0

# nano /etc/php-fpm.d/www.conf

Reemplazar las siguientes directivas por:

listen = /var/run/php-fpm/php-fpm.sock

listen.owner = nobody

listen.group = nobody

user = nginx

group = nginx

#cd /etc/nginx/conf.d/

#nano php.conf

Y colocar en ese nuevo archivo:

server {

    listen       8080;

    server_name  cambiarPorDireccionIPdel Servidor;

    root   /usr/share/nginx/html;

    index index.php index.html index.htm;

    location / {

        try_files $uri $uri/ =404;

    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;

    location = /50x.html {

        root /usr/share/nginx/html;

    }

    location ~ \.php$ {

        try_files $uri =404;

        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        include fastcgi_params;

    }

}

# systemctl start php-fpm

# yum install php-mbstring

# chgrp nginx -R /var/lib/php/session

La carpeta del servidor es: /usr/share/nginx/html/

Borrar un sitio después de creado

  1. Eliminar la base de datos asociada al sitio.
  2. En la carpeta de Frappe bench->sites, borrar la carpeta correspondiente al sitio.

Desinstalar Frappe

Problemas Comunes

Al tratar de re-instalar ERPNext

ERPNext can only be installed on a fresh site where the setup wizard is not completed

Solución

TypeError: 'NoneType' object is not iterable

Después de ejecutar  bench install-app erpnext

Solución

Y volver a ejecutar:

$ bench new-site site1.local

$ bench install-app erpnext

$ bench start

ImportError: No module named erpnext

Error al Iniciar nginx

Al ejecutar systemctl start nginx, aparece un mensaje de permiso denegado al incluir /etc/nginx/conf.d/frappe-bench.conf

Solución

Configurar SELinux para que se ejecute en un modo permisivo.

Puede presentarse un error si no se ha borrado el archivo de configuración predefinido de nginx (nginx.conf)

Error de Permission Denied

Aplicar chmod o+rx en la carpeta del usuario de ErpNext y en /public/files del sitio.


Licencia

Grupo de Investigación y Desarrollo de

Tecnologías de la Información

Los contenidos originales de Zeety S.A.S en esta obra, se distribuyen bajo una Licencia Creative Commons Atribución-Compartir Igual 3.0 Unported.

Atribución – Compartir igual.

De conformidad a esta licencia:

Usted es libre para:

  • Compartir — copiar y redistribuir el material en cualquier medio o formato
  • Adaptar — remezclar, transformar y crear a partir del material

Para cualquier propósito, incluso comercialmente

Bajo los siguientes términos:

  • Atribución — Usted debe darle crédito a esta obra de manera adecuada: si se suministran, usted debe dar el nombre del creador y de las partes atribuidas, un aviso de derechos de autor, una nota de licencia, un aviso legal, y un enlace al material; e  indicando si se han realizado cambios. Puede hacerlo en cualquier forma razonable, pero no de forma tal que sugiera que usted o su uso tienen el apoyo del licenciante
  • Compartir igual — Si usted mezcla, transforma o crea nuevo material a partir de esta obra, usted podrá distribuir su contribución siempre que utilice la misma licencia que la obra original..

Las marcas, nombres de productos y empresas, logos, figuras, citas, contenidos no originales de Zeety S.A.S y otras referencias; son propiedad de sus respectivos dueños y no están cubiertos por esta licencia.

Zeety S.A.S

Grupo de Investigación y Desarrollo de Tecnologías de la Información


[1] Este archivo debe modificarse si se ha creado un fork de ERPNext. https://raw.githubusercontent.com/grupozeety/installerpnext/master/erpnext-apps-master.json

[2]Método solo recomendado para configuraciones muy específicas. Se referencia para entender el proceso de instalación y que sirva como guía en el caso de algún problema.

[3] Opcional. Este paso solo se realiza en sistemas que no tengan un usuario diferente a root.