news 2026/4/22 16:57:19

GLPI部署踩坑实录:我的Apache+PHP 7.4+MariaDB环境为什么总报错?(已解决)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GLPI部署踩坑实录:我的Apache+PHP 7.4+MariaDB环境为什么总报错?(已解决)

GLPI部署实战:从环境搭建到避坑指南

第一次接触GLPI这个开源的IT资产管理系统时,我被它强大的功能所吸引——从硬件设备跟踪到软件许可证管理,再到工单系统集成,几乎涵盖了IT运维管理的方方面面。但真正开始部署时,才发现理想很丰满,现实很骨感。Apache、PHP 7.4和MariaDB的组合看似简单,实际操作中却暗藏玄机。下面我就把这次部署过程中遇到的"坑"和解决方案详细记录下来,希望能帮到同样在GLPI部署路上奋斗的同仁们。

1. 环境准备:选对组件版本是关键

在开始部署GLPI之前,确保你的服务器满足以下最低要求:

  • 操作系统:CentOS 7或8(本文以CentOS 7为例)
  • 内存:至少2GB
  • 存储:20GB可用空间
  • 网络:稳定的互联网连接

1.1 软件版本选择

GLPI对运行环境有特定要求,版本不匹配是导致问题的常见原因。以下是经过验证的稳定组合:

组件推荐版本备注
Apache2.4.x默认仓库版本即可
PHP7.4.x必须包含特定扩展
MariaDB10.3+低于10.3可能兼容性问题

提示:虽然PHP 8.0+已经发布,但GLPI对PHP 8的支持仍在完善中,生产环境建议使用PHP 7.4

1.2 基础环境配置

首先更新系统并安装基础工具:

yum update -y yum install -y wget curl vim unzip

关闭SELinux(生产环境可根据需要配置):

setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

配置防火墙允许HTTP服务:

firewall-cmd --permanent --add-service=http firewall-cmd --reload

2. PHP 7.4安装:Remi源的正确打开方式

GLPI对PHP模块有严格要求,缺少任一必要扩展都会导致安装检查失败。使用Remi源是最便捷的方式,但需要注意几个细节。

2.1 配置Remi仓库

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm

启用PHP 7.4仓库:

yum-config-manager --enable remi-php74

2.2 安装PHP及必要扩展

GLPI运行所需的完整PHP扩展列表:

yum install -y php php-cli php-common php-curl php-gd php-json php-mbstring php-mysqlnd php-xml php-zip php-intl php-apcu php-opcache php-simplexml php-xmlrpc php-ldap php-imap php-pecl-zip

验证安装:

php -v php -m | grep -E 'curl|gd|json|mbstring|mysqlnd|xml|zip'

常见问题:如果发现缺少某些模块,可能是因为没有正确启用Remi源。可以通过yum list available php-* --enablerepo=remi-php74查看所有可用扩展。

2.3 PHP配置优化

编辑/etc/php.ini调整以下参数:

memory_limit = 256M upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 date.timezone = Asia/Shanghai

重启Apache使配置生效:

systemctl restart httpd

3. MariaDB配置:权限那些事儿

GLPI需要数据库支持,MariaDB是MySQL的替代品,完全兼容且性能更优。但权限配置不当是导致连接失败的常见原因。

3.1 安装MariaDB 10.3+

添加官方仓库:

cat > /etc/yum.repos.d/mariadb.repo <<EOF [mariadb] name = MariaDB baseurl = http://mirrors.aliyun.com/mariadb/yum/10.3/centos7-amd64/ gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck = 1 EOF

安装并启动服务:

yum install -y MariaDB-server MariaDB-client systemctl start mariadb systemctl enable mariadb

3.2 安全初始化

运行安全脚本:

mysql_secure_installation

按照提示设置root密码、移除匿名用户、禁止root远程登录等。

3.3 创建GLPI数据库和用户

正确做法(注意GRANT语句的变化):

CREATE DATABASE glpi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'glpi'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON glpi.* TO 'glpi'@'localhost'; FLUSH PRIVILEGES;

重要区别:旧版MySQL使用GRANT USAGE ON *.* TO 'user'@'host' IDENTIFIED BY 'password'语法,但MariaDB 10.3+推荐先创建用户再授权。

测试连接:

mysql -u glpi -p -D glpi

4. Apache配置:不仅仅是启动服务那么简单

Apache作为Web服务器,配置不当会导致GLPI无法正常访问或性能低下。

4.1 安装Apache

yum install -y httpd httpd-devel systemctl start httpd systemctl enable httpd

4.2 虚拟主机配置

创建GLPI专用配置文件/etc/httpd/conf.d/glpi.conf

<VirtualHost *:80> ServerName your.domain.com DocumentRoot /var/www/html/glpi/public <Directory /var/www/html/glpi/public> Options FollowSymlinks AllowOverride All Require all granted # 禁用目录列表 Options -Indexes # 启用mod_rewrite RewriteEngine On </Directory> ErrorLog /var/log/httpd/glpi_error.log CustomLog /var/log/httpd/glpi_access.log combined </VirtualHost>

注意:GLPI 9.5+推荐使用public目录作为文档根目录,而非直接指向glpi根目录。

4.3 调整PHP处理方式

确保Apache使用PHP处理GLPI请求:

<FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>

重启Apache:

systemctl restart httpd

5. GLPI安装与文件权限管理

5.1 下载并解压GLPI

获取最新版本:

wget https://github.com/glpi-project/glpi/releases/download/9.5.6/glpi-9.5.6.tgz -P /tmp tar -xzf /tmp/glpi-9.5.6.tgz -C /var/www/html/

5.2 文件权限设置

正确的权限设置可以避免安装过程中的写入错误:

chown -R apache:apache /var/www/html/glpi find /var/www/html/glpi -type d -exec chmod 755 {} \; find /var/www/html/glpi -type f -exec chmod 644 {} \; chmod -R 775 /var/www/html/glpi/files chmod -R 775 /var/www/html/glpi/config

5.3 安装向导

访问http://your-server-ip/glpi/install/install.php,按照向导完成安装:

  1. 选择语言
  2. 同意许可协议
  3. 检查系统要求(确保所有检查项通过)
  4. 配置数据库连接
  5. 设置管理员账户
  6. 完成安装

重要:安装完成后,务必删除install目录:

rm -rf /var/www/html/glpi/install

6. 常见问题排查

6.1 安装检查不通过

现象:PHP模块检查失败,即使已安装所需模块。

解决方案

  1. 确认PHP模块已正确加载:
    php -m | grep missing_module
  2. 检查Apache使用的php.ini位置:
    php -i | grep "Loaded Configuration File"
  3. 重启Apache服务:
    systemctl restart httpd

6.2 数据库连接失败

现象:安装过程中无法连接数据库。

排查步骤

  1. 测试从服务器本地连接:
    mysql -u glpi -p -h 127.0.0.1 -D glpi
  2. 检查MariaDB绑定地址:
    grep bind-address /etc/my.cnf.d/*
  3. 检查用户权限:
    SELECT Host, User FROM mysql.user; SHOW GRANTS FOR 'glpi'@'localhost';

6.3 文件写入权限问题

现象:安装向导无法写入config目录。

解决方案

  1. 确认SELinux状态:
    getenforce
  2. 临时设置SELinux上下文:
    chcon -R -t httpd_sys_rw_content_t /var/www/html/glpi/config/ chcon -R -t httpd_sys_rw_content_t /var/www/html/glpi/files/
  3. 或永久添加策略:
    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/glpi/config(/.*)?" restorecon -Rv /var/www/html/glpi/config

7. 性能优化与安全加固

7.1 启用OPcache

编辑/etc/php.d/10-opcache.ini

opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1

7.2 配置GLPI计划任务

设置cron定期执行GLPI任务:

echo "*/2 * * * * apache /usr/bin/php /var/www/html/glpi/front/cron.php" > /etc/cron.d/glpi

7.3 安全建议

  1. 定期备份:
    mysqldump -u root -p glpi > /backup/glpi_$(date +%Y%m%d).sql
  2. 限制config目录访问:
    <Directory /var/www/html/glpi/config> Order deny,allow Deny from all </Directory>
  3. 启用HTTPS加密连接

8. 进阶配置与插件管理

8.1 邮件通知配置

在GLPI管理面板配置邮件设置:

  1. 进入"设置" > "通知" > "邮件服务器"
  2. 配置SMTP服务器信息
  3. 测试邮件发送

8.2 常用插件推荐

  1. FusionInventory:自动发现网络设备
  2. PDF:导出报表为PDF格式
  3. Data Injection:批量导入数据
  4. Timezones:多时区支持

安装插件步骤:

  1. 下载插件ZIP包
  2. 上传到/var/www/html/glpi/plugins
  3. 解压并设置正确权限
  4. 在GLPI插件管理界面激活

8.3 备份与迁移

完整备份应包括:

  • 数据库导出
  • GLPI程序文件(特别是config和files目录)
  • 插件目录

迁移到新服务器的步骤:

  1. 在新服务器上部署相同版本的环境
  2. 恢复数据库
  3. 上传GLPI文件和插件
  4. 调整配置文件/var/www/html/glpi/config/config_db.php

9. 日常维护与监控

9.1 日志分析

关键日志位置:

  • Apache访问日志:/var/log/httpd/glpi_access.log
  • Apache错误日志:/var/log/httpd/glpi_error.log
  • GLPI应用日志:管理面板中的"日志"部分

9.2 性能监控

  1. 数据库查询优化:
    SHOW FULL PROCESSLIST;
  2. 使用GLPI内置的统计功能分析使用情况
  3. 监控服务器资源使用:
    top free -m df -h

9.3 定期维护任务

  1. 清理旧会话:
    TRUNCATE TABLE glpi_plugin_fusioninventory_agents;
  2. 优化数据库表:
    OPTIMIZE TABLE glpi_tickets;
  3. 更新GLPI到最新版本

10. 实际应用场景与最佳实践

10.1 IT资产管理标准化

  1. 定义资产分类和字段标准
  2. 设置必填字段和验证规则
  3. 建立资产生命周期管理流程

10.2 工单系统集成

  1. 配置工单分类和优先级
  2. 设置自动分配规则
  3. 与邮件系统集成实现工单创建和更新通知

10.3 报表与数据分析

  1. 使用内置报表工具创建常用报表
  2. 自定义SQL查询生成特定报表
  3. 导出数据到Excel进行进一步分析

在部署GLPI的过程中,最大的体会就是细节决定成败。记得第一次安装时,因为忽略了PHP的intl扩展,导致安装向导一直报错却找不到原因,浪费了好几个小时。后来养成了在安装前仔细核对每个依赖项的习惯。另一个经验是,生产环境一定要做好备份,特别是在升级GLPI版本或安装新插件之前。有一次插件冲突导致系统异常,幸好有完整的备份才能快速恢复。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 16:56:32

Rust的闭包类型自动推导与显式标注在复杂泛型上下文中的必要性

Rust的闭包类型自动推导与显式标注在复杂泛型上下文中的必要性 Rust以其强大的类型系统和零成本抽象著称&#xff0c;而闭包作为函数式编程的核心特性&#xff0c;在Rust中同样扮演着重要角色。闭包的类型自动推导让代码更简洁&#xff0c;但在复杂泛型上下文中&#xff0c;隐…

作者头像 李华
网站建设 2026/4/22 16:54:45

机器学习模型生产化:核心挑战与工程实践

1. 机器学习生产化困境的本质剖析在算法实验室里跑通一个模型demo&#xff0c;和让这个模型真正在业务系统中稳定运行&#xff0c;完全是两个维度的挑战。过去五年间&#xff0c;我参与过17个不同行业的ML系统部署&#xff0c;亲眼见证过太多"实验室准确率99%&#xff0c;…

作者头像 李华
网站建设 2026/4/22 16:54:24

Display Driver Uninstaller:彻底解决显卡驱动问题的完整实用指南

Display Driver Uninstaller&#xff1a;彻底解决显卡驱动问题的完整实用指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-u…

作者头像 李华