Cómo instalar OCS Inventory Server en CentOS 9

En este artículo veremos cómo instalar OCS Inventory en CentOS 9 paso a paso, de forma que podrás desplegar fácilmente este sistema de inventariado automático de equipos sobre tu servidor o VPS CentOS.

Dispones de más tutoriales como este para otras versiones de CentOS e incluso otros sistemas operativos que puedes encontrar con nuestro buscador.

Antes de instalar OCS Inventory Server en CentOS 9

Para seguir los pasos de esta guía de instalación de OCS Inventory Server en CentOS 9 debemos partir de los siguientes requerimientos mínimos:

  • Una máquina CentOS 9 actualizada.
  • Un entorno o pila LAMP (servicio web con PHP y motor de bases de datos).
  • Acceso a consola con un usuario con privilegios de sudo.
  • Conexión a Internet.

Si aún no dispones del entorno mínimo necesario, no dejes de echar un vistazo a nuestra guía de instalación de la pila LAMP en CentOS 9.

También necesitaremos algunas herramientas que obtendremos desde los repositorios del sistema, así que actualizamos su información:

~$ sudo yum update

E instalamos las herramientas necesarias:

~$ sudo yum install -y epel-release policycoreutils-python-utils tar wget

Cómo descargar OCS Inventory Server para CentOS 9

Vamos a descargar OCS Inventory Server para CentOS 9 desde el sitio oficial del proyecto, donde encontraremos la última versión estable disponible:

como descargar ocs inventory ng server para centos stream 9

Encontraremos un paquete en formato .tar.gz que podemos descargar desde el navegador o, como vamos a hacer en este caso, desde consola utilizando la herramienta 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 Server en CentOS 9

Dependencias

Para poder compilar e instalar OCS Inventory Server en CentOS 9 vamos a necesitar un buen número de paquetes que conforman las dependencias, pero podemos instalarlas fácilmente con yum:

~$ sudo yum install -y cpan gcc make mod_perl perl-Apache-DBI perl-Mojolicious perl-Net-IP perl-Test perl-XML-Simple

En caso de usar MySQL como motor de bases de datos necesitaremos también el correspondiente módulo de Perl:

~$ sudo yum install -y perl-DBD-MySQL

Algunos módulos de Perl que necesita OCS Inventory no pueden ser instalados desde los repositorios de CentOS 9, pero los podemos instalar con la utilidad cpan:

~$ sudo cpan -i Plack::Handler Switch

Si es la primera vez que ejecutas esta herramienta, te preguntará si deseas que se autoconfigure:

...
Would you like to configure as much as possible automatically? [yes]

Obviamente conviene contestar de modo afirmativo. Esta operación llevará unos minutos.

Compilación e instalación

Descomprimimos el archivo de OCS Inventory NG Server que descargamos anteriormente en nuestro directorio de usuario:

~$ tar xf OCSNG_UNIX_SERVER-2.12.1.tar.gz

Cambiamos el directorio de trabajo al nuevo subdirectorio que se acaba de crear:

~$ cd OCSNG_UNIX_SERVER-2.12.1

Tenemos que hacer un pequeño cambio en el script de instalación:

$ nano setup.sh

Buscamos esta sección:

...
if [[ -e setup.answers ]]; then
        source setup.answers
fi
...

Y en la línea que contiene la sentencia source hacemos este pequeño cambio:

...
        source ./setup.answers
...

Guardamos los cambios y, ahora así, lanzamos la instalación:

$ sudo ./setup.sh

Este script interactivo empezará a realizar comprobaciones y solicitar confirmación para cada paso, de modo que si tu sistema está preparado la salida del script sería tal que así:

+----------------------------------------------------------+
|                                                          |
|  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 8.0.
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] ?
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
Generating a Unix-style Makefile
Writing Makefile for Apache::Ocsinventory
Writing MYMETA.yml and MYMETA.json

+----------------------------------------------------------+
|                 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 ;-)

En este momento ya está instalado OCS Inventory NG Server, por lo que podemos abandonar el directorio de trabajo:

$ cd ..

Y lo borramos:

~$ sudo rm -rf OCSNG_UNIX_SERVER-2.12.1

Permisos

Como OCS Inventory Reports necesita modificar sus propios archivos, cambiamos la propiedad de los mismos al usuario con el que corre el servicio web en CentOS 9:

~$ sudo chown -R apache: /var/lib/ocsinventory-reports/ /usr/share/ocsinventory-reports/ocsreports/

Preparativos de SELinux

Ya que SELinux suele estar activado por defecto en CentOS 9, tendremos que crear contextos de lectura/escritura para que el servicio web pueda escribir en los directorios de OCS Inventory Reports:

~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/ocsinventory-reports/ocsreports(/.*)?"

Y:

~$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/lib/ocsinventory-reports(/.*)?"

Aplicamos los nuevos contextos con el comando restorecon:

~$ sudo restorecon -R /usr/share/ocsinventory-reports/ocsreports/ /var/lib/ocsinventory-reports/

Servicio de base de datos

OCS Inventory trabaja con una base de datos del tipo MariaDB/MySQL, así que conectaremos con el cliente de consola mysql para prepararla:

~$ mysql -u root -p

Creamos la base de datos:

> create database ocsweb;

Creamos el usuario:

> create user ocs@localhost identified by 'XXXXXXXX';

Concedemos los permisos adecuados al usuario sobre la base:

> grant all privileges on ocsweb.* to ocs@localhost;

Y cerramos la conexión:

> exit

Configuración del servicio

Para que OCS Inventory NG Server pueda trabajar con la base de datos que acabamos de preparar debe conocer las credenciales de acceso, leyéndolas de su configuración. Editamos este archivo de configuración para actualizarlas:

~$ sudo nano /etc/httpd/conf.d/z-ocsinventory-server.conf

En este caso usamos los valores por defecto excepto el de la contraseña, por lo que buscaremos esta directiva:

...
  # Password for user
  PerlSetVar OCS_DB_PWD ocs
...

Cambiamos el valor de la contraseña por el que hayamos empleado anteriormente:

...
  PerlSetVar OCS_DB_PWD XXXXXXXX
...

También debemos hacer un cambio en este otro archivo:

~$ sudo nano /etc/httpd/conf.d/zz-ocsinventory-restapi.conf

Buscamos esta línea:

...
  $ENV{OCS_DB_PWD} = 'ocs';
...

Y cambiamos igualmente la contraseña:

...
  $ENV{OCS_DB_PWD} = 'XXXXXXXX';
...

Con los ajustes realizados en ambos archivos recargamos la configuración del servicio web para aplicarlos:

~$ sudo systemctl reload httpd

PHP

OCS Inventory Reports necesita la presencia de alguna extensión que obtendremos desde los repositorios del sistema:

~$ sudo yum install -y php-gd php-json php-mbstring php-xml

Instalador web

Al fin podemos acceder al instalador web de OCS Inventory en CentOS 9 desde un navegador, para lo que añadiremos la ruta /ocsreports a la dirección IP, dominio, nombre DNS, localhost si accedemos localmente, etc.

Por ejemplo, el servidor CentOS 9 sobre el que hemos preparado este artículo es accesible en el subdominio centos9.local.lan, por lo que podemos emplear http://centos9.local.lan/ocsreports como URL:

como instalar ocs inventory ng server en centos stream 9

En la primera página del instalador introduciremos los datos de conexión al servicio de bases de datos.

Establecida la conexión, el instalador tomará unos instantes para inicializar la base.

instalar ocs inventory ng server en centos stream 9

Terminada la inicialización es posible que, según la versión instalada, haya que realizar una actualización de la base de datos, que aplicaremos para poder continuar.

Finalmente se nos muestra el enlace de acceso a la aplicación, informándose de que el usuario administrador por defecto es admin, con contraseña admin.

Pero antes de iniciar sesión es buen momento para borrar el instalador web por motivos de seguridad, ya que de no hacerlo se mostrará constantemente un aviso en la aplicación. Podemos hacerlo fácilmente desde consola:

~$ sudo rm /usr/share/ocsinventory-reports/ocsreports/install.php

Se muestra la página de inicio de sesión donde, efectivamente, nos identificamos como usuario admin:

ocs inventory ng server en centos stream 9

Y finalmente accedemos a OCS Inventory Reports:

ocs inventory ng server para centos stream 9

Por seguridad también es recomendable cambiar la contraseña por defecto, para lo que accedemos al menú del icono con forma de engranaje, a la opción «Mi cuenta«:

Guardamos los cambios con el enlace «OK«.

Y ya está listo OCS Inventory NG Server para recibir conexiones desde otros sistemas.

Post-instalación

En las últimas versiones de OCS Inventory NG Server ya no se muestra en el panel principal el valor del dato «Software«, obtenido de la suma de todos los programas de las máquinas monitorizadas. Si te interesa obtener este dato habrá que programar una tarea del servicio Cron de CentOS 9:

~$ sudo nano /etc/cron.d/ocsinventory

El contenido será similar al siguiente:

HOME=/usr/share/ocsinventory-reports/ocsreports/crontab/
* */3 * * * apache /usr/bin/php cron_all_software.php

En este caso la tarea se ejecutará cada 3 horas, pero puedes configurarla para que se ejecute en otro intervalo o a una determinada hora del día.

Una vez guardado el archivo, la tarea quedará lista para ser ejecutada.

Conclusión

Ahora que sabes cómo instalar OCS Inventory NG Server en CentOS Stream 9 ya puedes gestionar el inventario de los dispositivos y equipos informáticos de la red de tu organización, mediante la conexión desde clientes en cada dispositivo.

¡Apoya comoinstalar.me!

¿Ya tienes instalado OCS Inventory NG Server en tu sistema CentOS 9 gracias a este tutorial? En ese caso, si quieres agradecérnoslo ayudando mínimamente al mantenimiento de este sitio y la creación de más guías y tutoriales, puedes hacerlo dejando una propina de 1 $ desde PayPal:

O, si te sientes especialmente agradecido, invitándonos a un café:

¡Gracias!

Valora esta entrada

¿Qué te ha parecido esta entrada?

Deja un comentario