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.41.2 基础环境配置首先更新系统并安装基础工具yum update -y yum install -y wget curl vim unzip关闭SELinux生产环境可根据需要配置setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config配置防火墙允许HTTP服务firewall-cmd --permanent --add-servicehttp firewall-cmd --reload2. 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-php742.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-* --enablereporemi-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 httpd3. 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 mariadb3.2 安全初始化运行安全脚本mysql_secure_installation按照提示设置root密码、移除匿名用户、禁止root远程登录等。3.3 创建GLPI数据库和用户正确做法注意GRANT语句的变化CREATE DATABASE glpi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER glpilocalhost IDENTIFIED BY StrongPassword123!; GRANT ALL PRIVILEGES ON glpi.* TO glpilocalhost; FLUSH PRIVILEGES;重要区别旧版MySQL使用GRANT USAGE ON *.* TO userhost IDENTIFIED BY password语法但MariaDB 10.3推荐先创建用户再授权。测试连接mysql -u glpi -p -D glpi4. Apache配置不仅仅是启动服务那么简单Apache作为Web服务器配置不当会导致GLPI无法正常访问或性能低下。4.1 安装Apacheyum install -y httpd httpd-devel systemctl start httpd systemctl enable httpd4.2 虚拟主机配置创建GLPI专用配置文件/etc/httpd/conf.d/glpi.confVirtualHost *: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重启Apachesystemctl restart httpd5. 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/config5.3 安装向导访问http://your-server-ip/glpi/install/install.php按照向导完成安装选择语言同意许可协议检查系统要求确保所有检查项通过配置数据库连接设置管理员账户完成安装重要安装完成后务必删除install目录rm -rf /var/www/html/glpi/install6. 常见问题排查6.1 安装检查不通过现象PHP模块检查失败即使已安装所需模块。解决方案确认PHP模块已正确加载php -m | grep missing_module检查Apache使用的php.ini位置php -i | grep Loaded Configuration File重启Apache服务systemctl restart httpd6.2 数据库连接失败现象安装过程中无法连接数据库。排查步骤测试从服务器本地连接mysql -u glpi -p -h 127.0.0.1 -D glpi检查MariaDB绑定地址grep bind-address /etc/my.cnf.d/*检查用户权限SELECT Host, User FROM mysql.user; SHOW GRANTS FOR glpilocalhost;6.3 文件写入权限问题现象安装向导无法写入config目录。解决方案确认SELinux状态getenforce临时设置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/或永久添加策略semanage fcontext -a -t httpd_sys_rw_content_t /var/www/html/glpi/config(/.*)? restorecon -Rv /var/www/html/glpi/config7. 性能优化与安全加固7.1 启用OPcache编辑/etc/php.d/10-opcache.iniopcache.enable1 opcache.memory_consumption128 opcache.interned_strings_buffer8 opcache.max_accelerated_files4000 opcache.revalidate_freq60 opcache.fast_shutdown17.2 配置GLPI计划任务设置cron定期执行GLPI任务echo */2 * * * * apache /usr/bin/php /var/www/html/glpi/front/cron.php /etc/cron.d/glpi7.3 安全建议定期备份mysqldump -u root -p glpi /backup/glpi_$(date %Y%m%d).sql限制config目录访问Directory /var/www/html/glpi/config Order deny,allow Deny from all /Directory启用HTTPS加密连接8. 进阶配置与插件管理8.1 邮件通知配置在GLPI管理面板配置邮件设置进入设置 通知 邮件服务器配置SMTP服务器信息测试邮件发送8.2 常用插件推荐FusionInventory自动发现网络设备PDF导出报表为PDF格式Data Injection批量导入数据Timezones多时区支持安装插件步骤下载插件ZIP包上传到/var/www/html/glpi/plugins解压并设置正确权限在GLPI插件管理界面激活8.3 备份与迁移完整备份应包括数据库导出GLPI程序文件特别是config和files目录插件目录迁移到新服务器的步骤在新服务器上部署相同版本的环境恢复数据库上传GLPI文件和插件调整配置文件/var/www/html/glpi/config/config_db.php9. 日常维护与监控9.1 日志分析关键日志位置Apache访问日志/var/log/httpd/glpi_access.logApache错误日志/var/log/httpd/glpi_error.logGLPI应用日志管理面板中的日志部分9.2 性能监控数据库查询优化SHOW FULL PROCESSLIST;使用GLPI内置的统计功能分析使用情况监控服务器资源使用top free -m df -h9.3 定期维护任务清理旧会话TRUNCATE TABLE glpi_plugin_fusioninventory_agents;优化数据库表OPTIMIZE TABLE glpi_tickets;更新GLPI到最新版本10. 实际应用场景与最佳实践10.1 IT资产管理标准化定义资产分类和字段标准设置必填字段和验证规则建立资产生命周期管理流程10.2 工单系统集成配置工单分类和优先级设置自动分配规则与邮件系统集成实现工单创建和更新通知10.3 报表与数据分析使用内置报表工具创建常用报表自定义SQL查询生成特定报表导出数据到Excel进行进一步分析在部署GLPI的过程中最大的体会就是细节决定成败。记得第一次安装时因为忽略了PHP的intl扩展导致安装向导一直报错却找不到原因浪费了好几个小时。后来养成了在安装前仔细核对每个依赖项的习惯。另一个经验是生产环境一定要做好备份特别是在升级GLPI版本或安装新插件之前。有一次插件冲突导致系统异常幸好有完整的备份才能快速恢复。