En este artículo veremos cómo instalar OCS Inventory en CentOS 7 paso a paso, de modo que al final tendrás funcionando este afamado sistema de inventariado automático de equipos y dispositivos en tu servidor o VPS CentOS.
Contenido
Antes de instalar OCS Inventory NG Server en CentOS 7
Para poder completar esta guía de instalación de OCS Inventory en CentOS 7 debes cumplir los siguientes requerimientos mínimos:
- Una máquina CentOS 7 actualizada.
- Un entorno o pila LAMP (Apache con PHP hasta 7.4 y bases de datos MariaDB/MySQL).
- Acceso a consola con root o un usuario con privilegios de sudo.
- Conexión a Internet.
Si aún no dispones del entorno mínimo, puedes echar un rápido vistazo a nuestra guía de instalación LAMP en CentOS 7.
También necesitamos algunas herramientas y utilidades del sistema, que obtendremos de los repositorios de CentOS 7, para lo que actualizamos las listas de paquetes:
~$ sudo yum update
Y las instalamos:
~$ sudo yum install -y policycoreutils-python tar wget
Cómo descargar OCS Inventory NG Server para CentOS 7
Al no haber paquetes disponibles en la distribución, tendremos que descargar OCS Inventory NG Server para CentOS 7 acudiendo a la fuente del proyecto en Github.
Encontraremos el paquete para la última versión estable en formato .tar.gz. En este tutorial copiaremos el enlace del paquete para descargarlo desde consola con el comando wget:
~$ wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/2.12.1/OCSNG_UNIX_SERVER-2.12.1.tar.gz
Cómo instalar OCS Inventory NG Server en CentOS 7
Para instalar OCS Inventory NG Server en CentOS 7 hay que realizar una serie de tareas previas que detallaremos a continuación.
Dependencias
Necesitamos descargar bastantes paquetes de dependencias, para lo que usaremos los repositorios de CentOS 7:
~$ sudo yum install -y mod_perl perl-Apache-DBI perl-DBD-MySQL perl-XML-Simple perl-Net-IP perl-Archive-Zip perl-Mojolicious perl-Switch perl-Plack php-gd php-mbstring php-soap php-xml
Reiniciamos el servicio web para que cargue los nuevos módulos y la configuración de PHP:
~$ sudo systemctl restart httpd
Archivos de OCS Inventory
Descomprimimos el archivo que descargamos anteriormente en el directorio de trabajo actual:
~$ tar xf OCSNG_UNIX_SERVER-2.12.1.tar.gz
Cambiamos el directorio de trabajo a la carpeta que se acaba de crear con los archivos de OCS Inventory:
~$ cd OCSNG_UNIX_SERVER-2.12.1
En alguna versión de OCS Inventory hay que hacer algún ajuste para que funcione:
$ nano setup.sh
Cerca del principio del archivo puede aparecer una línea con la sentencia source tal cual:
... if [[ -e setup.answers ]]; then source setup.answers fi ...
Si es así, hacemos el siguiente cambio:
... source ./setup.answers ...
Guardamos los cambios y cerramos el archivo.
Ejecutamos con privilegios de administrador el script de instalación:
$ sudo ./setup.sh
Este script básicamente comprueba que las dependencias estén instaladas, que las herramientas que necesita se hallan en las ubicaciones correspondientes, y creará y copiará los archivos de la aplicación y su configuración.
+----------------------------------------------------------+ | | | Welcome to OCS Inventory NG Management server setup ! | | | +----------------------------------------------------------+ Trying to determine which OS or Linux distribution you use +----------------------------------------------------------+ | Checking for Apache web server binaries ! | +----------------------------------------------------------+ CAUTION: If upgrading Communication server from OCS Inventory NG 1.0 RC2 and previous, please remove any Apache configuration for Communication Server! Do you wish to continue ([y]/n)? Assuming Communication server 1.0 RC2 or previous is not installed on this computer. Starting OCS Inventory NG Management server setup from folder /home/instalador/OCSNG_UNIX_SERVER-2.12.1 Storing log in file /home/instalador/OCSNG_UNIX_SERVER-2.12.1/ocs_server_setup.log +----------------------------------------------------------+ | Checking for database server properties... | +----------------------------------------------------------+ Your MySQL client seems to be part of MySQL version 10.6. Your computer seems to be running MySQL 4.1 or higher, good ;-) Which host is running database server [localhost] ? OK, database server is running on host localhost ;-) On which port is running database server [3306] ? OK, database server is running on port 3306 ;-) +----------------------------------------------------------+ | Checking for Apache web server daemon... | +----------------------------------------------------------+ Where is Apache daemon binary [/sbin/httpd] ? OK, using Apache daemon /sbin/httpd ;-) +----------------------------------------------------------+ | Checking for Apache main configuration file... | +----------------------------------------------------------+ Where is Apache main configuration file [/etc/httpd/conf/httpd.conf] ? OK, using Apache main configuration file /etc/httpd/conf/httpd.conf ;-) +----------------------------------------------------------+ | Checking for Apache user account... | +----------------------------------------------------------+ Which user account is running Apache web server [apache] ? OK, Apache is running under user account apache ;-) +----------------------------------------------------------+ | Checking for Apache group... | +----------------------------------------------------------+ Which user group is running Apache web server [apache] ? OK, Apache is running under users group apache ;-) +----------------------------------------------------------+ | Checking for Apache Include configuration directory... | +----------------------------------------------------------+ Setup found Apache Include configuration directory in /etc/httpd/conf.d. Setup will put OCS Inventory NG Apache configuration in this directory. Where is Apache Include configuration directory [/etc/httpd/conf.d] ? OK, Apache Include configuration directory /etc/httpd/conf.d found ;-) +----------------------------------------------------------+ | Checking for PERL Interpreter... | +----------------------------------------------------------+ Found PERL interpreter at </bin/perl> ;-) Where is PERL interpreter binary [/bin/perl] ? OK, using PERL interpreter /bin/perl ;-) Do you wish to setup Communication server on this computer ([y]/n)? +----------------------------------------------------------+ | Checking for Make utility... | +----------------------------------------------------------+ OK, Make utility found at </bin/make> ;-) +----------------------------------------------------------+ | Checking for Apache mod_perl version... | +----------------------------------------------------------+ Checking for Apache mod_perl version 1.99_22 or higher Found that mod_perl version 1.99_22 or higher is available. OK, Apache is using mod_perl version 1.99_22 or higher ;-) +----------------------------------------------------------+ | Checking for Communication server log directory... | +----------------------------------------------------------+ Communication server can create detailed logs. This logs can be enabled by setting integer value of LOGLEVEL to 1 in Administration console menu Configuration. Where to put Communication server log directory [/var/log/ocsinventory-server] ? OK, Communication server will put logs into directory /var/log/ocsinventory-server ;-) +----------------------------------------------------------------------------+ | Checking for Communication server plugins configuration directory... | +----------------------------------------------------------------------------+ Communication server need a directory for plugins configuration files. Where to put Communication server plugins configuration files [/etc/ocsinventory-server/plugins] ? OK, Communication server will put plugins configuration files into directory /etc/ocsinventory-server/plugins ;-) +-------------------------------------------------------------------+ | Checking for Communication server plugins perl directory... | +-------------------------------------------------------------------+ Communication server need a directory for plugins Perl modules files. Where to put Communication server plugins Perl modules files [/etc/ocsinventory-server/perl] ? Where to put Communication server plugins Perl modules files [/etc/ocsinventory-server/perl] ? OK, Communication server will put plugins Perl modules files into directory /etc/ocsinventory-server/perl ;-) +----------------------------------------------------------+ | Checking for required Perl Modules... | +----------------------------------------------------------+ Checking for DBI PERL module... Found that PERL module DBI is available. Checking for Apache::DBI PERL module... Found that PERL module Apache::DBI is available. Checking for DBD::mysql PERL module... Found that PERL module DBD::mysql is available. Checking for Compress::Zlib PERL module... Found that PERL module Compress::Zlib is available. Checking for XML::Simple PERL module... Found that PERL module XML::Simple is available. Checking for Net::IP PERL module... Found that PERL module Net::IP is available. Checking for Archive::Zip Perl module... Found that PERL module Archive::Zip is available. Do you wish to setup Rest API server on this computer ([y]/n)? +----------------------------------------------------------+ | Checking for REST API Dependencies ... | +----------------------------------------------------------+ Found that PERL module Mojolicious::Lite is available. Found that PERL module Switch is available. Found that PERL module Plack::Handler is available. +----------------------------------------------------------+ | Configuring REST API Server files ... | +----------------------------------------------------------+ Where do you want the API code to be store [/usr/lib64/perl5/vendor_perl] ? Copying files to /usr/lib64/perl5/vendor_perl +----------------------------------------------------------+ | Configuring REST API Server configuration files ... | +----------------------------------------------------------+ +----------------------------------------------------------+ | OK, looks good ;-) | | | | Configuring Communication server Perl modules... | +----------------------------------------------------------+ Checking if your kit is complete... Looks good Writing Makefile for Apache::Ocsinventory +----------------------------------------------------------+ | OK, looks good ;-) | | | | Preparing Communication server Perl modules... | +----------------------------------------------------------+ +----------------------------------------------------------+ | OK, prepare finshed ;-) | | | | Installing Communication server Perl modules... | +----------------------------------------------------------+ +----------------------------------------------------------+ | OK, Communication server Perl modules install finished;-)| | | | Creating Communication server log directory... | +----------------------------------------------------------+ Creating Communication server log directory /var/log/ocsinventory-server. Fixing Communication server log directory files permissions. Configuring logrotate for Communication server. Removing old communication server logrotate file /etc/logrotate.d/ocsinventory-NG Writing communication server logrotate to file /etc/logrotate.d/ocsinventory-server +----------------------------------------------------------------------+ | OK, Communication server log directory created ;-) | | | | Creating Communication server plugins configuration directory... | +----------------------------------------------------------------------+ Creating Communication server plugins configuration directory /etc/ocsinventory-server/plugins. +----------------------------------------------------------------------+ | OK, Communication server plugins configuration directory created ;-) | | | | Creating Communication server plugins Perl directory... | +----------------------------------------------------------------------+ Creating Communication server plugins Perl directory /etc/ocsinventory-server/perl. +----------------------------------------------------------------------+ | OK, Communication server plugins Perl directory created ;-) | | | | Now configuring Apache web server... | +----------------------------------------------------------------------+ To ensure Apache loads mod_perl before OCS Inventory NG Communication Server, Setup can name Communication Server Apache configuration file 'z-ocsinventory-server.conf' instead of 'ocsinventory-server.conf'. Do you allow Setup renaming Communication Server Apache configuration file to 'z-ocsinventory-server.conf' ([y]/n) ? OK, using 'z-ocsinventory-server.conf' as Communication Server Apache configuration file Removing old communication server configuration to file /etc/httpd/conf.d/ocsinventory.conf Writing communication server configuration to file /etc/httpd/conf.d/z-ocsinventory-server.conf +----------------------------------------------------------------------+ | OK, Communication server setup successfully finished ;-) | | | | Please, review /etc/httpd/conf.d/z-ocsinventory-server.conf | | to ensure all is good. Then restart Apache daemon. | +----------------------------------------------------------------------+ Do you wish to setup Administration Server (Web Administration Console) on this computer ([y]/n)? +----------------------------------------------------------+ | Checking for Administration Server directories... | +----------------------------------------------------------+ CAUTION: Setup now install files in accordance with Filesystem Hierarchy Standard. So, no file is installed under Apache root document directory (Refer to Apache configuration files to locate it). If you're upgrading from OCS Inventory NG Server 1.01 and previous, YOU MUST REMOVE (or move) directories 'ocsreports' and 'download' from Apache root document directory. If you choose to move directory, YOU MUST MOVE 'download' directory to Administration Server writable/cache directory (by default /var/lib/ocsinventory-reports), especially if you use deployment feature. Do you wish to continue ([y]/n)? Assuming directories 'ocsreports' and 'download' removed from Apache root document directory. Where to copy Administration Server static files for PHP Web Console [/usr/share/ocsinventory-reports] ? OK, using directory /usr/share/ocsinventory-reports to install static files ;-) Where to create writable/cache directories for deployment packages, administration console logs, IPDiscover and SNMP [/var/lib/ocsinventory-reports] ? OK, writable/cache directory is /var/lib/ocsinventory-reports ;-) +----------------------------------------------------------+ | Checking for required Perl Modules... | +----------------------------------------------------------+ Checking for DBI PERL module... Found that PERL module DBI is available. Checking for DBD::mysql PERL module... Found that PERL module DBD::mysql is available. Checking for XML::Simple PERL module... Found that PERL module XML::Simple is available. Checking for Net::IP PERL module... Found that PERL module Net::IP is available. +----------------------------------------------------------+ | Installing files for Administration server... | +----------------------------------------------------------+ Creating PHP directory /usr/share/ocsinventory-reports/ocsreports. Copying PHP files to /usr/share/ocsinventory-reports/ocsreports. Fixing permissions on directory /usr/share/ocsinventory-reports/ocsreports. Creating database configuration file /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php. Creating IPDiscover directory /var/lib/ocsinventory-reports/ipd. Fixing permissions on directory /var/lib/ocsinventory-reports/ipd. Creating packages directory /var/lib/ocsinventory-reports/download. Fixing permissions on directory /var/lib/ocsinventory-reports/download. Creating snmp mibs directory /var/lib/ocsinventory-reports/snmp. Fixing permissions on directory /var/lib/ocsinventory-reports/snmp. Creating Administration server log files directory /var/lib/ocsinventory-reports/logs. Fixing permissions on directory /var/lib/ocsinventory-reports/logs. Creating Administration server temporary files directory /var/lib/ocsinventory-reports/tmp_dir. Fixing permissions on directory /var/lib/ocsinventory-reports/tmp_dir. Creating Administration server scripts log files directory /var/lib/ocsinventory-reports/scripts. Fixing permissions on directory /var/lib/ocsinventory-reports/scripts. Configuring IPDISCOVER-UTIL Perl script. Installing IPDISCOVER-UTIL Perl script. Fixing permissions on IPDISCOVER-UTIL Perl script. Writing Administration server configuration to file /etc/httpd/conf.d/ocsinventory-reports.conf +----------------------------------------------------------------------+ | OK, Administration server installation finished ;-) | | | | Please, review /etc/httpd/conf.d/ocsinventory-reports.conf | to ensure all is good and restart Apache daemon. | | | | Then, point your browser to http://server//ocsreports | to configure database server and create/update schema. | +----------------------------------------------------------------------+ Setup has created a log file /home/instalador/OCSNG_UNIX_SERVER-2.12.1/ocs_server_setup.log. Please, save this file. If you encounter error while running OCS Inventory NG Management server, we can ask you to show us its content ! DON'T FORGET TO RESTART APACHE DAEMON ! Enjoy OCS Inventory NG ;-)
Únicamente hay que contestar por defecto a todas las preguntas. Si has seguido los pasos anteriores, la instalación resultará exitosa.
Podemos salir del directorio de instalación:
$ cd ..
Y eliminarlo definitivamente:
~$ sudo rm -rf OCSNG_UNIX_SERVER-2.12.1
Hay que hacer escribible por el servidor web el directorio /var/lib/ocsinventory-reports/, para lo que cambiaremos la propiedad al usuario con el que corre el servicio web:
~$ sudo chown apache /var/lib/ocsinventory-reports/
SELinux
Aunque se hayan asignado correctamente los permisos de acceso a los directorios, si SELinux está activado, como ocurre por defecto en CentOS 7, habrá que definir un contexto de lectura/escritura para el servidor web en la carpeta /usr/share/ocsinventory-report/ocsreports/ con semanage:
~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/ocsinventory-reports/ocsreports(/.*)?"
Y lo aplicamos con restorecon:
~$ sudo restorecon -R /usr/share/ocsinventory-reports/ocsreports/
Base de datos
Creamos el soporte de base de datos para la aplicación con el cliente mysql:
~$ sudo mysql
Si usamos un usuario administrador con contraseña, iniciaremos sesión del modo adecuado:
~$ mysql -u root -p
Creamos la base de datos con el nombre por defecto, ocsweb, para facilitar el trabajo:
> create database ocsweb;
Usaremos igualmente el nombre por defecto para el usuario, ocs.
Para MariaDB ó MySQL 5 creamos el usuario con su contraseña de la forma acostumbrada:
> create user ocs@localhost identified by 'XXXXXXXX';
Para MySQL 8 creamos el usuario asegurándonos de que use el plugin de autenticación correcto:
> create user ocs@localhost identified with mysql_native_password by 'XXXXXXXX';
Finalmente damos al usuario los permisos sobre la base:
> grant all privileges on ocsweb.* to ocs@localhost;
Y salimos del cliente mysql:
> exit
Si hemos usado una contraseña distinta a ocs, que es lo recomendable, debemos modificarla manualmente en el archivo de configuración de Apache z-ocsinventory-server.conf:
~$ sudo nano /etc/httpd/conf.d/z-ocsinventory-server.conf
Hay que modificar la siguiente directiva PerlSetVar:
... PerlSetVar OCS_DB_PWD ocs ...
Y reemplazamos ocs por la contraseña actual:
... PerlSetVar OCS_DB_PWD XXXXXXXX ...
Guardamos los cambios y recargamos la configuración de Apache:
~$ sudo systemctl reload httpd
Instalación web
Es el momento de realizar la instalación de OCS Inventory NG Server en CentOS 7 usando como URL la dirección IP o dominio del servidor y añadiendo la ruta /ocsreports.
Por ejemplo, en este tutorial estamos trabajando sobre un servidor CentOS 7 accesible en el subdominio centos7.local.lan, por lo que usaremos http://centos7.local.lan/ocsreports como URL.
La página inicial del instalador nos solicita los datos de conexión con el sistema de bases de datos:
Introducimos los datos tal y como los creamos anteriormente y continuamos. En unos instantes se realizará la instalación e inicialización de la base de datos.
Un mensaje nos avisará del fin de la instalación, aunque dependiendo de la versión instalada puede que tengamos que aplicar alguna actualización adicional sobre la base de datos.
En cualquier caso, continuaremos siguiendo el enlace que nos da acceso a la aplicación.
Aparece la página de inicio de sesión de la aplicación:
Antes de iniciar sesión eliminaremos el instalador web de OCS Inventory NG de forma manual:
~$ sudo rm /usr/share/ocsinventory-reports/ocsreports/install.php
Hecho esto, seleccionamos nuestro idioma en el desplegable, e iniciamos sesión con las credenciales por defecto (usuario admin y contraseña admin).
Enseguida se nos mostrará la página principal de OCS Inventory NG en CentOS 7 y el sistema estará listo para empezar a recibir conexiones de los clientes que vayamos instalando.
Una de las primeras acciones que deberíamos hacer es acceder al menú «MI CUENTA» que encontraremos en el icono con forma de engranaje, para actualizar la información de la cuenta de administrador y cambiar la contraseña por defecto.
Conclusión
Ya sabes cómo instalar OCS Inventory NG Server en CentOS 7, de modo que podrás inventariar fácil y automáticamente todos los dispositivos de tu red en los que instales en correspondiente agente.
Si tienes dudas o preguntas, alguna sugerencia o notificación, etc. puedes dejar un comentario.
¡Apoya este sitio!
¿Te ha servido esta guía de instalación y configuración de OCS Inventory NG Server en CentOS 7 para empezar a inventariar tus equipos en red? Si es así y quieres agradecérnoslo, cualquier mínima aportación ayuda al mantenimiento de este sitio y la creación de más tutoriales sobre temas como CentOS 7 u OCS Inventory NG.
Puedes ayudarnos dejando 1 $ de propina con PayPal:
O, si te sientes especialmente agradecido, invitándonos a un café:
¡Gracias!
Actualizado a la versión 2.12.1.
Hola, estimado. Tengo una inquietud en un error que me muestra:
El directorio de informes de Ocs debe ser escribible: /usr/share/ocsinventory-reports/ocsreports
También lo siguiente:
ERROR: no se puede escribir en el directorio (en dbconfig.inc.php), establezca los derechos necesarios para instalar ocsinventory (debe eliminar el modo de escritura después de que la instalación sea exitosa).
Espero puedas ayudarme.
Hola, yoshimar. ¿En qué momento exacto aparecen esos errores?
Actualizado a la versión 2.9.2.
Voy a instalarme el OCS en una máquina física en CentOS 7 a ver cómo me va 😁
Puedes probar primero en una máquina virtual para experimentar y enfrentarte a posibles problemas, aunque si sigues los pasos de este tutorial la instalación de OCS Inventory en CentOS 7 debería fluir sin más.
ERROR 500 al momento de la instalación web, ¿qué puede ser?
Revisa el registro de errores del servicio web, ahí estará la causa del error.
Gracias, amigo, me sirvió mucho tu post.
¡Estupendo, Jonathan!
Buenas Tardes
Excelente tutorial. Tengo una inquietud, he montado en mi VirtualBox con la máquina virtual CentOS 7, sin embargo ipdiscover no funciona, ya configuré las subredes pero aun así sigue sin descubrir nada, cuando voy a correr el programa ipdiscover no lo encuentra y no encuentra tampoco IPDISCOVER-UTIL Perl. ¿Qué debo hacer?
Creo que no funciona como tú crees. No es la máquina CentOS 7 con OCS Inventory NG Server la que realiza escaneos de red, sino que para cada subred una o dos máquinas con el agente configurado para ello escanean su subred y envían la información al servidor. Te remito a la documentación oficial, ya que es algo laborioso para una simple guía de instalación.
Buenas tardes,
Primero, muchas gracias por este manual que me ha sido de gran ayuda para lanzarme a probar el OCS y el GLPI (siguiendo también tu misma guía).
Tengo una duda/problema que me he encontrado, y es que después de instalar, en el mismo servidor, el OCS y el GLPI (y los dos funcionando correctamente), me he lanzado a probar de instalar en el mismo servidor la plataforma Centreon (el front-end de Nagios) dado que también tira de Apache, MariaDB… pero resulta que al instalar Centreon este me tumba los portales web de los otros servicios, y únicamente puedo acceder al portal de Centreon, pero ya no me carga el de OCS ni GLPI.
Para descartar, tamibén he probado con la ISO oficial de Centreon (que es un CentOS con Centreon preinstalado), pero pasa lo contrario, Centreon funciona, pero al instalar el OCS y GLPI, se tumba la web de Centreon.
¿Sabes a qué es debido, o cómo podría solucionarlo?
Un saludo.
¡Hola, Óscar! Los paquetes de Centreon están pensados para correr con sus propias versiones de Apache y PHP, instaladas bajo la ruta /opt/rh/. Por tanto, si dispones de dos servidores web (el que instalaste tú para tus aplicaciones y el que instala Centreon) sólo uno de ellos podrá acaparar el puerto HTTP estándar, el 80.
Si quieres que tus aplicaciones convivan con Centreon la solución más sencilla es que uno de los servicios web sea configurado para atender peticiones en un puerto TCP/IP alternativo, por ejemplo el 81. Una posibilidad sería editar el archivo /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf y en la directiva Listen sustituir 80 por 81. Igualmente, no olvides añadir una excepción del firewall para el puerto elegido.
Saludos. Tengo un problema con la instalación e implementación de este servidor, he instalado el servidor y un cliente, pero la información del cliente no llega a servidor. ¿Alguna idea para solucionar este inconveniente? Gracias.
¡Hola, Pablo! Lo primero es comprobar que el firewall permite conexiones externas al servicio web en el servidor OCS Inventory, y lo segundo es comprobar en el cliente el archivo de registro (el log) del agente OCS Inventory, que suele dar pistas de por qué no consigue conectar. A la hora de configurar el cliente tuviste que introducir una dirección IP o nombre DNS del servidor, comprueba con ping desde el cliente que dicha dirección IP o nombre DNS es alcanzable.