sábado, 18 de octubre de 2014

Instalando ERPNext en Centos 6.5


ERPNext es un ERP con interfaz web desarrollado en la India por Web Notes Technologies, es una herramienta muy completa para llevar el control contable, financiero y operativo de empresas pequeñas y medianas.

Este post es un combinación de las instrucciones oficiales de instalación y mi experiencia personal, estoy trabajando sobre una instalación limpia de CentOS 6.5, un droplet de Digital Ocean, es importante que selección un sistema operativo a 64 bits como base.

Si te manejas bien con Linux no deberías tener problemas con la instalación, pero si no te manejas bien con Linux podrías considerar contratar una instancia directamente a los desarrolladores de este software y dejarles la configuración y mantenimiento a ellos.

1- Iniciamos sesión vía SSH con el IP y Contraseña facilitada por el proveedor del VPS.

# ssh@ip

2-  Actualizamos el sistema y nos aseguramos de tener instalado wget y git

# yum -y update && yum install -y wget git

3- Creamos un usuario para ERPNext y le asignamos una contraseña

# useradd erpnext
# passwd erpnext

4- Iniciamos sesión con el nuevo usuario

# su - erpnext

5- Clonamos el script de instalación que proporcionan el desarrollador:

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

6- Ejecutamos como root el script


$ su -c "/bin/bash /home/erpnext/setup_frappe.sh"

Si el script no presenta errores ya deberiamos tener todo instalado.

7- Iniciamos MariaDB

$ su -c "service mysql start"

8- Ejecutamos el script de configuración segura de MariaDB

$ su -c mysql_secure_installation

El paso fundamental aca es configurar la contraseña de root de MariaDB

9- Iniciamos la bench

$ cd ~ && bench init frappe-bench

Si les aparece este error lo pueden obviar:

File "/home/erpnext/frappe-bench/env/build/gunicorn/gunicorn/workers/_gaiohttp.py", line 64
    yield from self.wsgi.close()
             ^
SyntaxError: invalid syntax

Lo importante al final es recibir el mensaje:

Bench frappe-bench initialized
 
10- Descargamos vía bench ERPNext (no voy a bajar la aplicación de e-comerce)

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

11- Creamos nuestro nuevo sitio

$ bench new-site nombre-sitio

12- Instalamos vía bench ERPNext en nuestro sitio

$ bench frappe --install_app erpnext nombre-sitio

13- Abrimos el puerto 8000

$ su -c "iptables -A INPUT -p tcp -m tcp --sport 8000 -j ACCEPT"

14- Comprobamos si podes iniciar ERPNext

$ cd /home/erpnext/frappe-bench/ && bench start

15- Comprobamos poder acceder vía el navegador en el puerto 8000


El usuario es Administrator la contraseña se nos solicito en el paso 11

Hasta aca ya tenemos ERPNExt funcionando en nuestro Centos, pero si cerramos la terminal desde la que arrancamos el proceso, o matamos el proceso con "Ctrl + C" el sitio web dejara de estar disponible.

Para configurar nuestre ERPNext para, por ejemplo, autoiniciar con el sistema necesitamos pasos adicionales.

16- Volvemos nuestra terminal y matamos el proceso con "Ctrl + C"

17 - Cerramos la sesión de erpnext para volver a ser root

$ exit

18 - MariaDB ya esta corriendo pero necesitamos que inicie al inicio

# chkconfig mysql on

19 - Configuramos el autoinicio de redis

# chkconfig redis on

20- Configuramos el autoinicio de memcached

# chkconfig memcached on

21- Configuramos memcached para escuchar en el localhost

# vi /etc/sysconfig/memcached

Tiene que quedar con el siguiente contenido

# Running on Port 11211  
PORT="11211"

# Start as memcached daemon  
USER="memcached"

# Set max simultaneous connections to 1024  
MAXCONN="1024"

 # Set Memory size to 2048 - 4GB(4096)  
CACHESIZE="2048"

#Set server IP address  
OPTIONS="-l 127.0.0.1"

Si vas a usar ERPNext de forma local puedes llegar hasta aca, si vas a configurar ERPNext para servir de forma remota es recomendable configurar supervisor y nginx.

22- Configuramos el autoinicio de nginx

# chkconfig nginx on

23- Instalamos supervisor

# easy_install supervisor
24- Creamos un script de autoinicio de ERPNext

# touch /etc/erpnext.sh

25-  Editamos el archivo

# vi /etc/erpnext.sh

y agregamos

#! /bin/bash

cd /home/erpnext/frappe-bench/
bench star

 25- Hacemos ejecutable el archivo

# chmod +x /etc/erpnext.sh

26- Creamos el archivo /etc/supervisord.conf

# touch /etc/supervisord.conf 

27- Editamos el archivo 

# vi  /etc/supervisord.conf

y agregamos lo siguiente:

[supervisord]
nodaemon = false

[program:erpnex]
command=/etc/erpnext.sh
28- Editamos el  archivo /etc/rc.local

# vi /etc/rc.local

y agregamos la siguiente linea

supervisord -c /etc/supervisord.conf
Ahora deberiamos ser capaces de apagar el servidor reiniciarlo y verificar que ERPNext se inicia de forma automatica gracias a supervisor.

init─┬─auditd───{auditd}
     ├─crond
     ├─master─┬─pickup
     │        └─qmgr
     ├─memcached───5*[{memcached}]
     ├─6*[mingetty]
     ├─mysqld_safe───mysqld───18*[{mysqld}]
     ├─nginx───nginx
     ├─redis-server───2*[{redis-server}]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     ├─supervisord───erpnext.sh───honcho─┬─frappe───python2.7───{python2.7}
     │                                   ├─python───python
     │                                   ├─python
     │                                   └─3*[{honcho}]
     └─udevd───udevd

El siguiente paso es configurar Nginx

 29- Abrimos el puerto y verificamos poder ver la página de inicio de Nginx

# iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
 
 30- Iniciamos sesión con el usuario erpnext

# su - erpnext

31- Generamos un archivo de configuración

$ cd frappe-bench && bench setup nginx

32- Creamos un link a la carpera de nginx

$ su -c "ln -s /home/erpnext/frappe-bench/config/nginx.conf /etc/nginx/conf.d/frappe.conf"

33- Eliminamos el archivo por defecto de nginx

$ su -c "rm /etc/nginx/conf.d/default.conf"

34- Podemos verificar que nginx esta funcionando como proxy inverso en la página de prueba y cerrar el puerto 80

Listo

Al reiniciar el servidor supervisor ERPNext se iniciara automaticamente.

1 comentario:

  1. Hola, amigos: Cómo hacéis para codificar el Plan Contable por Grupos-Subgrupos-Cuentas-Subcuentas? un saludo

    ResponderEliminar