5 de septiembre de 2016

Instalación de OCS Inventory Server 2.2, 2.3 en CentOS 7.x


Saludos internautas.

[ Ver también ] Instalación de OCS 2.3 en CentOS 7.3 por repositorio

Para los que no lo conocen, OCS Inventory es un sistema Open Source de inventario de equipos de cómputo, pensado para la empresa. Es totalmente libre y gratuito.

Para redactar este artículo, se usó una mezcla entre referencias externas de otras páginas (se mencionan al final), junto a mi experiencia en instalaciones de versiones anteriores de OCS Inventory.

Como requisitos, se utilizará un servidor CENTOS 7.2 64 bits - instalación "minimal", esto es, sin interfaz gráfica. 
Si se tratase de un servidor virtual, una configuración de 10 GB de disco duro y 3 GB de RAM, serían suficientes para llevar el inventario de unos 300 o más equipos.

Empezamos.

--------------------------------------------
0 ----- CONFIGURAR LA RED -
--------------------------------------------
# vi /etc/sysconfig/network-scripts/ifcfg-xxxxxxx
Modificar las líneas:
BOOTPROTO=static
ONBOOT=yes

Agregar las siguientes líneas al final del script (obviamente cambiar las x por los valores respectivos de su red)
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.255.0
GATEWAY=xxx.xxx.xxx.xxx
DNS1=xxx.xxx.xxx.xxx

Configurar el nombre del servidor (como ejemplo, le llamé ocsserver)
# hostnamectl set-hostname ocsserver.midominio.com

Adicionalmente editar el archivo 
# vi /etc/sysconfig/network 

Agregar las líneas siguientes con los valores correspondientes a su red.
HOSTNAME=ocsserver.midominio.com 
DNS1=xxx.xxx.xxx.xxx
DNS2=xxx.xxx.xxx.xxx
SEARCH=midominio.com

Reiniciar el servicio de red o bien reiniciar el servidor.

----------------------------------------------------------------------------------------------------
1 ----- AGREGAR REPOSITORIO EPEL Y ACTUALIZAR EL SERVIDOR -
----------------------------------------------------------------------------------------------------
# yum install epel-release
# yum update
(Darle "y", si pide confirmación para aceptar las keys y los cambios)
  *** Reiniciar el equipo al terminar

-------------------------------------------------------------------------
2 ----- DESHABILITAR SELINUX (RECOMENDADO) -
-------------------------------------------------------------------------
Se recomienda deshabilitar SELINUX para que no se presenten errores en la instalacion de ocs inventory.
Para deshabilitar SELinux, editar el archivo /etc/sysconfig/selinux 
# vi /etc/sysconfig/selinux

Cambiar la linea SELINUX=enforcing a SELINUX=disabled 
[IMPORTANTE] Para que los cambios surtan efecto, reiniciar el servidor.

--------------------------------------------------------------------
3 -----  EL FIREWALL DE CENTOS 7 -
--------------------------------------------------------------------
Si nuestro CentOS no trae el firewall instalado, como los primeros releases de la versión 7. Nota - La versión CentOS 7.3+ ya lo trae por defecto y ejecutándose.

# yum install firewalld
# systemctl enable firewalld
# systemctl start firewalld

Si el firewall está instalado y ejecutándose, hay que configurar el puerto 80 o el servicio http, para que los equipos puedan acceder al server. 

# firewall-cmd --permanent --zone=public --add-port=80/tcp
# firewall-cmd --reload

------------------------------------------------------------------
4 ----- INSTALAR ALGUNAS HERRAMIENTAS -
------------------------------------------------------------------
# yum install wget net-tools mlocate

-----------------------------------------------------------------------------------
5 ----- INSTALAR DEPENDENCIAS DEL OCS INVENTORY -
-----------------------------------------------------------------------------------
# yum install gcc make mariadb-server httpd php php-mysql php-gd perl-CPAN perl-Archive-Zip mod_perl mod_perl-devel php-pclzip php-mbstring php-soap

----------------------------------------------------------------------------------------------
6 ----- INSTALAR DEPENDENCIAS PERL PARA OCS INVENTORY -
----------------------------------------------------------------------------------------------
# yum install perl-YAML perl-XML-Simple perl-Compress-Zlib perl-DBI perl-DBD-MySQL perl-Net-IP perl-SOAP-Lite perl-BSD-Resource perl-Apache-DBI perl-Apache2-SOAP perl-XML-Entities 

Los modulos perl-Apache-DBI y perl-Apache2-SOAP no se encuentran en los repositorios de yum, así que hay que instalarlos por CPAN
Invocar CPAN

# perl -MCPAN -e shell

Si es la primera vez que se ejecuta, aceptar todos los cambios [ENTER] y esperar que se configure. 
Recomendado - actualizar CPAN (demora algunos minutos).

CPAN[]> install Bundle::CPAN
CPAN[]> reload cpan

Instalar los modulos

CPAN[]> install Apache::DBI
CPAN[]> install Apache2::SOAP
CPAN[]> exit

---------------------------------------------------------------------------------------------
7 ----- CONFIGURACION DE INICIO Y SEGURIDAD DE MARIADB -
---------------------------------------------------------------------------------------------
# systemctl enable mariadb
# systemctl start mariadb
# mysql_secure_installation

Enter current password for root (enter for none): [ENTER]
Set root password? [Y/n] [ENTER]
New password: 
Re-enter new password: 
Remove anonimous users? [Y/n] [ENTER]
Disallow root login remotely? [Y/n] [ENTER]
Remove test database and access to it? [Y/n] [ENTER]
Reload privilege tables now? [Y/n] [ENTER]

--------------------------------------------------------------------------------------------------
8 ----- CREACIÓN DE UNA BASE DE DATOS PARA EL OCS SERVER -
--------------------------------------------------------------------------------------------------
# mysql -u root -p

Enter password: [Escribir la contraseña del paso anterior]

MariaDB[(none)]> CREATE DATABASE ocsweb CHARACTER SET utf8 COLLATE utf8_general_ci;

MariaDB[(none)]> exit;

------------------------------------------------------------
9 ----- ACTIVAR APACHE EN EL SERVER -
------------------------------------------------------------
# systemctl enable httpd
# systemctl start httpd

----------------------------------------------------
10 ----- INSTALAR OCS INVENTORY -
----------------------------------------------------
Descargar el archivo OCSNG_UNIX_SERVER-2.2.1.tar.gz, del repositorio oficial.

# wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/2.2.1/OCSNG_UNIX_SERVER-2.2.1.tar.gz

[ Actualizado ] El procedimiento es el mismo con la versión 2.3.0 y 2.3.1. Así que si quieren instalar alguna de esas versiones, pueden obtener la descarga [ aquí ]

Descomprimir el archivo y ejecutar la instalación. Cambiar el "2.2.1" por la versión que hayan descargado.

# tar xzvf OCSNG_UNIX_SERVER-2.2.1.tar.gz
# cd OCSNG_UNIX_SERVER-2.2.1
# ./setup.sh

Practicamente hay que darle [ENTER] a todo
En algun momento aparecerá una advertencia: Checking for Apache2::SOAP PERL module...
Warning: PERL module Apache2::SOAP is not installed !
Omitir la advertencia y terminar con el proceso.
  
---------------------------------------------------------------------------------
11 ----- REPARAR PERMISOS Y POSIBLES PROBLEMAS -
---------------------------------------------------------------------------------
# chown -R apache.apache /usr/share/ocsinventory-reports

Ahora intentar reiniciar el servicio de Apache

# systemctl restart httpd

Si el servicio reinicia sin problemas, saltar al punto 12
*********************************
Si ocurre un error tratando de iniciar Apache, verificar en el archivo log del httpd

# vi /var/log/httpd/error_log

Si entre las lineas se encuentran los siguientes errores:
Can't locate Apache/Ocsinventory/Plugins/Apache.pm in @INC (@INC contains: /usr/local/lib64/perl5...
Can't load Perl module Apache::Ocsinventory::Plugins::Apache for server srv-ocs.clinique.local:0, exiting...
Se puede resolver copiando los siguientes archivos del instalador del OCSInventory

# cd /root/OCSNG_UNIX_SERVER-2.2.1/Apache
# cp Ocsinventory.pm /usr/local/share/perl5/Apache/
# cp Ocsinventory -rf /usr/local/share/perl5/Apache/

* * * * *
[!] Me ha sucedido que en algunos casos no se encuentra /usr/local/share/perl5 y se crea un directorio perl5 en /root. Si es así, entonces copiar 
cp -rf /root/perl5/lib/perl5 /usr/local/share

Verificar, además, las credenciales de la base de datos, editando los archivos
/usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php
y
/etc/httpd/conf.d/z-ocsinventory-server.conf
* * * * *

Ahora si, reiniciar el servicio de Apache

# systemctl restart httpd
*********************************

-------------------------------------------------------------
12 ----- CONFIGURACIÓN FINAL DEL OCS -
-------------------------------------------------------------
Desde una PC de escritorio abrir un navegador web e ir a la dirección:
http://ip-del-server/ocsreports
*** reemplazar ip-del-server por el IP que tiene el servidor. 



*********************************
Si aparece el siguiente mensaje: 
Document root should be writable : /usr/share/ocsinventory-reports/ocsreports
Se debe a que SELinux esta activado e impide la escritura de los archivos.
Para arreglar el problema, ver el punto 2
*********************************

Luego llenar los campos con los valores correspondientes.
MySQL login: root
MySQL password: [El-password-que-se-configuró-en-el-punto-7]
Name of Database: ocsweb
MySQL HostName: localhost

Es posible que pida actualizar algunas tablas de la base de datos. Si aparece, el siguiente mensaje:
"Existing database updated | Current version:7006=>Expected version:7009"
Le dan al botón "Perform the update".



Iniciar sesión con el usuario y contraseña por defecto: admin // admin

Finalmente, regresar al servidor y eliminar, o renombrar, el archivo install.php

# rm -f /usr/share/ocsinventory-reports/ocsreports/install.php 




El sistema ya está instalado y listo para recibir los reportes de los clientes.

- FIN -

Referencias
http://www.ocsinventory-ng.org/en/
http://drivemeca.blogspot.com/2016/07/la-guia-final-de-ocs-inventory-en.html
http://felliperocha.blogspot.com/2014/11/ocs-inventory-no-centos-7.html
http://ask.ocsinventory-ng.org/4615/apache-dont-start-cant-locate-apache-pm