2023-07-07

Instalación de glpi en Linux por consola.

Instalar GLPI por consola

Primero instalamos nuestro servidor de bases de datos MariaDB, y los servidores Apache y PHP. 

Instalar Apache y Mariadb

apt install apache2 mariadb-server mariadb-client
apt install -y lsb-release apt-transport-https ca-certificates

Instalar php 8.0

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt install php8.0 php8.0-common php8.0-cli php8.0-fpm php8.0-opcache 
apt install php8.0-mysql php8.0-curl php8.0-gd php8.0-intl php8.0-mbstring php8.0-xml php8.0-zip
apt install php8.0-ldap php8.0-exif php8.0-mysqli php8.0-bz2 php8.0-phar

Deshabilitar la versión anterior de PHP y habilitar la nueva

apt install libapache2-mod-php8.0
sudo a2dismod php7.4 
sudo a2enmod php8.0

Habilitar extensiones en /etc/php/8.0/cli/php.ini

habilitar php intl

extension=intl
session.cookie_httponly = on

Crear base de datos y usuarios

mysql -u root
CREATE DATABASE glpi; GRANT ALL PRIVILEGES ON glpi.* TO 'glpiuser'@'localhost' IDENTIFIED BY 'glpi.0123'; FLUSH PRIVILEGES; exit

instalación de GLPI por consola

cd /var/www/html/glpi/

instalar GLPI

wget https://github.com/glpi-project/glpi/releases/download/10.0.8/glpi-10.0.8.tgz
tar -zxvf glpi-10.0.8.tgz
cp  -r glpi /var/www/html/
chown  -R www-data:www-data /var/www/html/glpi/

ver requerimientos

php8.0 bin/console system:check_requirements

Crear carpetas necesarias

La configuración de GLPI se almacenará en /etc/glpi, simplemente copie el contenido del configdirectorio en este lugar. GLPI requiere derechos de lectura en este directorio para funcionar; y derechos de escritura durante el proceso de instalación.

Los datos de GLPI se almacenarán en /var/lib/glpi, simplemente copie el contenido del filesdirectorio en este lugar. GLPI requiere derechos de lectura y escritura en este directorio.

Los archivos de registro de GLPI se almacenarán en /var/log/glpi, no hay nada que copiar aquí, solo cree el directorio. GLPI requiere acceso de lectura y escritura en este directorio.

shopt -s dotglob
mkdir /var/log/glpi
chown -R www-data:www-data /var/log/glpi

mkdir /etc/glpi
cp config/* -r /etc/glpi
chown -R www-data:www-data /etc/glpi

mkdir /var/lib/glpi
cp files/* -r /var/lib/glpi
chown -R www-data:www-data /var/lib/glpi

Siguiendo estas instrucciones, crearemos un archivo inc/downstream.php en el directorio de GLPI con el siguiente contenido:

Luego, crea un archivo /etc/glpi/local_define.php con los siguientes contenidos: 

<?php
 class DB extends DBmysql {
   public $dbhost = 'localhost';
   public $dbuser = 'db_username';
   public $dbpassword = 'db_password';
   public $dbdefault = 'db_name';
   public $allow_myisam = false;
   public $allow_datetime = false;
   public $use_utf8mb4 = true;
   public $allow_signed_keys = false;
}

instalar GLPI usando el script console que está dentro de bin

php8.0 bin/console db:install -d glpi -u glpiuser -p glpi.0123 -L es_AR

se puede forzar con -f que pisa toda la base de datos

php8.0 bin/console db:install -d glpi -u glpiuser -p glpi.0123 -L es_AR -f 

update / actualizar / restauración

php8 bin/console db:update

Restaruar Bakcup

copiar db y descompirmir el gz

gzip -dk archivobkp.sql.gz
mysql -u root -p midbname< path\dumbdb.sql
php8 bin/console db:update

crear el archivo config_db.php en la carpeta config del servidor o en /etc/glpi

<?php
class DB extends DBmysql {
   public $dbhost = 'localhost';
   public $dbuser = 'db_username';
   public $dbpassword = 'db_password';
   public $dbdefault = 'db_name';
   public $allow_myisam = false;
   public $allow_datetime = false;
   public $use_utf8mb4 = true;
   public $allow_signed_keys = false;
}
php8 bin/console db:update

Solucinar errores despues de actualizar 

php8.0 bin/console migration:timestamps
php8.0 bin/console migration:utf8mb4
php8.0 bin/console migration:unsigned_keys
rm install/install.php

Posterior a la instalación

Una vez que haya instalado GLPI, ya casi habrá terminado.

Un paso adicional sería proteger (o eliminar) el directorio de instalación. Como ejemplo, puede considerar agregar lo siguiente a su archivo de configuración de host virtual de Apache (o en el archivo glpi/install/.htaccess ):

<IfModule mod_authz_core.c>
Require local
</IfModule>
<IfModule !mod_authz_core.c>
    order deny, allow
    deny from all
    allow from 127.0.0.1
    allow from ::1
</IfModule>
ErrorDocument 403 "<p><b>Restricted area.</b><br />Only local access allowed.<br />Check your configuration or contact your administrator.</p>"




Cambiar carpetas en php /etc/php/8.0/cli/php.ini

Cambiar la configuración de tu virtual host de Apache para que apunte al directorio public dentro de la carpeta de GLPI. Si tienes GLPI instalado en un subdirectorio, debes usar una directiva Alias para redirigir las peticiones. Por ejemplo, si tu URL es www.ejemplo.com/glpi, debes poner algo como esto: /etc/apache2/sites-enabled/000-default.conf systemctl restart apache2

<VirtualHost *:80>
  ServerName www.ejemplo.com
  DocumentRoot /var/www
  Alias "/glpi" "/var/www/glpi/public"
  <Directory /var/www/glpi/public>
    Require all granted
    RewriteEngine On
    # Redirect all requests to GLPI router, unless file exists.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
  </Directory>
</VirtualHost>