一、系统环境准备

1. 安装必要依赖

# 更新系统
sudo yum update -y

# 安装EPEL仓库
sudo yum install -y epel-release

# 安装必要组件
sudo yum install -y httpd mariadb-server mariadb php php-mysql php-gd php-ldap php-json php-xml php-mbstring php-zip php-curl php-bcmath php-imap php-apcu wget unzip

2. 配置防火墙

# 开启防火墙服务
sudo systemctl start firewalld
sudo systemctl enable firewalld

# 开放HTTP和HTTPS端口
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

二、数据库配置

1. 启动MariaDB并设置开机启动

sudo systemctl start mariadb
sudo systemctl enable mariadb

2. 安全配置MariaDB

 sudo mysql_secure_installation

(按照提示设置root密码并完成安全配置)

3. 创建GLPI数据库

mysql -u root -p -e "CREATE DATABASE glpidb CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
mysql -u root -p -e "CREATE USER 'glpiuser'@'localhost' IDENTIFIED BY 'YourStrongPassword123';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'localhost';"
mysql -u root -p -e "FLUSH PRIVILEGES;"

三、安装GLPI

1. 下载并解压GLPI

cd /var/www/html
sudo wget https://github.com/glpi-project/glpi/releases/download/10.0.7/glpi-10.0.7.tgz
sudo tar -xvzf glpi-10.0.7.tgz
sudo mv glpi glpi-web
sudo chown -R apache:apache /var/www/html/glpi-web
sudo chmod -R 755 /var/www/html/glpi-web

2. 配置Apache

sudo tee /etc/httpd/conf.d/glpi.conf <<EOF
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/glpi-web
ServerName glpi.example.com

<Directory /var/www/html/glpi-web>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog /var/log/httpd/glpi_error.log
CustomLog /var/log/httpd/glpi_access.log combined
</VirtualHost>
EOF

3. 调整PHP配置

sudo sed -i 's/^memory_limit =.*/memory_limit = 256M/' /etc/php.ini
sudo sed -i 's/^upload_max_filesize =.*/upload_max_filesize = 64M/' /etc/php.ini
sudo sed -i 's/^post_max_size =.*/post_max_size = 64M/' /etc/php.ini
sudo sed -i 's/^max_execution_time =.*/max_execution_time = 600/' /etc/php.ini

4. 重启服务

sudo systemctl restart httpd
sudo systemctl enable httpd

四、GLPI初始化安装

  1. 通过浏览器访问 http://your-server-ip/glpi-web

  2. 按照向导完成安装,使用之前创建的数据库信息

  3. 完成安装后删除安装目录:sudo rm -rf /var/www/html/glpi-web/install/install.php

五、系统集成配置

1. 与CMDB集成

GLPI本身就是一个CMDB系统,但可以与其他CMDB系统集成:

# 安装FusionInventory插件实现自动发现
cd /var/www/html/glpi-web/plugins
sudo wget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi10.0%2B1.1/fusioninventory-10.0+1.1.tar.bz2
sudo tar -xjf fusioninventory-10.0+1.1.tar.bz2
sudo chown -R apache:apache /var/www/html/glpi-web/plugins/fusioninventory

然后在GLPI界面中激活FusionInventory插件并配置自动发现任务。

2. 与服务台系统集成

GLPI内置服务台功能,但可以与外部服务台集成:

# 安装REST API插件
cd /var/www/html/glpi-web/plugins
sudo wget https://github.com/pluginsGLPI/webservices/releases/download/2.7.0/glpi-webservices-2.7.0.tar.bz2
sudo tar -xjf glpi-webservices-2.7.0.tar.bz2
sudo chown -R apache:apache /var/www/html/glpi-web/plugins/webservices

在GLPI界面中激活Webservices插件并配置API访问权限。

六、一键安装Python脚本

创建glpi_installer.py文件:

#!/usr/bin/env python3
import os
import subprocess
import getpass

def run_command(cmd):
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
if process.returncode != 0:
print(f"Error executing: {cmd}")
print(stderr.decode())
exit(1)
return stdout.decode()

def install_glpi():
print("=== 开始安装GLPI ===")

# 安装依赖
print("安装系统依赖...")
run_command("yum update -y")
run_command("yum install -y epel-release")
run_command("yum install -y httpd mariadb-server mariadb php php-mysql php-gd php-ldap php-json php-xml php-mbstring php-zip php-curl php-bcmath php-imap php-apcu wget unzip")

# 配置防火墙
print("配置防火墙...")
run_command("systemctl start firewalld")
run_command("systemctl enable firewalld")
run_command("firewall-cmd --permanent --add-service=http")
run_command("firewall-cmd --permanent --add-service=https")
run_command("firewall-cmd --reload")

# 配置MariaDB
print("配置数据库...")
run_command("systemctl start mariadb")
run_command("systemctl enable mariadb")

# 安全配置数据库
db_password = getpass.getpass("设置MariaDB root密码: ")
run_command(f"mysql -e \"ALTER USER 'root'@'localhost' IDENTIFIED BY '{db_password}';\"")
run_command("mysql -e \"DELETE FROM mysql.user WHERE User='';\"")
run_command("mysql -e \"DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');\"")
run_command("mysql -e \"DROP DATABASE IF EXISTS test;\"")
run_command("mysql -e \"DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';\"")
run_command("mysql -e \"FLUSH PRIVILEGES;\"")

# 创建GLPI数据库
glpi_db = input("输入GLPI数据库名 (默认glpidb): ") or "glpidb"
glpi_user = input("输入GLPI数据库用户 (默认glpiuser): ") or "glpiuser"
glpi_pass = getpass.getpass("输入GLPI数据库密码: ")

run_command(f"mysql -u root -p{db_password} -e \"CREATE DATABASE {glpi_db} CHARACTER SET utf8 COLLATE utf8_unicode_ci;\"")
run_command(f"mysql -u root -p{db_password} -e \"CREATE USER '{glpi_user}'@'localhost' IDENTIFIED BY '{glpi_pass}';\"")
run_command(f"mysql -u root -p{db_password} -e \"GRANT ALL PRIVILEGES ON {glpi_db}.* TO '{glpi_user}'@'localhost';\"")
run_command(f"mysql -u root -p{db_password} -e \"FLUSH PRIVILEGES;\"")

# 下载安装GLPI
print("下载安装GLPI...")
run_command("cd /var/www/html && wget https://github.com/glpi-project/glpi/releases/download/10.0.7/glpi-10.0.7.tgz")
run_command("cd /var/www/html && tar -xvzf glpi-10.0.7.tgz")
run_command("mv /var/www/html/glpi /var/www/html/glpi-web")
run_command("chown -R apache:apache /var/www/html/glpi-web")
run_command("chmod -R 755 /var/www/html/glpi-web")

# 配置Apache
print("配置Apache...")
server_name = input("输入服务器域名 (如glpi.example.com): ")

with open("/etc/httpd/conf.d/glpi.conf", "w") as f:
f.write(f"""<VirtualHost *:80>
ServerAdmin admin@{server_name}
DocumentRoot /var/www/html/glpi-web
ServerName {server_name}

<Directory /var/www/html/glpi-web>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog /var/log/httpd/glpi_error.log
CustomLog /var/log/httpd/glpi_access.log combined
</VirtualHost>""")

# 调整PHP配置
print("调整PHP配置...")
run_command("sed -i 's/^memory_limit =.*/memory_limit = 256M/' /etc/php.ini")
run_command("sed -i 's/^upload_max_filesize =.*/upload_max_filesize = 64M/' /etc/php.ini")
run_command("sed -i 's/^post_max_size =.*/post_max_size = 64M/' /etc/php.ini")
run_command("sed -i 's/^max_execution_time =.*/max_execution_time = 600/' /etc/php.ini")

# 重启服务
print("重启服务...")
run_command("systemctl restart httpd")
run_command("systemctl enable httpd")

print("\n=== GLPI安装完成 ===")
print(f"请通过浏览器访问: http://{server_name}/glpi-web 完成后续配置")
print(f"数据库信息:")
print(f" 数据库名: {glpi_db}")
print(f" 用户名: {glpi_user}")
print(f" 密码: {glpi_pass}")

if __name__ == "__main__":
install_glpi()

使用说明:

  1. 将上述脚本保存为glpi_installer.py

  2. 添加执行权限:chmod +x glpi_installer.py

  3. 以root用户运行:sudo ./glpi_installer.py

  4. 按照提示输入必要信息

七、后续配置建议

  1. 定期备份:设置GLPI数据和数据库的自动备份

  2. 安全加固:配置HTTPS、定期更新系统和GLPI

  3. 监控:设置系统监控以确保服务可用性

  4. 插件管理:根据需要安装其他GLPI插件扩展功能

此部署方案提供了完整的GLPI安装流程,包括与CMDB和服务台系统的集成基础。根据实际需求,可能需要进一步配置自动发现规则、API集成细节等。

CentOS 7 部署 GLPI 系统及集成方案的更多相关文章

  1. CentOS 7 部署Gitlab+Jenkins持续集成(CI)环境

    持续集成概述及运行流程 : 持续集成概述 :持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中 ,可以频繁的将代码部署集成到主干,并进行自动化测试  开发→代 ...

  2. vue+element-ui JYAdmin后台管理系统模板-集成方案【项目搭建篇2】

    项目搭建时间:2020-06-29 本章节:讲述基于vue/cli, 项目的基础搭建. 本主题讲述了: 1.跨域配置 2.axios请求封装 3.eslint配置 4.环境dev,test,pro(开 ...

  3. SAP+ 差旅报销集成方案的实现

    跨国集团通常都会有一个财务共享中心SSC的集中处理业务部门,用于统计来自各个公司的差旅报销,而1).传统的OA审批 虽然审批流是优势存在着需要SAP数据二次录入,数据不同步等困难,2).如果终端用户都 ...

  4. Cobbler全自动批量安装部署Linux系统

    说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.2 ...

  5. SSO集成方案[随笔]

    看这个方案之前,先说明下为什么要加入SSO,以防对大家产生不好的影响.我们产品使用传统winform+db服务+Db存储方式开发,一群老菜帮子开发,以传统的datatble做数据传递,很多年了未有变化 ...

  6. Cobbler自动部署主机系统

    Cobbler自动部署主机系统 简介: Cobbler由python语言开发,是对PXE和 Kickstart以及DHCP的封装.融合很多特性,提供了CLI和Web的管理形式.更加方便的实行网络安装. ...

  7. FineReport和泛微OA(Ecology)的单点登录集成方案

    最近出现了很多关于帆软报表和泛微OA的集成问题,均出现在“单点登录”上.直接也有相关的文章介绍一些FineReport和泛微集成的背景.价值等,以及FineReport和OA的深度集成的方案,但是并没 ...

  8. 使用PHPstudy在Windows服务器下部署PHP系统

    PHP网站一般运行在Apache服务器上,IIS服务器上也可以运行,但是不推荐,windows服务器上没有集成Apache跟PHP的运行环境,但是借助第三方的软件就能很好的搞定,一般这样的软件有很多, ...

  9. CentOS 7 部署 ASP.NET Core 应用程序

    原文:CentOS 7 部署 ASP.NET Core 应用程序 看了几篇大牛写的关于 Linux 部署 ASP.NET Core 程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大 ...

  10. 【docker部署】基于linux的centos操作系统部署安装docker容器

    一.docker介绍 容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都 ...

随机推荐

  1. 动态添加html事件无响应

    问题描述:在页面中动态使用js添加的html中设置了onclick事件,生产页面后点击事件无效并提示:Cannot read property 'xxx' of undefined 如: $('.te ...

  2. ADALM-Pluto修改芯片类型为AD9364模式

    ADALM-Pluto 使用芯片AD9363(325 MHz - 3.8 GHz),但可切换至 AD9364(70 MHz - 6 GHz)模式,此篇随笔将采用串口调试的方式将 Pluto 设置为 A ...

  3. Django项目实战:从安装到启动服务

    Django项目实战:从安装到启动服务 安装Django 首先,确保你已经安装了 Python 和 pip.然后,使用以下命令来安装 Django : pip install django 安装成功后 ...

  4. mount命令及挂载本地yum源

    mount命令 mount [-t vfstype] [-o options] device dir 其中: 1.-t vfstype 指定文件系统的类型,通常不必指定.mount 会自动选择正确的类 ...

  5. 使用Docker编译安装运行Doris

    一.编译源码 (1)拉取编译镜像docker pull apache/incubator-doris:build-env-1.2 (2)Mac电脑上拉取源码git clone https://gith ...

  6. Luogu P9606 CERC2019 ABB 题解 [ 绿 ] [ KMP ] [ 字符串哈希 ]

    ABB:KMP 的做法非常巧妙. 哈希 思路 显然正着做一遍哈希,倒着做一遍哈希,然后枚举回文中心即可. 时间复杂度 \(O(n)\). 代码 #include <bits/stdc++.h&g ...

  7. 无分类无tag

    1 2 3

  8. Kali Linux(202104)重置root账户密码

    1.前言 如果忘记了Kali Linux系统的登录密码,最关键的需求就是重置root用户的登录密码, 之后使用root账户可以修改其他账户的密码. 因此, 本文就介绍一下在不知道root用户登录密码的 ...

  9. centos使用gcc编译c++源码文件(*.cpp)

    1.检查gcc是否安装 输入g++如提示:g++: fatal error: no input files说明已经安装gcc环境 2.安装gcc环境,如已经安装略过此步骤 yum install gc ...

  10. SpringBoot三种获取Request和Response的方法

    通过静态方法获取,你也可以封装一个静态方法出来 @GetMapping(value = "") public String center() { ServletRequestAtt ...