martes, 19 de noviembre de 2013


Slide 1:
This presentation will demonstrate how to configure IPv6 EIGRP, as well as demonstrating the difference between real equipment and packet tracer.

Slide 2:
This is the topology we are going to use to demonstrate how to configure IPv6 EIGRP. Branch 2 and branch 3 were pre-configured with EIGRP. We are going to demonstrate using branch 1.

Slide 3:
When enabling IPv6 EIGRP on a router, you must first make sure ipv6 unicast-routing is enabled, or you will receive an error message. Once that is configured, we can go ahead and enable EIGRP on the router, along with the router ID. The EIGRP router ID is normally selected in the same manner as OSPF. The highest IP address assigned to a Loop back interface is selected as the router ID. If there are not any loopback addresses configured, the highest IP address assigned to any other interface is chosen as the router ID. Or we can simply hard-code the router ID using the EIGRP router ID command. The purpose of the EIGRP router ID is that it can be used as a loop prevention mechanism for external routes. Notice how there are two different command sets for real equipment and packet tracer. In order to enable ipv6 EIGRP and packet tracer, you enter the ipv6 EIGRP process ID, then configure a router ID, followed by the no shutdown command. The no shutdown command enables the ipv6 EIGRP process and packet tracer, but not necessarily on real equipment. Notice the difference in commands when using real equipment. You enter the ipv6 router process ID number, followed by the router ID command. When using real equipment, you can use either the EIGRP router ID command, or just router ID with the address. When you issue the show run command, it will display the router ID with EIGRP before it. Let's go ahead and configure branch 1 in packet tracer, with ipv6 EIGRP.

As you can see, the error message occurred when ipv6 unicast-routing was not enabled.
If we fail to enter the no shutdown command, the ipvr6 EIGRP routing process will not be enabled.
As you notice in the running configuration, it says shutdown. Now let's go to PUTTY and enter the commands on real equipment.
Again, the error message appears because ipv6 unicast-routing was not enabled.
Now if I go into the running configuration, you'll notice that it doesn't say shutdown where EIGRP is. You'll also notice it says EIGRP router ID, even though all we entered was the router ID command.

Slide 4:
Unlike IPv4 EIGRP, IPv6 EIGRP does not require the use of network command to advertise its networks. Instead IPv6 EIGRP must be enabled on all of the router's interfaces. This command must be configured on all of the router's interfaces that are participating in EIGRP. If we fail to configure this command on an interface, that network will not be advertised, therefore, it will not be learned by its neighbors.

Slide 5:
When IPv6 EIGRP is configured on all interfaces, a log message will inform you that an adjacency has been formed. Now let's go to packet tracer and configure the interfaces to participate in EIGRP.
Notice how no adjacencies are formed. This is because we did not enable the ipv6 EIGRP routing process using the no-shutdown command. Once a command is entered, an adjacency is formed.
Now let's go to branch 1 in real equipment and compare the difference.
Notice how an adjacency forms once I enable EIGRP on the serial interface. Let's issue the show IP route command and notice how nothing is being displayed. This is because the table is for ipv4 networks, but since we are using ipv6, we have to issue the ipv6 route commands.
Notice how branch 1 has learned networks from the other routers, as evidenced by the D in the ipv6 routing table. The L in the routing table is a new identifier, which indicates a specific address assigned to an interface, as opposed to the C, which only displays the subnet. You'll also notice that the L displays a 128-bit prefix, where the C displays the actual prefix configured on the interface.

Slide 6:
This is the show ipv6 eigrp neighbor command. As you notice, the link-local address is used to identify neighboring ipv6 EIGRP routers.

Slide 7:
The show IPv6 protocols command first shows that it's radical protocol being used is eigrp 100. Then it displays the K metrics. Then, if you notice below that, it says interfaces. Serial 0/0/0 and Serial 0/0/1. These are the interfaces that are participating, or enabled, for the EIGRP IPv6, and on the bottom it says distance: internal 90, external 170. These are the administrative distances for EIGRP.

Slide 8:
The show IPv6 route command displays more learned routes, as well as the Cs which are directly connected, and the Ls which are the interface addresses.

Slide 9:
The passive-interface is not currently supported by the current version of Packet Tracer for IPv6 EIGRP. But hopefully it will be added to our future version. You can use the passive interface command to control the advertisement of routing information. The command enables the suppression of routing updates over some interfaces while it allows updates to be exchanged normally over other interfaces. When used with EIGRP, it suppresses the exchange of hello packets between routers which will result in the loss of a neighbor relationship. Therefore, it is only used on interfaces where no routers are connected.
This stops not only routing updates from being advertised, but it also suppresses incoming routing updates. 

Slide 10:
The configuration is the same as those with IPv4 EIGRP. Let's go to PUTTY to show...
...IPv6 procol command and how it shows how gigabit interfaces are participating in EIGRP.
You notice that it shows not only gigabit interfaces, but the serial interface as well.
Now we are going to enter the passive interface command and suppress routing updates from being sent across gigabit interfaces.
Now let's go back to the show ipv6 protocol command and notice how it displays passive next to the gigabit interfaces. This tells you that the passive interface command was enabled.
Slide 12:
Now we are going to summarise Branch-3’s LANs into one summary address and then advertise to Branch-2.

Slide 13:
Summarized addresses are based on common bits in the network portion of the address. These two networks have 63-bits in common. As you can see, they have 16-bits in common on the first three hextets, and 15-bits in the fourth hextet, giving you 63-bits in total. Therefore, the summary address would be 2001:DB8:ACAD:A::/63.

Slide 14:
To advertise a summary address, issue the ipv6 summary-address eigrp AS address command and apply it to an interface where you would like the address to be advertised. This is applied to the serial interface that is connected to branch 2. This command is only entered on interfaces that connect to other routers. Before we configure the summary route on branch 3, let's go into branch 2 and enter the show ipv6 route command.

Here you'll notice how both routes are visible in the routing table.
Now let's go ahead and establish the summary route on branch 3 Serial0/0/1 interface. This is the interface that connects to branch-2. Now if branch-3 were connected to another router, say branch-4 on a Serial0/0/0 interface, we would configure the same command on that interface as well.
Now let's go back to branch-2 and issue the show ipv6 route command. But first did you notice how it changed the neighbor adjacency. A log message appeared, displaying this.
In branch-2, notice how I replace the two routes with one summary route with the prefix of 63.

Slide 15:
Normally, if a specific route to a particular network does not exist, a router will drop all traffic destined to that network. A default route, or "gateway of last resort", allows traffic to be forwarded, even without a specific route to a particular network listed in the routing table, With ipv6, a default route is identified the ipv6 route ::/0, the exit interface, the next hot router, or a fully specified route which uses both the exit interface and the address of the net hot router. We are going to configure a default router on branch-2, pointing to its loopback interface. This will be used to simulate the internet. In order to propagate the default route, we entered the reestablished static command, in IPV6 router mode.

Slide 16:
This slide shows the difference between the router that I configured with the default route, in this case branch-2, and the output of the router that learnt the default route - branch-1. The default route was configured on Branch-2 and is displayed as a static route via the Loop back interface. Branch-1 displays the default route in its routing table as an external route. The only differences between IPv4 EIGRP and IPv6 EIGRP is (1) there is no asterisk shown on the device that creates the default route and it doesn’t list the gateway of last resort. This completes my presentation on ipv6 EIGRP. I hope this was a helpful demonstration and may your networks continue to converge.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

miércoles, 6 de noviembre de 2013

Solución: Error driver oci8 en php Codigniter con Oracle

Durante el desarrollo de mi aplicación web no tuve inconvenientes en conectarme con mi base de datos en Oracle, claro que ya había instalado del controlador OCI e integrado con PHP en mi servidor de pruebas bajo Fedora 20.

Al intentar desplegar mi aplicación a nivel de producción en un servidor CentOS 6, había realizado los mismos pasos de instalación de OCI8 pero mi aplicación no se conectaba con la base de datos y me desplegaba el mensaje:

A Database Error Occurred
Unable to connect to your database server using the provided settings.
Filename: /home/helper/public_html/third_party/MX/Loader.php
Line Number: 102

Desactivé el debug de base de datos en application para que me muestre los errores con mas detalle en /application/config/database.php cambiando

$db['production']['db_debug'] = TRUE;


$db['production']['db_debug'] = FALSE;

Fue entonces donde obtuve los siguientes errores

A PHP Error was encountered

Severity: Warning
Message:  oci_parse() expects parameter 1 to be resource, boolean given
Filename: oci8/oci8_driver.php
Line Number: 186

A PHP Error was encountered

Severity: Warning
Message:  oci_set_prefetch() expects parameter 1 to be resource, null given
Filename: oci8/oci8_driver.php
Line Number: 171

A PHP Error was encountered

Severity: Warning
Message:  oci_fetch_assoc() expects parameter 1 to be resource, null given
Filename: oci8/oci8_result.php
Line Number: 153

A PHP Error was encountered

Severity: Warning
Message:  oci_fetch_assoc() expects parameter 1 to be resource, null given
Filename: oci8/oci8_result.php
Line Number: 153


El origen de estos errores estaba en el servidor Web Apache por lo siguiente: al reiniciar el servicio me salia el mensaje:

# service httpd restart

Parando httpd:                                             [  OK  ]
Iniciando httpd: httpd: apr_sockaddr_info_get() failed for WEBSERVER
httpd: Could not reliably determine the server's fully qualified domain name, using for ServerName
                                                           [  OK  ]

Adicioné el nombre de mi servidor al archivo /etc/hosts al final de las lineas que comenzaban con y ::1

# vi /etc/hosts   localhost localhost.localdomain localhost4 localhost4.localdomain4 WEBSERVER
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 WEBSERVER

Reinicié nuevamente el servidor web

# service httpd restart

Y el error desapareció y así logré conectarme sin inconvenientes a la base de datos tal cual lo hacia a nivel de desarrollo.

Otra posible causa de error

Quizá el problema que tengas es en el propio controlador OCI8 y su versión.

Para corregir el problema primero deberás verificar cual es la versión de tu driver oci8, para ello tienes dos opciones:
Opción 1. crearte el archivo info.php en el directorio raíz de tu sitio web con el siguiente contenido:

<?php phpinfo() ?>

Y acceder desde tu navegador web a través de la url http://tu.sitio/info.php. O si es local por medio de http://localhost/info.php

Ahora busca la sección de oci8 y ahí encontraras la versión del driver:


OCI8 Supportenabled

Opcion 2. Si tienes el CLI de php instalado ejecuta desde la linea de comandos:

$ php --ri oci8

y te desplegará algo similar a:


OCI8 Support => enabled
Version => 2.0.6
... => ...

Tanto por una opción o por otra obtenemos el mismo resultado: Versión de OCI8 "2.0.6" y precisamente ahí esta el problema.

Al parecer, en la versión 2 del driver OCI 8 se realizaron algunos cambios que están generando problemas en Codeigniter.

Es por eso que si la versión del driver OCI8 es 2.0.x, debemos instalar el último controlador estable de la versión 1.

¿Cómo hacemos eso?

Ahora bien, hagamos el cambio de versión del driver OCI 8 en GNU/Linux CentOS 6, si utilizas Ubuntu, Fedora, RedHat u otras distribuciones, no te preocupes pues también aplica.

Primero, desinstalamos el driver OCI 8 2.x desde la linea de comandos como superusuario:

# pecl uninstall oci8

instalamos el driver oci8 1.4.10

# pecl install oci8-1.4.10

Una vez concluido reiniciamos nuestro servidor Apache

# service httpd restart

Nuevamente comprobamos la versión de nuestro driver para verificar que todo este bien.


OCI8 Supportenabled
Revision$Id: 44bfa713983a99b3e59477f6532e...
Active Persistent Connections0
Active Connections0
Oracle Run-time Client Library Version12.
Oracle Instant Client Version12.1
Temporary Lob supportenabled
Collections supportenabled

Ahora probamos nuevamente la conexión a nuestra base de datos y los mensajes de error habrán desaparecido.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

viernes, 26 de abril de 2013

Diseño de un Sistema Información para control y seguimiento del hotel “Diamante Azul”

1.1 Introducción

Hoy en día el manejo de la información es de vital importancia, por ello los sistemas de información son los pilares fundamentales de las actividades de una organización, ya que una empresa requiere de información correcta y oportuna.
En el caso de las empresas hoteleras que brindan servicios, manejan una gran cantidad de información en diferentes procesos como la administración, gerencia, recepción, contabilidad, almacén, etc. Toda esta información debe ser organizada y clasificada de modo que la gerencia pueda realizar una mejor toma de decisiones.

El presente trabajo tomara como caso de estudio al Hotel “Diamante Azul”. El hotel contaba, hace más de un año, con un sistema automatizado de control de seguridad con cámaras de vigilancia, que en la actualidad no se encuentra en funcionamiento por problemas técnicos.

Fuera de eso no cuenta con ningún otro sistema, es por ello que el presente trabajo intenta poner en marcha la construcción de un prototipo de seguimiento y control de la información para el mencionado hotel, de manera que el prototipo cumpla características de usabilidad y eficiencia utilizando metodologías adecuadas para el desarrollo de producto software.

1.2 Antecedentes

El hotel “Diamante Azul”, se encuentra establecido en el medio hace ya 4 años, prestando a todos sus clientes el servicio de hospedaje en habitaciones acordes a sus necesidades, incluyendo baño privado, desayuno buffet, TV cable, salón de eventos, atención médica, acceso a Internet entre otros servicios.

El Hotel acoge principalmente a visitantes extranjeros, que llegan con bastante afluencia al hotel, esto debido a la variada publicidad que realiza en coordinación con las agencias de viajes internacionales.

En la carrera de Informática existen proyectos de grado similares al trabajo que se propone, los cuales han sido desarrollados en semestres anteriores alcanzando los objetivos planteados.

Sistema de Información Hotelera [Cabero, 2000], cuyo propósito es mejorar los procesos administrativos y operativos para una atención más eficiente al huésped.

Sistema de Seguimiento y Control para la Hotelería Boliviana [Loza, Mendoza, 2001], cuyo propósito es resolver las dificultades y deficiencias que se presentan en algunos procesos del hotel.

Sistema de Seguimiento y Control, Caso: Hotel Sagárnaga [Cuela, 2007], cuyo propósito es automatizar los procesos administrativos y operativos de un hotel.

Los proyectos mencionados brindan una clara idea de la importancia de la información para una empresa hotelera.

1.3 Problema de la Investigación

Planteamos un listado con los problemas que pudimos encontrar en el hotel “Diamante Azul”.

  1. El registro de huésped es manual
  2. El registro de bienes del hotel es manual.
  3. El servicio de reserva de habitación es manual
  4. La planilla de sueldos de empleados es elaborado manualmente
  5. Libro de ingreso y salidas de los empleados manual
  6. Control administrativo se realiza manualmente
  7. El hotel registra a sus huéspedes solo  con nombre y no con documento.
  8. El hotel no guarda datos de información 
  9. Perdida de información administrativa
  10. El rendimiento de personal no es óptimo
  11. La información de servicios del hotel no es accesible al huésped
  12. Demora en los servicios de atención al huésped
  13. El pago es al contado y no con tarjetas de crédito
  14. El hotel está ubicado en una zona poco transitada
  15. Poca publicidad del hotel

Se tarda mucho en el registro de los huéspedes El registro del libro de ingreso y salidas de huéspedes se lo realiza en forma manual El proceso resulta moroso al momento de realizar reportes Automatizar el registro de huéspedes
Perdida de la planilla de sueldos La planilla de sueldos de empleados es elaborado manualmente En muchos casos se puede pagar doble al mismo empleado Llevar un Control Automatizado de la planilla de sueldos
No es posible determinar en forma inmediata, si una habitación está disponible El servicio de reserva de habitación es manual Molestia en los posibles huéspedes al momento de registrarse Mostrar en forma grafica ,mediante el prototipo el estado de cada habitación
La información de servicios que el hotel presta no es accesible a un posible cliente que este en línea No se cuenta con un sitio Web Pérdida de clientes Diseñar un sitio Web que detalle los servicios que brinda el hotel

1.3.1 Formulación del problema

¿Cómo se puede hacer que los procesos manuales de control y seguimiento del Hotel “Diamante Azul” sean automatizados y que brinden información actualizada, confiable y oportuna a los administrativos del hotel?

1.4 Objetivo

1.4.1 Objetivo General

Diseñar el prototipo de un sistema informático para control y seguimiento del hotel “Diamante Azul”, que brinde información confiable y oportuna para una buena toma de decisiones.

1.4.2 Objetivos Específicos

  • Integrar todos los procesos que el hotel necesita para un mejor control de los mismos como ser los procedimientos de registro de los huéspedes, registro de reservaciones en línea, etc.
  • Estudiar métodos y metodologías para el desarrollo de software.
  • Estudiar estrategias de prueba.
  • Estudiar técnicas de prueba.
  • Estudiar métricas de prueba.

1.5 Justificación

1.5.1 Justificación Económica

El presente proyecto se justifica económicamente al proponer un software de aplicación como producto final, para mejorar el procesamiento y manejo de la información el cual disminuirá las pérdidas económicas al no contar con un sistema automatizado.

1.5.2 Justificación Técnica

El presente proyecto se justifica técnicamente por la utilización de tecnología informática avanzada como las redes de computadoras, Bases de Datos y Modelo Cliente/Servidor.

1.5.3 Justificación Social

La implantación del sistema ayudara al personal involucrado al mejor desenvolvimiento de sus funciones ya que al hotel acuden huéspedes de diferentes estratos sociales de Bolivia y del Extranjero.

1.6 Alcances

Para desarrollar el prototipo propuesto es necesario realizar un diagnostico de la estructura y funcionamiento del hotel resolviendo las dificultades y deficiencias más importantes.
  • Implementar los módulos de registro de huéspedes y registro de habitaciones.
  • Desarrollar un módulo que permita imprimir reportes de huéspedes alojados en cualquier momento.
  • Desarrollar un módulo de reservas en línea.
  • Elaborar un manual para el manejo del prototipo.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

jueves, 18 de abril de 2013

Instalar UniFi Controller en Linux Ubuntu/Zentyal

Si contamos con productos de Ubiquiti Networks, en este caso UniFi, tendremos la necesidad de instalar UniFi Controller para administrar nuestros puntos de acceso. El CD de instalación que viene junto con los puntos de acceso UniFi cuenta con el instalador pero solo esta disponible para Windows.
Uno de los aspectos a destacar de esta empresa es que brinda soporte para entornos GNU/Linux a través de repositorios (familia Debian) o por medio de binarios y su instalación no tiene ninguna complejidad para quienes conocen un poquito de Linux.

A continuación se detallan los pasos a seguir.

Ingresemos a nuestra consola virtual y pasemos a ser superusuarios:

$ sudo -s

Editemos el archivo sources.list agregando los repositorios para nuestra distribución y versión.

# nano /etc/apt/sources.list

deb dist 10gen
deb precise ubiquiti

Añadamos las claves publicas de los repositorios añadidos anteriormente

apt-key adv --keyserver --recv 7F0CEB10
apt-key adv --keyserver --recv C0A52C50

Actualizamos nuestros repositorios

apt-get update

E instalamos unifi controller.

apt-get install unifi

Y punto final.

La verdad es muy pero muy simple y no hay donde perderse.

Como comentario, Ubuntu Precise 12.04 es la version base para Zentyal 3.0.2. Zentyal entre muchas de sus funciones nos permite realizar control de tráfico, monitoreo de red, proxy, autenticación, portal cautivo y muchos otros servicios mas.

En los posteriores post estaré configurando esos servicios integrando UniFi Controller y Zentyal para tener mayor control de mi red WiFi.


Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

miércoles, 17 de abril de 2013

Configurar sitios virtuales e implementar Web Hosting en Apache 2 bajo GNU/Linux CentOS 6.4

Si queremos alojar mas de un website en nuestro servidor Web necesitamos configurar hosts virtuales dentro de Apache (httpd). Cada uno de los VirtualHost es independiente del otro. Lo mas común es que cada sitio sea gestionado por un usuario diferente.
Siguiendo esa lógica creemos un usuario al que se le asignará nuestro sitio.

# useradd vhuser01 -s /sbin/nologin
# passwd vhuser01

Dentro de la carpeta personal de vhuser01 adicionemos un directorio denominado public_html

# mkdir /home/vhuser01/public_html
# chown vhuser01.vhuser01 /home/vhuser01/public_html
# chmod 755 /home/vhuser01/public_html
# chmod 755 /home/vhuser01

Ahora que tenemos el directorio base es hora de configurar httpd. Primero realizamos una copia de seguridad a nuestro archivos de configuración:

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.back

Abrimos el archivo httpd.conf

# vi /etc/httpd/conf/httpd.conf

Y buscamos las siguientes lineas comentadas:

#NameVirtualHost *:80

#<VirtualHost *:80>
#    ServerAdmin
#    DocumentRoot /www/docs/
#    ServerName
#    ErrorLog logs/
#    CustomLog logs/ common

Descomentamos esas sentencias y realizamos las modificaciones pertinentes:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /home/vhuser01/public_html

En esencia, la configuración anterior nos indica donde almacenaremos nuestras páginas web (/home/vhuser01/public_html), el nombre de nuestro dominio ( y el puerto de escucha para nuestro sitio (80).
Por defecto, SElinux bloquea todo intento de acceso a los directorios personales. Por eso ahora debemos permitir que httpd pueda leer archivos del directorio personal

# setsebool -P httpd_enable_homedirs 1

Para que nuestro dominio "" sea traducido a una dirección IP  necesitaremos añadir este dominio a nuestro cliente web.

Modifiquemos el archivo hosts:

# vi /etc/hosts

Y por fin podemos ejecutar nuestro navegador web favorito y colocar la URL para ver nuestro sitio.

Pagina de inicio por defecto de httpd centos 6.4 - host virtuales - webhosting

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

jueves, 11 de abril de 2013

Instalar UniFi Controller en CentOS 6.6 y Red Hat 6

Para instalar UniFi Controller en nuestro servidor debemos realizar los siguientes pasos:

Primero añadimos el repositorio del servidor de base de datos no relacional MongoDB creando el archivo 10gen.repo dentro del directorio /etc/yum.repos.d/ con el siguiente contenido:

# vi /etc/yum.repos.d/10gen.repo

- Para sistemas CentOS o Red Hat de 64 bits (x86_64):

name=10gen Repository

- Para sistemas CentOS o Red Hat de 32 bits (i686):

name=10gen Repository

Ahora instalamos todos los paquetes necesarios para que UniFi Controller funcione adecuadamente

# yum install mongo-10gen mongo-10gen-server java-1.7.0-openjdk

Paralelamente podemos descargar la última versión del instalador de la aplicación Unifi Controller (

Suponiendo que el archivo comprimido se descargó en el directorio "Descargas", entonces ejecutamos el siguiente comando para descomprimir el archivo zip:

# unzip /home/tu_usuario/Descargas/ -d /usr/local/

Para ejecutar el servicio UniFi Controller debemos escribir la siguiente sentencia:

# java -jar /usr/local/UniFi/lib/ace.jar start

Ahora accedamos a nuestra aplicación localmente a través de la URL
Si deseamos administrar remotamente nuestro servidor UniFi es necesario abrir el puerto 8443 en el cortafuegos. Para esto modifiquemos la configuración del firewall del sistema operativo.

# vi /etc/sysconfig/iptables

Debajo de la linea

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Añadimos la linea

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT

Guardamos el archivo y reiniciamos el cortafuegos.

# service iptables restart

Ahora podremos acceder desde cualquier navegador web remoto a través de la dirección IP configurada en el servidor, por ejemplo,
Ahora bien, como Unifi Controller debe estar siempre activo y además debe tener la posibilidad de ejecutarse en cuanto arranque el sistema, debemos asociarlo al sistema operativo como un servicio realizando los siguientes pasos:

Creamos el archivo unifi

# vi /etc/init.d/unifi

# chkconfig: 2345 95 20
# Provides: UniFi Control Software
# Description: Use Java to start /usr/local/UniFi/lib/ace.jar
# to allow the wireless access point controlling
# software and provide device management
# to UniFi wireless network.

case "$1" in
    echo -n "Starting UniFi controller...   "
    java -jar /usr/local/UniFi/lib/ace.jar start &
    echo " [ OK ]"

    echo -n "Stopping UniFi controller...   "
    java -jar /usr/local/UniFi/lib/ace.jar stop &
    echo " [ OK ]"

    echo -n "Restarting UniFi controller... "
    java -jar /usr/local/UniFi/lib/ace.jar stop &
    sleep 1
    java -jar /usr/local/UniFi/lib/ace.jar start &
    echo " [ OK ]"

    echo "usage: service unifi {start|stop|restart}"

exit 0

Asignamos el atributo de ejecución al archivo creado:

# chmod a+x /etc/init.d/unifi

Añadimos el script como un servicio para que inicie al arrancar el sistema operativo:

# chkconfig unifi on

Y con ello terminamos la instalación completa de Unifi Cotroller en CentOS o RedHat 6.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

martes, 19 de marzo de 2013

Instalar JDK 7 y Netbeans 7.3 en Linux ROSA Desktop.Fresh

Como sabrán, Mandriva Linux tras la versión 2011 dejó de tener soporte. Por tanto, es hora de buscar una distro alternativa y ROSA es una de las mejores opciones disponibles.

Ya que esta distribución no es tan conocida, decidí realizar varios post al respecto para que ustedes puedan apreciar sus bondades.

Si uno es desarrollador Java, quizás sea imprescindible contar con una plataforma de desarrollo como NetBeans. A continuación explico como instalarlo.

Tengamos en cuenta que las instrucciones que se describirán son totalmente aplicables para CentOS 6, Red Hat 6, Fedora 19, Mandriva 2011 y cualquier otra distribución que utilice empaquetado RPM.

Comencemos bajando los instaladores de JDK y NetBeans según el siguiente criterio:

Descargar NetBeans:
  • Idioma: Español
  • Plataforma: Linux (x86/64)

Descargar NetBeans 7.3

Descargar JDK:
  • Linux x86 si tu sistema es de 32 bits con empaquetado RPM
  • Linux x64 si tu sistema es de 64 bits con empaquetado RPM

Descargar JDK 7 para GNU/Linux

Una vez que obtengamos los archivos y suponiendo que están en el directorio 'Descargas', comencemos la instalación. Ten en cuenta que los nombres y las versiones de los archivos instalados pueden variar:

$ cd ~/Descargas

$ su

# rpm -Uvh jdk-7u17-linux-x64.rpm

Si aparecen los siguientes errores, no hay por que preocuparse:

Error: Could not open input file: /usr/java/jdk1.7.0_17/jre/lib/rt.pack
Error: Could not open input file: /usr/java/jdk1.7.0_17/jre/lib/jsse.pack
Error: Could not open input file: /usr/java/jdk1.7.0_17/jre/lib/charsets.pack
Error: Could not open input file: /usr/java/jdk1.7.0_17/lib/tools.pack
Error: Could not open input file: /usr/java/jdk1.7.0_17/jre/lib/ext/localedata.pack

Ahora instalemos NetBeans IDE ejecutando los siguientes comandos:

# chmod a+x 
# ./

Configurando el instalador...
Buscando la JVM en el sistema...
Extrayendo los datos de la instalación...
Ejecutando el asistente de instalación...

Obtendremos el asistente de instalación que nos guiará durante todo este proceso.

Instalador de NetBeans IDE 7.3 - Pantalla inicial

En caso de que necesitemos adicionar o eliminar algunos componentes de NetBeans presionemos 'Personalizar...'.

Adicionar o quitar componenetes de NetBeans 7.3

Una vez terminado presionemos 'Aceptar' para volver a la pantalla anterior.

Pantalla de inicio de instalación de NetBeans IDE 7.3

Presionemos 'Siguiente' para continuar y así tendremos una nueva pantalla donde debemos aceptar los términos del acuerdo de licencia de NetBeans, y presionamos 'Siguiente'.

Términos del acuerdo de licencia en NetBeans 7.3

Ahora aceptamos la licencia de JUnit en caso de que necesitemos tenerla instalarla. Presionamos 'Siguiente'.

Contrato de licencia JUnit en NetBeans IDE 7.3

Ahora elegimos los directorios donde se instalará NetBeans y la ubicación donde está instalado JDK. Por mi parte, mantuve los valores por defecto.

Ubicación de instalación de NetBeans 7 y JDK

Si es que decidimos instalar GlassFish 3 como parte de NetBeans, tendremos que asignar la ruta donde se instalará.

Ubicación de GlassFish 3

Si es que decidimos instalar Apache Tomcat 7 debemos que asignar el directorio de instalación, presionamos 'Siguiente'.

Ubicación de Apache Tomcat 7

Obtendremos un pequeño resumen de lo que se va a instalar, presionamos 'Check for Updates' si queremos que NetBeans verifique la existencia de actualizaciones de software, presionemos 'Instalar'.

Resumen de instalación en NetBeans 7.3, RPM

Y se inicia el proceso de instalación. Aquí solo nos resta esperar un poco.

Proceso de instalación de NetBeans 7.3 en Linux

Una vez concluido el proceso anterior y si queremos brindar información anónima a NetBeans podemos seleccionar la opción 'Apoye al proyecto Netbeans...'. Presionamos 'Terminar'.

Fin de instalación Netbean 7.3

Una vez terminada la instalación, podremos disponer de nuestro IDE de desarrollo 100 % funcional.

Espero les sirva mucho.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

viernes, 15 de marzo de 2013

¿Cómo Incorporar mi máquina virtual a la red en VMware?

Para que nuestra maquina virtual sea visible para todos los usuarios de la red local es necesario realizar algunos cambios de configuración tanto a VMware Workstation como a nuestro sistema operativo virtualizado, en nuestro caso CentOS 6/Red Hat 6.
Recuerden que VMware Workstation puede virtualizar una multitud de Sistemas Operativos ya sea Windows XP, Windows 7, Windows 8; distribuciones GNU/linux como ser Ubuntu, Mint, Fedora, Debian, Suse entre otros. A continuación explico la configuración en VMware Workstation que aplica para cualquier sistema operativo que tengamos virtualizado.

Para eso, en la ventana principal de VMWare seleccionamos nuestro sistema operativo y presionamos "Network Adapter".

Editar la configuración de red en una maquina virtual con VMware 9

Se desplegará un cuadro de configuración donde debemos seleccionar la opción "Bridged" y presionar "OK".

Cambiar configuración del adaptador de red en VMware 9

Notará que la opción "Network adapter" cambio de "NAT" a "Bridged" Ahora iniciamos nuestra máquina virtual presionando "Power on this virtual machine".

Iniciar una máquina virtual con VMware 9

Una vez que inicie CentOS es necesario configurar la tarjeta de red de nuestra máquina virtual para habilitarla y asignarle una dirección IP.

Aquí podrás encontrar la manera de habilitar la tarjeta de red y configurarla a través de DHCP. Por otro lado, si debes asignar una dirección IP fija a tu máquina virtual, puedes obtener toda la información en este post.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

Configurar una dirección IP estática y habilitar la tarjeta de Red en CentOS 6.4

Si nuestra red no cuenta con el servicio DHCP o si necesitamos asignar una dirección IP fija o cambiar la IP a nuestro sistema, debemos realizar ciertos pasos de configuración a CentOS 6 que también aplica para Red Hat 6.
Supongamos que estas son las direcciones a configurar:

Dirección IP     :
Mascara de red   :
Puerta de Enlace :
DNS primario     :
DNS secuntario   :

Primero accedamos a nuestra consola virtual como superusuario:

login: root
password: [contraseña de superusuario]

Determinemos el nombre que asignó CentOS a nuestra tarjeta de red: 

# ifconfig -a

eth0      Link encap:Ethernet HWaddr 00:0C:29:E2:F6:28

          BROADCAST MULTICAST MTU:1500 Metric:1

lo        Link encap:Local Loopback
          inet addr: Mask:

Ya que conocemos el denominativo de nuestra tarjeta de red, accedamos al archivo de configuración ifcfg-eth0:. Cabe aclarar que los parámetros DEVICE, HWADDR, TYPE y UUID pueden tener valores distintos a los que me muestran a continuación, no los modifique.

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

Por defecto la interfaz de red está deshabilitada:


y su configuración inicial permite recibir la dirección IP de manera automática:


Modifiquemos ambos parámetros y adicionemos otros de tal manera que el archivo de configuración quede similar a:


Recuerde que para modificar y agregar texto en nuestro editor vi debemos presionar la tecla 'i' y para guardar el archivo presionamos la tecla ESC, escribimos :wq y presionamos ENTER.

Una vez hecho eso reiniciemos el servicio de red ejecutando:

# service network restart

Interrupción de la interfaz loopback:               [ OK ]
Activación de la interfaz loopback:                 [ OK ]
Activando interfaz eth0:                            [ OK ]

Para verificar que nuestra si configuración de red podemos ejecutar:

# ifconfig

eth0  Link encap:Ethernet  HWaddr 00:0C:29:E2:F6:28
      inet addr: Bcast:... Mask:
...   ...

Y con eso queda concluido este proceso de configuración.

También pueden consultar Configurar IP dinámico (DHCP), Instalar MySQL, PHP y Apache y finalmente Instalar JDK y NetBeans todo en CentOS y Red Hat.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

jueves, 14 de marzo de 2013

Integrar PHP, MySQL y Apache en GNU/Linux CentOS 6

Como sabrán, tanto PHP, MySQL y Apache son programas que pueden llegar a trabajar totalmente independientes uno del otro en nuestro servidor con Red Hat o CentOS, pero en caso de que necesitemos integrarlos para desplegar aplicaciones web (LAMP), por ejemplo, es necesario que estos tres trabajen de manera conjunta.
Instalemos cada una de estas aplicaciones siguiendo los posts citados a continuación:

Para que exista integración entre PHP y MySQL debemos instalar adicionalmente:

# yum install php-mysql

Ahora probemos si todo funciona adecuadamente. Primero crearemos un archivo llamado info.php dentro del directorio raiz de Apache 2

# vi /var/www/html/info.php

<?php phpinfo(); ?>

Lo guardamos y desde nuestro explorador accedemos a la dirección o si es desde otro equipo en la misma red a traves de [IP]/info.php y obtendrán:

Así sabemos que todo está OK.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

Instalar PHP 5 en GNU/Linux CentOS 6

Si queremos instalar PHP en nuestra distribución Linux ya sea Red Hat 6 o CentOS 6 o inclusive Fedora debemos realizar las siguientes tareas.
Ingresar como superusuario y ejecutar el comando desde la consola

# yum install php

Comenzará a buscar todas las dependencias para el paquete php y nos desplegará un mensaje solicitando confirmación de instalación. Debemos responder afirmativamente:

Total download size: 3.8 M
Install size: 13 M
Is this ok [y/N]: y

Una vez terminada la instalación a través de nuestro gestor de paquetes ya tendremos disponible PHP.
Para ingresar a su interprete ejecutamos:

# php 

y listo.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

Instalar y configurar MySQL 5 en Linux CentOS 6

Para instalar el servidor de base de datos MySQL en nuestro servidor CentOS, sigamos los pasos a continuación descritos.
Abrir una terminal e logearse como superusuario. Ejecutar el comando:

# yum install mysql-server

Nos pedirá una confirmación de instalación, digamosle sí presionando la tecla 'y'

Total download size: 23 M
Is this ok [y/N]: y

Y comenzará la descarga e instalación del servidor. Una vez terminada la instalación obtendremos una salida parecida a:

  mysql-server.x86_64 0:5.1.67-1.el6_3
Dependency Installed:
  mysql.x86_64 0:5.1.67-1.el6_3
  perl.x86_64 4:5.10.1-129.el6
  perl-DBD-MySQL.x86_64 0:4.013-3.el6
  perl-DBI.x86_64 0:1.609-4.el6
  perl-Module-Pluggable.x86_64 1:3.90-129.el6
  perl-Pod-Escapes.x86_64 1:1.04-129.el6
  perl-Pod-Simple.x86_64 1:3.13-129.el6
  perl-libs.x86_64 4:5.10.1-129.el6
  perl-version.x86_64 3:0.77-129.el6
Dependency Updated:
  mysql-libs.x86_64 0:5.1.67-1.el6_3
Ahora levantamos el servicio ejecutando el comando:

# service mysqld start

Si deseamos que nuestro servidor de base de datos MySQL se ejecute al iniciar nuestro sistema y siempre esté activo debemos introducir el comando:

# chkconfig mysqld on
Accedamos a la consola de MySQL escribiendo:

# mysql -u root -p

Cuando solicite la contraseña presionamos ENTER y listo.

Como abran notado, en un inicio MySQL no tiene ningún password asignado. Para asignar una contraseña a nuestro usuario root y hacer que nuestro DB Server sea mas seguro debemos introducir el comando:

# mysql_secure_installation

Enter current password for root (enter for none): ENTER

Set root password? [Y/n] y
New password: nueva_contraseña
Re_enter new password: nueva_contraseña
Password updated sucessfully!
Reloading privilege tables..
 ... Success!

De forma predeterminada MySQL tiene un usuario anónimo que permite a cualquiera acceder a MySQL sin necesidad de tener una cuenta de usuario. Si nuestra base de datos pasa a entorno de producción debemos eliminar ese usuario. Si nuestro servidor es de prueba local, presionamos 'n'

Remove anonymous users? [Y/n] y
... Success!

MySQL tiene una base de datos llamada 'test' que cualquiera puede acceder y como es solo de prueba puede ser removido para pasar a producción. Si nuestro servidor es de prueba local, presionamos 'n'

Remove test database and access to it? [Y/n] y
 - Droping test database...
 ... Success!
 - Removing privileges on test database ...
 ... Success!

Recargar las tablas de privilegios para que todos los cambios que realizamos tengan efecto

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

Y con eso terminamos la instalación y configuración de MySQL.

Posibles errores

En caso de que les aparezca un error parecido al siguiente:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Es porque el servidor MySQL no esta activo, para levantar el servicio ejecutamos el comando

# service mysqld start

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

Instalar y configurar httpd (Apache 2) en GNU/Linux CentOS 6.4

Para instalar el servidor web Apache en nuestro sistema operativo, requerimos tener al menos la versión mínima de CentOS. Aqui les muestro como instalarlo.
El primer paso a seguir es obtener los privilegios de superusuario. Para ello nos autenticamos como usuario root:

login: root
Password: [contraseña de superusuario]

Una vez como usuario privilegiado debemos instalar Apache 2 y de manera conjunta se actualizará nuestro repositorio de paquetes (base de datos que contiene todas las aplicaciones disponibles para nuestro sistema operativo).

En caso de que necesites acceder a Internet a través de un servidor proxy, aquí podrás encontrar la configuración necesaria.

# yum install httpd

Y escribamos 'y' a la la confirmación de instalación:

Total download size: 1.1 M
Installed size: 3.6 M
Is this ok [y/N]: y

Y esperemos a que descargue e instale los paquetes. En caso de que el sistema les pida importar una llave GPG, respondamos afirmativamente 'y':

Importing GPG Key 0x...:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) ...
 Package: centos-release-6-4.el6.centos.10.x86_64 ...
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]: y

Al finalizar la instalación nos mostrará el mensaje:


Para iniciar el servicio web ejecutemos:

# service httpd start

Ahora bien, si queremos que nuestro servidor web Apache se inicie al arrancar nuestro sistema operativo, debemos ejecutar la siguiente linea de comando:

# chkconfig httpd on

Ahora podremos acceder a nuestro servidor localmente a traves de la dirección IP

Ahora bien, por defecto CentOS tiene habilitado el cortafuegos que niega conexiones remotas a nuestro servidor. Si queremos que nuestro servicio web esté disponible para cualquier usuario de nuestra red o incluso Internet, ejecutemos:

# vi /etc/sysconfig/iptables

Añadamos la linea:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

debajo de la linea:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Guardemos los cambios efectuados y reiniciemos el servicio:

# service iptables restart

Ahora sí podremos acceder a nuestro sitio desde cualquier punto en nuestra red mediante de la IP del servidor. Incluso, si nuestra IP es pública, cualquier persona en el mundo podrá verla.

Pagina de bienvenida - Apache2 (httpd) en GNU/Linux CentOS

Si deseas conocer con mas detalle la configuración de Apache 2 y la creación de sitios Virtuales para alojar websites por ejemplo, haz click aquí. Recuerda que todo lo explicado tambien aplica a Red Hat, Fedora y otros.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.

Configurar dirección IP con DHCP y habilitar la tarjeta de Red en GNU/Linux CentOS 6.4

Si durante el proceso de instalación no configuró una dirección IP, entonces es tiempo de hacerlo en nuestro CentOS 6.4 o la última version a la fecha Centos 6.5.
Primero accedamos a nuestra consola y autentiquemonos como superusuario:

login: root
password: [contraseña de superusuario]

Debemos determinar cual es el nombre que asignó CentOS a nuestra tarjeta de red, para ello ejecutamos: 

# ifconfig -a

eth0      Link encap:Ethernet HWaddr 00:0C:29:E2:F6:28
          BROADCAST MULTICAST MTU:1500 Metric:1

lo        Link encap:Local Loopback
          inet addr: Mask:

Ahora que conocemos el nombre de la tarjeta de red, accedamos al archivo de configuración ifcfg-eth0:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

Por defecto la tarjeta de red está configurada para recibir la dirección IP de manera automática, eso lo describe la linea:


El único cambio que se debe realizar es habilitar la tarjeta de red para que inicie su funcionamiento desde que arranque el sistema. Cambiemos ONBOOT=no por yes. Presionemos la tecla 'i' para entrar en modo de inserción en nuestro editor de texto:


Ahora guardemos el archivo presionando la tecla ESC, escribimos :wq y presionamos ENTER. Una vez hecho eso reiniciemos el servicio de red ejecutando:
# service network restart

Y listo. Deberíamos recibir una salida similar a esta:

Interrupción de la interfaz loopback:               [ OK ]
Activación de la interfaz loopback:                 [ OK ]
Activando interfaz eth0:
Determinando la información IP para eth0... hecho   [ OK ]

Para determinar cual es nuestra dirección IP y nuestra máscara de red ejecutemos:

# ifconfig

eth0      Link encap:Ethernet HWaddr 00:0C:29:E2:F6:28
          inet addr: Bcast:... Mask:
...       ...

Y con eso terminamos.

Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.