Instalando o GLPI no Rock Linux 9.3
O GLPI, que significa “Gestão Livre de Parque de Informática”, é uma solução de software de código aberto projetada para facilitar a gestão de ativos de TI (Tecnologia da Informação) e serviços relacionados dentro de uma organização. Ele oferece uma ampla gama de recursos que visam otimizar a administração dos recursos tecnológicos, melhorar a eficiência operacional e facilitar o suporte aos usuários.
Principais funcionalidades e propósitos do GLPI:
- Gestão de Ativos: O GLPI permite o inventário detalhado de hardware e software em um ambiente corporativo. Isso inclui computadores, servidores, dispositivos de rede, softwares instalados, entre outros. A capacidade de rastrear e gerenciar ativos é essencial para garantir a segurança, atualizações e manutenção adequada.
- Help Desk e Gestão de Tickets: Uma das funcionalidades centrais do GLPI é o módulo de help desk, que facilita o gerenciamento de incidentes, solicitações de suporte e a resolução eficiente de problemas. Os usuários podem relatar incidentes, e a equipe de suporte pode acompanhar, atribuir prioridades e resolver essas questões de forma organizada.
- Gestão de Contratos e Fornecedores: O GLPI oferece recursos para o gerenciamento de contratos e relacionamentos com fornecedores. Isso inclui o monitoramento de prazos, renovações, e a centralização de informações relacionadas a contratos de serviços.
- Automatização de Tarefas Recorrentes: Automatizar processos repetitivos é uma parte integral do GLPI. Isso contribui para a eficiência operacional, reduzindo a carga de trabalho manual e minimizando erros humanos.
- Gestão de Projetos de TI: Além de lidar com ativos e incidentes diários, o GLPI também suporta a gestão de projetos de TI. Isso permite o acompanhamento de atividades, prazos e recursos associados a projetos específicos.
- Relatórios e Análises: O sistema oferece recursos robustos para a geração de relatórios e análises. Isso proporciona uma visão abrangente do ambiente de TI, permitindo a tomada de decisões informadas e estratégicas.
- Integração com Outras Ferramentas: O GLPI é projetado para integração com outras ferramentas e tecnologias, tornando-o flexível e adaptável a ambientes de TI diversificados.
O GLPI é muito mais do que um simples sistema de inventário de ativos; é uma plataforma robusta que integra recursos de gestão de tickets, gerenciamento de incidentes, inventário de hardware e software, além de oferecer uma visão abrangente do parque tecnológico da empresa. Ao permitir que as organizações consolidem essas funcionalidades em uma única interface intuitiva, o GLPI se torna um aliado poderoso na resolução de uma série de desafios comuns enfrentados pelas empresas modernas.
Realizado nossa introdução vamos abordar uma empresa fictícia chamada Acme Corporation(que é uma fabricante de bigornas e artefatos explosivos) que deseja realizar a instalação do GLPI e isso será realizada em servidor cujo sistema operacional e o Rock Linux 9.3.
Então vamos a preparação do ambiente
Com nosso sistema já instalado, nomeado e IP fixo configurado daremos andamento ao processo.
Certo primeiro vamos usar o gerenciador de pacotes dnf para buscar e instalar as atualizações mais recentes de todos os pacotes instalados no sistema.
sudo dnf update -y
Agora instalaremos as ferramentas wget, tar, policycoreutils-python-utils, vim e unzip no sistema, pois utilizaremos mais tarde.
sudo dnf install wget tar policycoreutils-python-utils vim unzip -y
Em seguida vamos remove automaticamente pacotes que não são mais necessários no sistema e limpa todos os dados armazenados em cache pelo DNF.
sudo dnf autoremove && sudo dnf clean all
Vamos checar nossa configurações de timezone.
ls -l /etc/localtime
/etc/localtime -> ../usr/share/zoneinfo/America/Sao_Paulo
Em seguida vou instalar e ajustar o NTP
O rock linux está a usar o chrony assim irei editar seu arquivo de configuração ( /etc/chrony.conf), estou a usar as configurações recomendadas em ntp.br, a versão atual já presente no Rock Linux 9.3 suporta NTS.
# servidores publicos do NTP.br com NTS disponível
server a.st1.ntp.br iburst nts
server b.st1.ntp.br iburst nts
server c.st1.ntp.br iburst nts
server d.st1.ntp.br iburst nts
server gps.ntp.br iburst nts
# caso deseje pode configurar servidores adicionais com NTS, como os da cloudflare e netnod
# nesse caso basta descomentar as linhas a seguir
server time.cloudflare.com iburst nts
server nts.netnod.se iburst nts
# arquivo usado para manter a informação do atraso do seu relógio local
driftfile /var/lib/chrony/chrony.drift
# local para as chaves e cookies NTS
ntsdumpdir /var/lib/chrony
# se quiser um log detalhado descomente as linhas a seguir
#log tracking measurements statistics
#logdir /var/log/chrony
# erro máximo tolerado em ppm em relação aos servidores
maxupdateskew 100.0
# habilita a sincronização via kernel do real-time clock a cada 11 minutos
rtcsync
# ajusta a hora do sistema com um "salto", de uma só vez, ao invés de
# ajustá-la aos poucos corrigindo a frequência, mas isso apenas se o erro
# for maior do que 1 segundo e somente para os 3 primeiros ajustes
makestep 1 3
# diretiva que indica que o offset UTC e leapseconds devem ser lidos
# da base tz (de time zone) do sistema
leapsectz right/UTC
Para reiniciar o serviço pode se utilizar o comando a seguir:
systemctl restart chronyd.service
Para verificar o correto funcionamento e a correção do tempo, bem como o uso do NTS, os seguintes comandos podem ser utilizados:
systemctl restart chrony
chronyd.service chrony-wait.service
[root@srvglpi ~]# systemctl restart chronyd.service
[root@srvglpi ~]# chronyc tracking
Reference ID : C814BA4C (200.20.186.76)
Stratum : 2
Ref time (UTC) : Fri Feb 16 23:28:13 2024
System time : 0.000199780 seconds slow of NTP time
Last offset : -0.000206281 seconds
RMS offset : 0.000206281 seconds
Frequency : 0.000 ppm slow
Residual freq : -11.481 ppm
Skew : 1000000.000 ppm
Root delay : 0.016672220 seconds
Root dispersion : 7.776476860 seconds
Update interval : 63.8 seconds
Leap status : Normal
chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- a.st1.ntp.br 1 6 37 16 -295us[ -295us] +/- 5923us
^- 201.49.148.135 2 6 37 15 +57ms[ +57ms] +/- 83ms
^? c.st1.ntp.br 1 7 4 82 -3676us[-3837us] +/- 9316us
^* 200.20.186.76 1 6 37 17 +34us[ -172us] +/- 8385us
^- gps.nu.ntp.br 1 6 37 16 -353us[ -353us] +/- 4998us
^- time.cloudflare.com 3 6 37 17 +8386us[+8386us] +/- 68ms
^- mmo1-ts.nts.netnod.se 1 6 37 16 -1304us[-1304us] +/- 109ms
chronyc -N authdata
Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen
=========================================================================
a.st1.ntp.br NTS 1 15 256 94 0 0 8 104
b.st1.ntp.br NTS 1 15 256 94 0 0 8 100
c.st1.ntp.br NTS 1 15 256 95 0 0 5 100
d.st1.ntp.br NTS 1 15 256 94 0 0 8 100
gps.ntp.br NTS 1 15 256 94 0 0 8 100
time.cloudflare.com NTS 1 15 256 94 0 0 8 100
nts.netnod.se NTS 1 15 256 95 0 0 8 100
Agora vamos a Instalação do apache e php
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.3.rpm;
#Este comando instala o repositório Remi no sistema. O repositório Remi fornece pacotes mais recentes e atualizados do PHP
sudo dnf module list php -y;
#Este comando lista os módulos PHP disponíveis no repositório
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
sudo dnf module enable php:remi-8.2 -y;
#Este comando habilita um módulo PHP específico (remi-8.2 neste caso) do repositório Remi.
sudo dnf -y install httpd;
sudo systemctl enable --now httpd.service;
#O primeiro comando instala o Apache (httpd).
#O segundo comando habilita e inicia o serviço Apache.
Instalação PHP
sudo dnf install php -y
sudo dnf install php-{mbstring,mysqli,xml,cli,ldap,openssl,xmlrpc,pecl-apcu,zip,curl,gd,json,session,imap,intl,zlib,redis} -y;
#Este comando instala uma série de pacotes PHP e suas dependências, incluindo módulos e extensões conforme solicitado pela documentação glpi.
Download do Arquivo GLPI
cd /tmp;
wget https://github.com/glpi-project/glpi/releases/download/10.0.11/glpi-10.0.11.tgz ;
Criação do Diretório onde sera armazenado nosso site do GLPI
sudo mkdir /var/www/ACME;
sudo tar -xvf glpi-10.0.11.tgz -C /var/www/ACME;
Moveremos o diretórios “files” e “config” para fora da hierarquia do GLPi, esta é uma recomendação de segurança.
sudo mv -v /var/www/ACME/glpi/files /var/www/ACME/glpi/config /var/www/ACME/;
Precisamos agora ajustando código do GLPi para o novo local dos diretórios
sudo sed -i 's/\/config/\/..\/config/g' /var/www/ACME/glpi/inc/based_config.php
sudo sed -i 's/\/files/\/..\/files/g' /var/www/ACME/glpi/inc/based_config.php
A partir daqui realizaremos alguns ajustes nas propriedade de arquivos do GLPi.
sudo chown apache:apache /var/www/ACME/glpi -Rf;
# Ajustar propriedade de arquivos files, config
sudo chown apache:apache /var/www/ACME/files -Rf;
sudo chown apache:apache /var/www/ACME/config -Rf;
# Ajustar permissões gerais
sudo find /var/www/ACME/ -type d -exec chmod 755 {} \;
sudo find /var/www/ACME/ -type f -exec chmod 644 {} \;
Esses comandos ajustam as permissões de todos os diretórios (-type d) para 755 e todos os arquivos (-type f) para 644 dentro de /var/www/ACME/. Isso significa que os diretórios terão permissões de leitura, escrita e execução para o proprietário e leitura e execução para outros, enquanto os arquivos terão permissões de leitura e escrita para o proprietário e leitura para outros.
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/ACME(/.*)?";
sudo restorecon -Rv /var/www/ACME;
O primeiro comando (semanage fcontext) adiciona uma regra SELinux para permitir a escrita pelo Apache no diretório /var/www/ACME e seus subdiretórios.
O segundo comando (restorecon) restaura os contextos de segurança SELinux para os arquivos e diretórios dentro de /var/www/ACME, aplicando as regras recém-definidas.
sudo setsebool -P httpd_can_sendmail 1;
sudo setsebool -P httpd_can_network_connect 1;
sudo setsebool -P httpd_can_network_connect_db 1;
sudo setsebool -P httpd_mod_auth_ntlm_winbind 1;
sudo setsebool -P allow_httpd_mod_auth_ntlm_winbind 1;
Esses comandos ativam vários Booleans SELinux específicos para o Apache. Eles permitem que o Apache envie e-mails, conecte-se à rede, conecte-se a bancos de dados e use autenticação NTLM com o módulo winbind.
sudo sed -i "s/session.cookie_httponly =/session.cookie_httponly = on/" /etc/php.ini
A opção session.cookie_httponly no PHP é usada para indicar se os cookies de sessão devem ser enviados apenas através de conexões HTTP. Definir isso como on significa que os cookies de sessão só serão enviados se a solicitação for uma solicitação HTTP, não uma solicitação HTTPS.
Esta configuração pode ajudar a aumentar a segurança, evitando que cookies de sessão sejam acessíveis via JavaScript (ajudando a proteger contra ataques de script entre sites — XSS).
sudo sed -i "s/;session.cookie_secure =/session.cookie_secure = on/" /etc/php.ini
Em resumo, esse comando específico está habilitando a opção “session.cookie_secure” no arquivo de configuração do PHP, removendo o ponto e vírgula no início da linha (se existir) e definindo o valor como “on”. Essa configuração ajuda a melhorar a segurança em ambientes nos quais o PHP está sendo usado para sessões web.
Estou realizando estas substituições pois se não o fizermos será solicitado no assistente de instalação do glpi.
Agora implementamos um redirecionamento de HTTP para HTTPS no apache. Editaremos o arquivo /etc/httpd/conf/httpd.conf. E adicionaremos:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}$1 [L]
RequestHeader set X-Forwarded-Proto "https"
Portanto, esse bloco de configuração garante que todas as solicitações HTTP sejam redirecionadas para HTTPS
Certifique-se que os modulos módulos ssl e rewrite estejam habilitados.
sudo httpd -M | grep ssl
sudo httpd -M | grep rewrite
rewrite_module (shared)
Para meu caso o mod_ssl nao estava instalado.
Instalar modulo SSL
sudo dnf install mod_ssl -y
Criando um virtual host
sudo vim /etc/httpd/conf.d/glpi.conf
<VirtualHost *:443>
ServerName glpi.ch.vlab
DocumentRoot /var/www/ACME/glpi/public
# If you want to place GLPI in a subfolder of your site (e.g. your virtual host is serving multiple applications),
# you can use an Alias directive. If you do this, the DocumentRoot directive MUST NOT target the GLPI directory itself.
# Alias "/glpi" "/var/www/glpi/public"
ErrorLog "logs/glpi_error.log"
CustomLog "logs/glpi_access.log" combined
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/certs/glpi-selfsigned.crt
SSLCertificateKeyFile /etc/httpd/ssl/private/glpi-selfsigned.key
<Directory /var/www/ACME/glpi/public>
Options -Indexes
Options -Includes -ExecCGI
Require all granted
RewriteEngine On
# Ensure authorization headers are passed to PHP.
# Some Apache configurations may filter them and break usage of API, CalDAV, ...
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect all requests to GLPI router, unless file exists.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
<IfModule mod_php.c>
php_value max_execution_time 600
php_value always_populate_raw_post_data -1
</IfModule>
</Directory>
<Directory /var/www/ACME/config>
Options -Indexes
Options -Includes -ExecCGI
AllowOverride None
Require all denied
</Directory>
<Directory /var/www/ACME/files>
Options -Indexes
Options -Includes -ExecCGI
AllowOverride None
Require all denied
</Directory>
</VirtualHost>
Agora vamos criar o certificado auto assinado.
sudo mkdir -p /etc/httpd/ssl/{private,certs}
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout /etc/httpd/ssl/private/glpi-selfsigned.key -out /etc/httpd/ssl/certs/glpi-selfsigned.crt
httpd -t
Syntax OK
Pode ser que seja necessário algum pequeno ajuste ou correção na configuração particular de cada um.
Agora ajustaremos configurarmos o firewall do servidor.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
E reiniciamos o apache
systemctl restart httpd
A esta altura se abrirmos o navegado e acessar o ip de nosso servidor ou o endereço de nosso site, se nosso dns ja estiver configurado, devemos ter a visão da pagina inicial de configuração(se tudo estiver ok , claro.)
Mas Calma ainda temos elementos a configurar.
Instalando e Configurando o mariadb-server
sudo dnf -y install mariadb-server;
#habilitando e iniciando o serviço
sudo systemctl enable --now mariadb.service ;
#Criando Usuário e Base de Dados MySQL
mysql -e "create database ACME_glpi character set utf8";
# Criando usuário
mysql -e "create user 'ACMEglpi'@'localhost' identified by 'zcn8SwbN20010002343es8EYwlePH46obxIr'";
# Dando privilégios ao usuário
mysql -e "grant all privileges on ACME_glpi .* to 'ACMEglpi'@'localhost' with grant option";
# Habilitando suporte ao timezone no MySQL/Mariadb
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql;
# Permitindo acesso do usuário ao TimeZone
mysql -e "GRANT SELECT ON mysql.time_zone_name TO 'ACMEglpi'@'localhost';";
# Forçando aplicação dos privilégios
mysql -e "FLUSH PRIVILEGES;";
systemctl restart mysqld;
O comando mysql -e
é utilizado para executar instruçoes SQL diretamente a partir da linha de comando no MySQL.
Quando nos instalamos o MariaDB, o usuário root do banco de dados é criado por padrão, mas geralmente sem uma senha. Defina uma senha forte para o usuário root para evitar acesso não autorizado.
Com isso podemos acessar nosso site e finalizar as configurações:
Assim ja podemos acessar o sistema com usuarios padroes da ultima imagem.
Pós Instalação
Bom como podemos ver na ultima imagem são necessários algumas alterações que se refere a modificar senha dos usuários e remover o arquivo de instalação.
sudo rm /var/www/ACME/glpi/install/install.php
Criar entrada no agendador de tarefas do Linux
echo -e "*/3 *\t* * *\troot\tphp /var/www/ACME/glpi/front/cron.php" >> /etc/crontab
Agora concluiremos a instalação do REDIS
dnf install -y redis
systemctl enable --now redis
# Dizendo ao GLPi para usar o REDIS para cache
php /var/www/ACME/glpi/bin/console cache:configure --context=core --dsn=redis://127.0.0.1:6379
O Redis é um sistema de armazenamento de dados em memória de código aberto, conhecido por sua velocidade e versatilidade. Ele é classificado como um banco de dados em memória, mas vai além disso, ira nos auxiliar na performance do sistema.
Conclusão
Com isso devemos ter nosso sistema em perfeito funcionamento, modificações e refinamentos são necessários para cada ambiente, espero que tenham apreciado este tutorial.