Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Instalar Openbravo

Openbravo es un ERP nacido en España que ha ido ganando popularidad, hoy lo instalaremos en un server Centos 5.2 con todo los paquetes requeridos para poder trabajarlo. Todos estos pasos los haremos como usuario root.

-Instalamos Centos 5.2 en forma minima
-Lo actualizamos
yum update

-Opcional, descargamos webmin desde www.webmin.com y lo instalamos
rpm -vi webmin-1.420-1.noarch.rpm

-Configuracion de java
-Descargamos el ultimo JRE y JDK disponibles, en este momento es 1.6.07.
mkdir /usr/java
cd /usr/java
sh /root/jre-6u7-linux-i586-rpm.bin
sh /root/jdk-6u7-linux-i586-rpm.bin
cd /root

-Descargamos Tomcat y ANT y los instalamos y configuramos
wget -c http://www.gossipcheck.com/mirrors/apache/ant/binaries/apache-ant-1.7.1-bin.tar.gz
wget -c http://apache.mirrors.hoobly.com/tomcat/tomcat-5/v5.5.26/bin/apache-tomcat-5.5.26.tar.gz
cd /usr/share
tar -xzvf /root/apache-tomcat-5.5.26.tar.gz
tar -xzvf /root/apache-ant-1.7.1-bin.tar.gz
ln -s /usr/share/apache-ant-1.7.1/bin/ant /usr/bin/
cd /usr/share/apache-tomcat-5.5.26/bin

vi catalina.sh
agregamos:
JAVA_HOME=/usr/java/jdk1.6.0_07
salvamos y salimos

./startup.sh
verificamos que no hayan errores
less /usr/share/apache-tomcat-5.5.26/logs/catalina.out
ln -s /usr/share/apache-tomcat-5.5.26/bin/startup.sh /usr/bin/tomcat
tar -xzf jsvc.tar.gz

-Instalamos el compilador gcc y make
yum install gcc make -y
cd jsvc-src/

-Verificamos opciones de instalacion
less INSTALL.txt
chmod +x configure
./configure --with-java=/usr/java/jdk1.6.0_07/
make
alternatives --install /etc/alternatives/java java /usr/java/jdk1.6.0_07/bin/java 90
cd /usr/share/apache-tomcat-5.5.26/bin/jsvc-src/native
useradd -d /usr/share/apache-tomcat-5.5.26/ tomcat

vi Tomcat5.sh
-Modificamos para que nos quede asi (las zonas con ... es que no colocamos varias lineas que ahi van por motivos de acortar este documento):
JAVA_HOME=/usr/java/jdk1.6.0_07
CATALINA_HOME=/usr/share/apache-tomcat-5.5.26
DAEMON_HOME=/usr/share/apache-tomcat-5.5.26/bin
TOMCAT_USER=tomcat
TOMCAT5_SECURITY=no
CATALINA_BASE=/usr/share/apache-tomcat-5.5.26

case "$1" in
start)
#
# Start Tomcat
#
$DAEMON_HOME/jsvc-src/jsvc \
..
..
..
stop)
#
# Stop Tomcat
#
$DAEMON_HOME/jsvc-src/jsvc \
..
..
Salvamos y salimos

chmod +x Tomcat5.sh
cp Tomcat5.sh /etc/init.d/Tomcat5
chmod +x /etc/init.d/Tomcat5

vi /etc/init.d/Tomcat5
Agregamos esto a partir de la segunda linea:
# chkconfig: 234 20 80
# description:Small shell script to start/stop Tomcat using jsvc.
Salvamos y salimos

chkconfig --add Tomcat5
chkconfig --list Tomcat5

cd /etc/xinetd.d
vi http
Agregamos:
service http
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
redirect = 127.0.0.1 8080
log_on_failure += USERID
}
Salvamos y salimos
vi https
Agregamos:
service https
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
redirect = 127.0.0.1 8443
log_on_failure += USERID
}
Salvamos y salimos

service httpd stop
chkconfig httpd off
service xinetd restart
chown -R tomcat.tomcat /usr/share/apache-tomcat-5.5.26

-Descargamos e instalamos postgresql 8.2.9 del site www.postgresql.org
Centos 5.2 por alguna razon viene por default con postgresql 8.11 asi que eliminamos la libreria para que nos deje instalar el 8.2.9

rpm -e --nodeps postgresql-libs

rpm -vi *.rpm
warning: compat-postgresql-libs-4-1PGDG.rhel5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 442df0f8
Preparing packages for installation...
postgresql-libs-8.2.9-1PGDG.rhel5
postgresql-8.2.9-1PGDG.rhel5
postgresql-server-8.2.9-1PGDG.rhel5
compat-postgresql-libs-4-1PGDG.rhel5
compat-postgresql-libs-debuginfo-4-1PGDG.rhel5
postgresql-contrib-8.2.9-1PGDG.rhel5
postgresql-debuginfo-8.2.9-1PGDG.rhel5
postgresql-devel-8.2.9-1PGDG.rhel5
postgresql-docs-8.2.9-1PGDG.rhel5
postgresql-odbc-08.03.0100-1PGDG.rhel5
postgresql-odbc-debuginfo-08.03.0100-1PGDG.rhel5
postgresql-plperl-8.2.9-1PGDG.rhel5
postgresql-plpython-8.2.9-1PGDG.rhel5
postgresql-pltcl-8.2.9-1PGDG.rhel5
postgresql-tcl-1.6.2-1PGDG.rhel5
postgresql-tcl-debuginfo-1.6.2-1PGDG.rhel5
postgresql-test-8.2.9-1PGDG.rhel5

chkconfig postgresql on
service postgresql initdb
service postgresql start

-Configuramos la contraseña del usuario postgres
sed -i 's/ident sameuser$/trust/' /var/lib/pgsql/data/pg_hba.conf
psql -U postgres
alter role postgres with password '%new_PostgreSQL_admin_passowrd%';
\q
sed -i 's/trust$/md5/' /var/lib/pgsql/data/pg_hba.conf
service postgresql restart

-Descargamos openbravo 2.40, la ultima version en este momento y la instalamos.
cd /root
wget -c http://downloads.sourceforge.net/openbravo/OpenbravoERP_2.40beta-linux-installer.bin
chmod +x OpenbravoERP_2.40beta-linux-installer.bin

-A continuacion la secuencia de preguntas del instalador con mis respuestas.
./OpenbravoERP_2.40beta-linux-installer.bin

Installation directory

Please specify the directory where Openbravo ERP will be installed

[/opt/OpenbravoERP]:

----------------------------------------------------------------------------
Attachments directory

Please specify a directory for the Openbravo ERP attachments

[/opt/OpenbravoERP/AppsOpenbravo/attachments]:

----------------------------------------------------------------------------
Installation mode

Please select the installation mode you wish to perform

[1] Complete
The database and the application server in the same computer
[2] Distributed
The database and the application server in different computers
Please choose an option [1] :

----------------------------------------------------------------------------
Complete installation

Please select the installation type you wish to perform

[1] Standard
Installs the database and sets up the application server.
Recommended.
[2] Development
Installs the database and and sets up the application server
through a compilation process.
Recommended for developers.
Please choose an option [1] :

----------------------------------------------------------------------------
Stack: Java home directory

Please specify the directory where the JDK is located

[/usr]: /usr/java/latest

----------------------------------------------------------------------------
Stack: Ant executable

Please specify the location where the Ant executable is located

[/usr/bin/ant]:

----------------------------------------------------------------------------
Stack: Tomcat directory

Please specify the directory where Tomcat is located.
In case of having Tomcat split into 2 directories, select the one containing the webapps directory

[]: /usr/share/apache-tomcat-5.5.26

----------------------------------------------------------------------------
Database

Please select a database

[1] PostgreSQL
[2] Oracle
Please choose an option [1] : 1

----------------------------------------------------------------------------
Database: PostgreSQL directory

Please specify the directory where the binaries of the PostgreSQL installation are located (psql, pg_restore, vacuumdb)

[/usr/bin]:

----------------------------------------------------------------------------
Database: server parameters

Please enter the IP address of the PostgreSQL database

Database host [localhost]:

Please enter the port of the PostgreSQL database

Database port [5432]:

----------------------------------------------------------------------------
Database: admin password

Enter the password for your "postgres" administrator user

Password :
Retype password :
----------------------------------------------------------------------------
Openbravo Database: parameters

Please enter the name of the PostgreSQL database

Database name [openbravo]:

Please enter a username for the Openbravo ERP PostgreSQL database

Username [tad]:

Please enter a password for the new database user

Password :
Retype password :
----------------------------------------------------------------------------
Openbravo ERP: context name

Enter a context name.

This is used in the URL to access Openbravo ERP:
http://:/context_name

Context name [openbravo]:

----------------------------------------------------------------------------
Openbravo ERP: date/time options

Please select the preferred date and time formats

Date format

Date format

[1] DD MM YYYY
[2] MM DD YYYY
[3] YYYY MM DD
Please choose an option [1] : 3

Date separator

Date separator

[1] -
[2] /
[3] .
[4] :
Please choose an option [1] : 2

Time format

Time format

[1] 12h
[2] 24h
Please choose an option [2] : 2

Time separator

Time separator

[1] :
[2] .
Please choose an option [1] : 1

----------------------------------------------------------------------------
Openbravo ERP: demo data

Should the installer populate the database with demo data?

[Y/n]: y


----------------------------------------------------------------------------
Setup is now ready to begin installing Openbravo ERP on your computer.

Do you want to continue? [Y/n]: y

----------------------------------------------------------------------------
Please wait while Setup installs Openbravo ERP on your computer.

Installing
0% ______________ 50% ______________ 100%
#########################################

Y ya tenemos listo el Openbravo 2.40, para accederlo vamos a la ip del server por el puerto 8080, ejemplo(mi server esta en la 192.168.1.188):
http://192.168.1.188:8080/openbravo/security/Menu.html
Share/Bookmark

18 comentarios:

  1. Hola amigo, muy bueno tu manual, tengo uan pregunta, yo tengo instalado el Openbravo sobre Ubuntu Feisty Fawn, y quiero que en ves de http://localhost:8180/openbravo pueda acceder mediante una IP algo asi como tu manual http://192.168.1.188:8080/openbravo/security/Menu.html, podrias porfavor orientarme , soy algo nuevo en esto de Linux, y la verdad me ah tomado mucho instalarlo pero no encuentro una solucion de como verlo desde otra pc o un navegador, agradeceria mucho tu ayuda.

    Saludos
    Enrique

    ResponderEliminar
  2. Hola meavalos,

    Una pregunta, cuando le das ping a la ip de ubuntu feisty desde otro pc, te responde? tienes iptables activo en el ubuntu?

    ResponderEliminar
  3. Me falto decirte, basicamente uno desabilita el servicio de apache y redirecciona con xinetd los pedidos al puerto 80 http al 8080 de tomcat con openbravo idem para https.

    ResponderEliminar
  4. Hola, y muchas gracias por tomarte el tiempo de responderme, cuando me preguntabas si podia vizualizar el Openbravo desde otra PC, eh intentado desde una PC con windows XP y 2000 y me bota error, tambien me decias si tenia el “iptables activo en el ubuntu?” aplique este comando que encontre en la red sudo iptables -L el cual me deberia decir si tengo reglas definidas en el Ubuntu y me voto esto:
    root@Cairito:/home/enrique# sudo iptables -L

    Chain INPUT (policy ACCEPT)

    target prot opt source destination



    Chain FORWARD (policy ACCEPT)

    target prot opt source destination



    Chain OUTPUT (policy ACCEPT)

    target prot opt source destination


    Creo que significa que si tiengp iptables rulando (está en el kernel) y que no tengo ninguna regla definida.

    Tambien me mencionaste lo sgte “ Me falto decirte, basicamente uno desabilita el servicio de apache y redirecciona con xinetd los pedidos al puerto 80 http al 8080 de tomcat con openbravo idem para https.” Estuve investigando sobre XINETD y encontre esto :

    http://www.escomposlinux.org/lfs-es/recetas/xinetd.html

    Disculpame si soy algo ignorante respecto al tema o muy pregunton, pero la verdad ando algo perdido en el tema . Por cierto yo entro a mi OB de la siguiente manera :

    Primero reseteo en tomcat de la sgte manera :
    root@Cairito:/home/enrique# sudo /etc/init.d/tomcat5.5 restart

    y Luego entro con cualquiera de esas dos direcciones.
    http://localhost:8180/openbravo
    http://127.0.0.1:8180/openbravo

    Agradesco mucho tu ayuda y ojala me orientes en el tema, suerte en todo

    Saludos
    Enrique

    ResponderEliminar
  5. El IP de mi Ruter que em provee el acceso a internet es el sgte 201.240.239.158 ( client-201.240.239.158.speedy.net.pe ) nose si en algo eso ayudara.

    Saludos
    Enrique

    ResponderEliminar
  6. Ok, vamos por partes. Para verificar en ubuntu si tienes un paquete instalado usas el comando dpkg:

    ejemplo, en mi pc con ubuntu 8.04

    dpkg -l xinetd
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
    |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
    ||/ Nombre Versión Descripción
    +++-=========================-=========================-==================================================================
    ii xinetd 1:2.3.14-5 replacement for inetd with many enhancements

    Hazlo y mira si lo tienes instalado. Sino, das:

    sudo apt-get install xinetd
    Despues haz la parte del xinetd como muestro en la nota de OpenBravo.
    En tu caso en ubuntu despues de editar los files de xinetd http y httpd
    sudo /etc/init.d/httpd stop
    sudo /etc/init.d/xinetd start

    Y no te preocupes, preguntando se aprende

    ResponderEliminar
  7. Ok, creo que vamos llegando al problema, imagino que tu ISP, speedy por lo que veo en peru te coloco un modem ADSL en tu casa y por medio de un NAT puedes navegar.
    Cuando hablas de que tratas de conectarte desde un pc XP a tu ubuntu, estos 2 pc estan en tu casa en la misma red? o desde otro lugar tratas con otro pc?, en tu ubuntu da el siguiente comando:
    /sbin/ifconfig

    y muestrame que te sale, creo que el modem ADSL aunque te deja salir a internet, te esta bloqueando la entrada al puerto 80 y 8080, porque los filtra con su firewall

    ResponderEliminar
  8. Hola amigo, disculpa sali a comprar algo y nuevamente muchas gracias por responderme tan rapido, de verdad gracias, bueno puse el comando que me dijiste y salio esto:

    root@Cairito:/home/enrique# /sbin/ifconfig
    ath0 Link encap:Ethernet direcciónHW 00:19:e0:8a:00:11
    inet dirección:192.168.1.34 Difusión:192.168.1.255 Máscara:255.255.255.0
    dirección inet6: fe80::219:e0ff:fe8a:11/64 Alcance:Vínculo
    ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
    RX packets:507930 errors:0 dropped:0 overruns:0 frame:0
    TX packets:374269 errors:0 dropped:0 overruns:0 carrier:0
    colisiones:0 txqueuelen:0
    RX bytes:706070341 (673.3 MB) TX bytes:30212279 (28.8 MB)

    eth0 Link encap:Ethernet direcciónHW 00:19:d1:fa:59:34
    ARRIBA DIFUSIÓN MULTICAST MTU:1500 Métrica:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    colisiones:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

    lo Link encap:Bucle local
    inet dirección:127.0.0.1 Máscara:255.0.0.0
    dirección inet6: ::1/128 Alcance:Anfitrión
    ARRIBA LOOPBACK CORRIENDO MTU:16436 Métrica:1
    RX packets:129199 errors:0 dropped:0 overruns:0 frame:0
    TX packets:129199 errors:0 dropped:0 overruns:0 carrier:0
    colisiones:0 txqueuelen:0
    RX bytes:22308877 (21.2 MB) TX bytes:22308877 (21.2 MB)

    wifi0 Link encap:UNSPEC direcciónHW 00-19-E0-8A-00-11-00-00-00-00-00-00-00-00-00-00
    ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
    RX packets:1232447 errors:0 dropped:0 overruns:0 frame:67713
    TX packets:378288 errors:21 dropped:0 overruns:0 carrier:0
    colisiones:0 txqueuelen:199
    RX bytes:782394155 (746.1 MB) TX bytes:41614618 (39.6 MB)
    Interrupción:22

    Gracias por todo
    Saludos
    Enrique

    ResponderEliminar
  9. Hola amigo me olvidaba instale el XINETD como me dijiste, pero hay algo que no entiendo donde dices "Despues haz la parte del xinetd como muestro en la nota de OpenBravo.
    En tu caso en ubuntu despues de editar los files de xinetd http y httpd”

    sudo /etc/init.d/httpd stop
    sudo /etc/init.d/xinetd start
    " Esta enque parte lo aplico dentro de “vi /etc/init.d/Tomcat5” o “vi http”
    Y nuevamente gracias por la ayuda y paciencia.

    Saludos
    Enrique

    ResponderEliminar
  10. Hola amigo, nuevamente ...
    1ro. Cree aquello que me dijiste el file de xinetd http y httpd (pero creo que era “https”)
    y otra cosa es dentro de “cd /etc/xinetd.d “ o “cd /etc/xinetd
    2do. Cuando le doy este comando me sale lo siguiente:
    root@Cairito:/home/enrique# sudo /etc/xinetd.d/httpd stop

    sudo: /etc/xinetd.d/httpd: command not found


    root@Cairito:/home/enrique# sudo /etc/xinetd.d/https stop

    sudo: /etc/xinetd.d/https: command not found


    3ro. Y al cuando le doy este ultimo comando
    root@Cairito:/home/enrique# sudo /etc/init.d/xinetd start

    * Starting internet superserver xinetd [fail]


    Debe haber algo que estoy haciendo mal.

    Saludos
    Enrique

    ResponderEliminar
  11. Hola meavalos,

    ok, el directorio de xinetd es xinetd.d

    cd /etc/xinetd.d/

    Ahi dentro debes crear 2 files.

    vi http
    Agregamos:
    service http
    {
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    redirect = 127.0.0.1 8080
    log_on_failure += USERID
    }
    Salvamos y salimos
    vi https
    Agregamos:
    service https
    {
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    redirect = 127.0.0.1 8443
    log_on_failure += USERID
    }

    Esto basicamente lo que hace es escuchar peticiones por el puerto 80 y 443 y redireccionarlos al 8080 o el puerto que tengas con el tomcat, asi se ve mejor el URL sin necesidad de :8080
    Quiere decir que no es necesario si no lo vez preciso.
    El paso del /etc/init.d/httpd es para parar la ejecucion del apache, el web server de Linux, si te dio error

    ResponderEliminar
  12. Hola meavalos,

    El anterior msg no quedo completo, disculpa, lo que te decia es que si el /etc/init.d/httpd stop te dio error esto es prueba de que no lo tienes ejecutando. Hay que pararlo para que pueda el xinetd escuchar pedidos por los puertos 80 y 443.
    Lo que anteriormente te decia, de que tu modem de ADSL te esta bloqueando la entrada a tu ip privada 192.168.1.34 por el puerto 80 es cierto, entonces, solo podras ver la pagina de openbravo desde otra pc en la misma red, ejemplo, 192.168.1.35, desde internet a no ser que tu proveedor te haga portforward hacia tu pc ubuntu, no lo lograras.
    Otra posibilidad es que te inscribas en uno de los servicios de DNS dinamicos, como DynDNS, estos te permiten tener un dominio internet "atado" a tu ip dinamica y ahi entonces tendrias que ver si el modem te deja ver una pagina que no este en los puertos 80 o 443.
    Saludos,

    ResponderEliminar
  13. Hola Mi amigo..

    De verdad muchas gracias por la ayuda prestada, segui tus sabios consejos y si ahora puedo entrar de la sgte manera http://127.0.0.1/openbravo/security/Menu.html . Pero todavia tengo una urgencia , mejor dicho 2 urgencia mi buen amigo, eh tratado de acceder desde la red ( es decir desde otra compu con windows xp) y no me carga me bota error, y tampoco desde el internet, como podria hacer con ello, te vuelvo a pedir disculpas por robarte tu tiempo, y gracias nuevamente por la ayuda prestada. Suerte en todo.

    Saludos
    Enrique

    ResponderEliminar
  14. Me olvidaba despues de editar y crear esos archivos , me comentabas en una ayuda anterior que les de estos coemandos
    sudo /etc/init.d/httpd stop
    sudo /etc/init.d/xinetd start

    tambien eh tratado de esta manera
    root@Cairito:/# sudo /etc/xinetd.d/httpd stop


    Pero en ambos me bota lo siguiente:
    sudo: /etc/xinetd.d/httpd: command not found


    Ya sea en el directorio “init.d” o “ xinetd.d”

    Pero intente entrar y cargar el OB y si carga. Pero no puedo verlo desde otra PC ya sea por red o por internet.

    ResponderEliminar
  15. Ok, Enrique, primero verifica si desde el pc xp dentro de la red local le puedes dar ping a la 192.168.1.34, ip que segun un msg anterior tiene tu ubuntu:

    En XP abres una consola MSDOS y das:

    ping 192.168.1.34

    debe funcionarte, sino, es que el XP no esta dentro de la misma red que el ubuntu y por tanto no te dejaraba ver la pagina de OB.
    Olvida lo del httpd stop, era una verificacion y ya vimos que no lo tienes corriendo.
    La pagina del OB como te comentaba en otro msg no la podras ver desde internet debido a que speedy en el modem ADSL te tiene bloqueados esos puertos. Hay 2 posibles soluciones, una, que speedy te redireccione esos puertos a tu pc ubuntu o dos, que te inscribas en un DNS gratuito como DynDNS para que tu pagina de OB sea visible en internet aun cambiandote la ip cada vez que prendas el modem. Eso si, por otro puerto, no el 80 o el 443, ejemplo http://enrique.dyndns.com:2443/openbravo

    ResponderEliminar
  16. Hola mi amigo...

    Nuevamente gracias por tu respuesta tan pronta. Y si le di ping 192.168.1.34
    y si hay respuesta , si me puedo ver con mi otra pc, es decir estamos dentro de la misma red, una pregunta tiene algo que ver que la comunicacion entre estas PCS sea por medio inalambrico.

    Y lo otro que me comentas del DynDNS me parece perfecto, como haria porfavor para los dos casos que me comentas;
    1ro Para verme desde la red local
    2do Para cambiar los puertos como el ejemplo que me das:
    http://enrique.dyndns.com:2443/openbravo

    Saludos y nuevamente de verdad gracias por la ayuda prestada.

    Saludos
    Enrique

    ResponderEliminar
  17. Hola amigo...

    Aqui fastidiandote nuevamente, ya cree mi usuario en DynDNS es cairito.dyndns.org Como hago ahora para agregarle el nuevo puerto porfavor. Tu me comentaste que podria ser de la siguiente manera http://enrique.dyndns.com:2443/openbravo , y asi poder verlo desde el internet. Ya eh buscado en varios lugares y intentado y no me sale, no queria fastidiarte.

    Saludos
    Enrique

    ResponderEliminar
  18. Hola Enrique,

    Mira, para verificar porque no te deja ver tu server ubuntu desde el pc windows xp, debes verificar mas a fondo tu red local, pueden haber varios problemas, en ambos pc, el ubuntu y el xp.
    Ahora, para ver tu pc ubuntu desde internet con DynDNS, primero debes crearte la cuenta, dices que ya la tienes, ahi mismo te dicen como crearte un script para conectar tu pc con linux a una cuenta DynDNS y que ellos sepan en que ip publica dinamica estas. Despues de eso debes configurar tu tomcat con openbravo para que responda al puerto que elijas, no estoy seguro de si el modem te bloquee o no el 8080, peero es una posibilidad, debes hacer pruebas, si lo bloquea, cambias a otro puerto y tratas de verlo desde internet.
    Saludos,

    ResponderEliminar

Dejame un comentario, aprecio la retroalimentacion. Leave me a comment, I appreciate the feedback.