GLPI部署实战:从环境搭建到避坑指南
第一次接触GLPI这个开源的IT资产管理系统时,我被它强大的功能所吸引——从硬件设备跟踪到软件许可证管理,再到工单系统集成,几乎涵盖了IT运维管理的方方面面。但真正开始部署时,才发现理想很丰满,现实很骨感。Apache、PHP 7.4和MariaDB的组合看似简单,实际操作中却暗藏玄机。下面我就把这次部署过程中遇到的"坑"和解决方案详细记录下来,希望能帮到同样在GLPI部署路上奋斗的同仁们。
1. 环境准备:选对组件版本是关键
在开始部署GLPI之前,确保你的服务器满足以下最低要求:
- 操作系统:CentOS 7或8(本文以CentOS 7为例)
- 内存:至少2GB
- 存储:20GB可用空间
- 网络:稳定的互联网连接
1.1 软件版本选择
GLPI对运行环境有特定要求,版本不匹配是导致问题的常见原因。以下是经过验证的稳定组合:
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| Apache | 2.4.x | 默认仓库版本即可 |
| PHP | 7.4.x | 必须包含特定扩展 |
| MariaDB | 10.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 --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-* --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 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 '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 glpi4. Apache配置:不仅仅是启动服务那么简单
Apache作为Web服务器,配置不当会导致GLPI无法正常访问或性能低下。
4.1 安装Apache
yum install -y httpd httpd-devel systemctl start httpd systemctl enable httpd4.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 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/install
6. 常见问题排查
6.1 安装检查不通过
现象:PHP模块检查失败,即使已安装所需模块。
解决方案:
- 确认PHP模块已正确加载:
php -m | grep missing_module - 检查Apache使用的php.ini位置:
php -i | grep "Loaded Configuration File" - 重启Apache服务:
systemctl restart httpd
6.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 'glpi'@'localhost';
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/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=17.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.php
9. 日常维护与监控
9.1 日志分析
关键日志位置:
- Apache访问日志:
/var/log/httpd/glpi_access.log - Apache错误日志:
/var/log/httpd/glpi_error.log - GLPI应用日志:管理面板中的"日志"部分
9.2 性能监控
- 数据库查询优化:
SHOW FULL PROCESSLIST; - 使用GLPI内置的统计功能分析使用情况
- 监控服务器资源使用:
top free -m df -h
9.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版本或安装新插件之前。有一次插件冲突导致系统异常,幸好有完整的备份才能快速恢复。