成都网站建设58,网络营销企业案例,婚恋网站应聘做销售,微信支付 网站备案#x1f914; 为什么有了GLPI还要部署OCS-NG#xff1f;
核心问题#xff1a;数据收集的风险
GLPI直接收集的问题#xff1a;
Agent直接向GLPI报告数据时#xff0c;任何收集异常都会直接影响资产数据库网络问题、Agent故障可能导致重复资产、错误数据、资产丢失无法对收集… 为什么有了GLPI还要部署OCS-NG
核心问题数据收集的风险
GLPI直接收集的问题
Agent直接向GLPI报告数据时任何收集异常都会直接影响资产数据库网络问题、Agent故障可能导致重复资产、错误数据、资产丢失无法对收集的数据进行预处理和验证
OCS-NG作为中间层的价值
传统方式终端Agent → GLPI → 资产数据库 (有风险)
推荐方式终端Agent → OCS-NG → 数据验证 → GLPI → 资产数据库 (安全)实际场景举例
场景1网络异常
没有OCS-NGAgent因网络问题重复提交 → GLPI创建重复资产有OCS-NGAgent重复提交到OCS-NG → OCS-NG去重后同步到GLPI
场景2Agent故障
没有OCS-NGAgent报告错误硬件信息 → GLPI资产数据被污染有OCS-NG错误数据进入OCS-NG → 管理员发现异常 → 修正后同步到GLPI
场景3批量部署
没有OCS-NG1000台设备同时向GLPI报告 → GLPI压力过大有OCS-NG1000台设备向OCS-NG报告 → 分批同步到GLPI → 系统稳定OCS-NG脚本部署
1. 环境准备
# 系统要求
- Debian 12 / Ubuntu 22.04
- 最小4GB内存8GB推荐
- 50GB硬盘空间# 网络规划
OCS-NG服务器192.168.1.100
GLPI服务器 192.168.1.1012. 脚本部署步骤
第一步下载并执行安装脚本
# 使用项目中提供的脚本
chmod x install_ocs_inventory_debian12.sh# 以root权限执行
sudo ./install_ocs_inventory_debian12.sh第二步安装过程中的关键选择
# 1. 环境清理推荐选择Y
是否执行完整清理(y/N): y# 2. 数据库配置
数据库名称 [ocsweb]: ocsweb
数据库用户名 [ocs]: ocs_user
数据库密码: [设置强密码]# 3. 性能优化推荐选择Y
是否应用性能优化配置(推荐) (Y/n): Y# 4. 安全配置推荐选择Y
是否应用安全加固配置(推荐) (Y/n): Y第三步验证安装
# 检查服务状态
systemctl status apache2
systemctl status mariadb# 访问Web界面
浏览器打开http://192.168.1.100/ocsreports
默认用户名admin
默认密码adminOCS-NG安装检查清单
✅ 安装前准备 (Pre-Installation Checklist)
步骤 1环境准备下载并运行 install_ocs_inventory_debian12.sh 确认脚本执行完成显示 “环境准备完成” 记录显示的 MySQL Root 密码 保存 OCS-NG安装路径配置清单.md 到本地
步骤 2服务状态检查
# 检查服务状态
systemctl status apache2 # 应显示 active (running)
systemctl status mariadb # 应显示 active (running)# 检查端口监听
netstat -tuln | grep :80 # Apache 端口
netstat -tuln | grep :3306 # MySQL 端口Apache 服务正常运行 MariaDB 服务正常运行 端口 80 和 3306 正常监听
步骤 3数据库连接测试
# 测试 OCS 数据库连接
mysql -u ocs -pOcsPass123! ocsweb -e SELECT 1;数据库连接测试成功OCS Server 安装 (Server Installation)
步骤 4启动 Server 安装
cd /tmp/ocs_installation/OCSInventory-Server
./setup.sh步骤 5安装过程问答 (复制粘贴使用)
Apache 配置询问问题答案Where is Apache daemon binary?/usr/sbin/apache2Where is Apache main configuration file?/etc/apache2/apache2.confWhere is Apache modules directory?/usr/lib/apache2/modulesWhat is Apache daemon running user?www-dataWhat is Apache daemon running group?www-dataWhere is Apache Include configuration directory?/etc/apache2/conf-available Apache 路径配置完成
Perl 配置询问问题答案Where is Perl interpreter?/usr/bin/perlDo you wish to continue installing OCS Inventory NG Server?yWhere to copy Communication server files?/usr/share/ocsinventory-reportsWhere to copy Administration console files?/usr/share/ocsinventory-reportsDo you allow Setup to create these directories?y Perl 配置完成
数据库配置询问问题答案Database server address?localhostDatabase server port?3306Database name?ocswebDatabase user?ocsDatabase user password?OcsPass123! 数据库配置完成
服务组件询问问题答案Do you wish to setup Communication server on this computer?yDo you wish to setup Administration server on this computer?yDo you wish to setup Rest API server on this computer?yDo you wish to setup a new database server?nDo you wish to update Communication server on this computer?n 服务组件配置完成 Server 安装脚本执行完成OCS Reports 安装 (Web Interface Installation)
步骤 6复制 Reports 文件
cd /tmp/ocs_installation/OCSInventory-ocsreports
cp -r . /usr/share/ocsinventory-reports/
ln -sf /usr/share/ocsinventory-reports /var/www/html/ocsreportsReports 文件复制完成 Apache 符号链接创建完成
步骤 7重启服务
systemctl restart apache2
systemctl restart mariadb服务重启完成Web 界面配置 (Web Configuration)
步骤 8访问 Web 安装界面
访问地址http://192.168.1.100/ocsreports/ Web 界面可正常访问
步骤 9数据库配置
在 Web 界面中填入以下信息配置项值MySQL serverlocalhostMySQL userocsMySQL passwordOcsPass123!Name of DatabaseocswebMySQL Port3306 数据库连接测试成功 数据库表结构创建完成
步骤 10完成安装Web 安装向导完成 显示 “Installation is complete” 或类似成功信息安装后安全配置 (Post-Installation Security)
步骤 11删除安装文件
rm -f /usr/share/ocsinventory-reports/install.phpinstall.php 文件已删除
步骤 12登录测试
访问http://192.168.1.100/ocsreports/用户名admin密码admin 成功登录 OCS 管理界面
步骤 13更改默认密码
进入用户管理修改 admin 用户密码 默认密码已更改
✅ 安装验证 (Installation Verification)
步骤 14功能验证
# 检查 Apache 配置
apache2ctl configtest# 检查数据库表
mysql -u ocs -pOcsPass123! ocsweb -e SHOW TABLES;# 检查 Web 服务
curl -I http://localhost/ocsreports/# 检查日志
tail -f /var/log/apache2/ocs_error.logApache 配置语法正确 数据库表创建成功 Web 服务响应正常 无严重错误日志备份和维护 (Backup Maintenance)
步骤 15验证自动备份
# 检查备份脚本
ls -la /usr/local/bin/ocs-backup.sh# 检查定时任务
cat /etc/cron.d/ocs-backup# 手动执行一次备份测试
/usr/local/bin/ocs-backup.sh# 检查备份结果
ls -la /var/backups/ocs/备份脚本存在且可执行 定时任务配置正确 手动备份测试成功 备份文件生成正常安装完成总结
✅ 系统状态概览Web 界面http://192.168.1.100/ocsreports/ ✅ 管理员登录admin/[新密码] ✅ 数据库ocsweb ✅ 自动备份每日 2:00AM ✅ 性能优化已配置 ✅ 安全加固已应用 ✅重要文件位置
配置信息: /root/ocs_db_info.txt
MySQL 密码: /root/.my.cnf
备份脚本: /usr/local/bin/ocs-backup.sh
日志文件: /var/log/apache2/ocs_*.log
数据目录: /var/lib/ocsinventory-reports/下一步建议
客户端部署下载并部署 OCS Agent 到需要监控的计算机网络发现配置 IP 网段发现定制化根据需要配置标签、分组等监控告警配置日志监控和告警SSL 证书配置正式的 SSL 证书注意事项: Aget客户端提交数据服务端无法接收是perl的处理结果写入数据的配置文件异常请修改如下路径的数据库部分密码与数据库密码一致
vim /etc/apache2/conf-available/z-ocsinventory-server.conf
vim /etc/apache2/conf-available/zz-ocsinventory-restapi.conf客户端封装 : OcsNG Agent可以单独封装将服务器参数等直接写入到客户端中域控等可以直接部署并且按特定的参数运行提交数据如静默后台运行/通过域控管理员安装等文章资源附件有封装工具和安装包及使用说明欢迎下载使用如有问题随时加入Q群1097440406交流GLPI连接OCS-NG配置
1. 在GLPI服务器上安装OCS-NG插件
# 下载并安装插件
cd /var/www/html/glpi/plugins/
wget https://github.com/pluginsGLPI/ocsinventoryng/releases/latest/download/ocsinventoryng.tar.gz
tar -xzf ocsinventoryng.tar.gz
chown -R www-data:www-data ocsinventoryng/2. 配置数据库连接权限
在OCS-NG服务器上执行
# 登录MySQL
mysql -u root -p# 创建GLPI连接用户
CREATE USER ocs_glpi_user192.168.1.101 IDENTIFIED BY secure_password_123;
CREATE USER ocs_glpi_user192.168.1.% IDENTIFIED BY secure_password_123;# 授予权限
GRANT SELECT ON ocsweb.* TO ocs_glpi_user192.168.1.101;
GRANT SELECT ON ocsweb.* TO ocs_glpi_user192.168.1.%;
GRANT INSERT, UPDATE ON ocsweb.locks TO ocs_glpi_user192.168.1.101;
GRANT INSERT, UPDATE ON ocsweb.locks TO ocs_glpi_user192.168.1.%;
FLUSH PRIVILEGES;# 配置远程访问
vim /etc/mysql/mariadb.conf.d/50-server.cnf
# 修改bind-address 0.0.0.0# 重启MariaDB
systemctl restart mariadb3. 在GLPI中配置OCS-NG连接启用插件
GLPI → 设置 → 插件 → OCS Inventory NG → 安装 → 启用配置连接
设置 → 插件 → OCS Inventory NG → 配置添加OCSNG服务器
- 服务器名称OCS-NG主服务器
- 数据库主机192.168.1.100
- 数据库名ocsweb
- 数据库用户ocs_glpi_user
- 数据库密码secure_password_123测试连接
点击测试连接按钮确保连接成功4. 配置同步规则
工具 → OCS-NG → 导入规则推荐设置
- 自动导入新计算机✓
- 自动同步现有计算机✗ (建议手动)
- 自动删除过期计算机✗ (建议手动)
- 同步间隔每天数据同步管理
手动同步推荐
工具 → OCS-NG → 同步计算机
- 选择要同步的设备
- 点击同步按钮
- 确认同步结果自动同步监控
# 创建监控脚本
cat /usr/local/bin/check_ocs_sync.sh EOF
#!/bin/bash
# 检查OCS-NG到GLPI的同步状态# 检查OCS-NG中的设备数量
OCS_COUNT$(mysql -h 192.168.1.100 -u ocs_glpi_user -psecure_password_123 ocsweb -se SELECT COUNT(*) FROM hardware WHERE lastcome DATE_SUB(NOW(), INTERVAL 7 DAY))# 检查GLPI中的设备数量
GLPI_COUNT$(mysql -u glpi_user -pglpi_password glpi -se SELECT COUNT(*) FROM glpi_computers WHERE is_deleted 0)echo OCS-NG设备数量: $OCS_COUNT
echo GLPI设备数量: $GLPI_COUNT# 如果差异过大发送告警
DIFF$((OCS_COUNT - GLPI_COUNT))
if [ $DIFF -gt 10 ] || [ $DIFF -lt -10 ]; thenecho 警告设备数量差异过大请检查同步状态
fi
EOFchmod x /usr/local/bin/check_ocs_sync.sh# 设置定时检查
echo 0 8 * * * root /usr/local/bin/check_ocs_sync.sh /etc/crontab️ 最佳实践
1. 数据保护策略
# 定期备份OCS-NG数据
mysqldump --single-transaction ocsweb /var/backups/ocsweb_$(date %Y%m%d).sql# 监控同步状态
# 建议人工审核重要的同步操作2. 同步建议
新设备可以自动同步设备更新建议手动确认后同步设备删除必须人工审核
3. 故障处理
# 常见问题检查
# 1. 检查网络连接
ping 192.168.1.100# 2. 检查数据库连接
mysql -h 192.168.1.100 -u ocs_glpi_user -p ocsweb# 3. 检查服务状态
systemctl status apache2
systemctl status mariadb# 4. 查看日志
tail -f /var/log/apache2/error.log
tail -f /var/log/mysql/error.log总结
为什么需要OCS-NG
️ 保护GLPI资产数据不被收集异常污染 提供可控的数据同步机制 支持数据验证和清洗 提高系统整体稳定性
部署价值
一次部署长期受益降低资产数据管理风险提高数据质量和系统可靠性
使用OCS-NG作为中间层您可以安心收集资产数据不用担心异常情况影响GLPI的生产数据。
#!/bin/bash# OCS Inventory NG 环境准备脚本
# 适用于 Debian 12 最小安装
# 自动安装所有依赖环境下载 OCS-NG 安装包set -e# 颜色定义
RED\033[0;31m
GREEN\033[0;32m
YELLOW\033[1;33m
BLUE\033[0;34m
NC\033[0m # No Color# 日志函数
log_info() {echo -e ${GREEN}[INFO]${NC} $1
}log_warning() {echo -e ${YELLOW}[WARNING]${NC} $1
}log_error() {echo -e ${RED}[ERROR]${NC} $1
}log_step() {echo -e ${BLUE}[STEP]${NC} $1
}# 检查是否以root权限运行
check_root() {if [[ $EUID -ne 0 ]]; thenlog_error 此脚本必须以root权限运行exit 1fi
}# 检查Debian版本
check_debian_version() {log_step 检查Debian版本...if ! grep -q IDdebian /etc/os-release; thenlog_error 此脚本仅支持Debian系统exit 1fiVERSION_ID$(grep -o VERSION_ID[0-9]* /etc/os-release | cut -d -f2)if [[ $VERSION_ID ! 12 ]]; thenlog_warning 检测到Debian $VERSION_ID脚本针对Debian 12优化elselog_info 检测到Debian 12版本匹配fi
}# 配置中国软件源
configure_china_mirrors() {log_step 配置中国软件源...# 备份原始sources.listif [[ ! -f /etc/apt/sources.list.bak ]]; thencp /etc/apt/sources.list /etc/apt/sources.list.baklog_info 已备份原始sources.listfi# 配置清华大学镜像源cat /etc/apt/sources.list EOF
# 清华大学镜像源
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
EOFlog_info 已配置清华大学镜像源
}# 完整环境清理
perform_complete_cleanup() {log_step 执行完整环境清理...# 停止所有相关服务log_info 停止相关服务...local services(apache2 apache-htcacheclean mariadb mysql httpd)for service in ${services[]}; doif systemctl is-active --quiet $service 2/dev/null; thenlog_info 停止服务: $servicesystemctl stop $service 2/dev/null || truesystemctl disable $service 2/dev/null || truefidone# 卸载所有相关软件包log_info 卸载相关软件包...apt remove --purge -y \ocsinventory-* \apache2* \mariadb-* mysql-* \php* \libapache2-mod-* \perl-* libperl* \2/dev/null || true# 清理配置目录log_info 清理配置和数据目录...local dirs_to_remove(/etc/apache2/etc/mysql/etc/mariadb/var/lib/mysql/var/lib/mariadb/var/log/mysql/var/log/mariadb/var/log/apache2/etc/php/var/lib/php/usr/share/ocsinventory-reports/var/lib/ocsinventory-reports/etc/ocsinventory-server/var/www/html/tmp/ocs_*)for dir in ${dirs_to_remove[]}; doif [[ -d $dir ]]; thenlog_info 删除目录: $dirrm -rf $dir 2/dev/null || truefidone# 最终清理apt autoremove -y 2/dev/null || trueapt autoclean 2/dev/null || truesystemctl daemon-reload 2/dev/null || truelog_info 环境清理完成
}# 更新系统
update_system() {log_step 更新系统...apt updateapt upgrade -ylog_info 系统更新完成
}# 安装基础工具
install_basic_tools() {log_step 安装基础工具...apt install -y \wget \curl \gnupg \lsb-release \ca-certificates \apt-transport-https \software-properties-common \unzip \git \openssl \tar \build-essential \cpanminus \composerlog_info 基础工具安装完成
}# 安装MariaDB
install_mariadb() {log_step 安装MariaDB数据库...# 预配置MariaDB避免交互式提示echo mariadb-server mysql-server/root_password password | debconf-set-selectionsecho mariadb-server mysql-server/root_password_again password | debconf-set-selections# 安装MariaDBapt install -y mariadb-server mariadb-client# 启动服务systemctl start mariadbsystemctl enable mariadb# 生成随机密码并配置MYSQL_ROOT_PASSWORD$(openssl rand -base64 32)# 安全配置mysql -e UPDATE mysql.user SET authentication_string PASSWORD($MYSQL_ROOT_PASSWORD) WHERE User root; 2/dev/null || truemysql -e UPDATE mysql.user SET plugin mysql_native_password WHERE User root; 2/dev/null || truemysql -e DELETE FROM mysql.user WHERE User;mysql -e DELETE FROM mysql.user WHERE Userroot AND Host NOT IN (localhost, 127.0.0.1, ::1);mysql -e DROP DATABASE IF EXISTS test;mysql -e DELETE FROM mysql.db WHERE Dbtest OR Dbtest\\_%;mysql -e FLUSH PRIVILEGES;# 保存密码cat /root/.my.cnf EOF
[client]
user root
password $MYSQL_ROOT_PASSWORD
EOFchmod 600 /root/.my.cnf# 将密码存储为全局变量供后续使用export MYSQL_ROOT_PASSWORDlog_info MariaDB安装完成密码已保存到 /root/.my.cnflog_info MySQL Root密码: $MYSQL_ROOT_PASSWORD
}# 安装Apache
install_apache() {log_step 安装Apache Web服务器...# 安装Apache和模块apt install -y \apache2 \apache2-utils \apache2-dev \libapache2-mod-perl2 \libapache2-mod-php# 启用必要模块a2enmod rewritea2enmod ssla2enmod perla2enmod php8.2# 启动服务systemctl start apache2systemctl enable apache2# 创建基本Web目录mkdir -p /var/www/htmlchown -R www-data:www-data /var/www/htmllog_info Apache安装完成
}# 安装PHP
install_php() {log_step 安装PHP及扩展...apt install -y \php \php-cli \php-common \php-mysql \php-gd \php-zip \php-xml \php-mbstring \php-curl \php-soap \php-ldap \php-imap \php-snmp \php-intl \php-json \php-opcache# 配置PHPlocal php_ini/etc/php/8.2/apache2/php.iniif [[ -f $php_ini ]]; then# 备份原配置cp $php_ini $php_ini.bak# 应用OCS优化配置sed -i s/memory_limit .*/memory_limit 512M/ $php_inised -i s/max_execution_time .*/max_execution_time 300/ $php_inised -i s/upload_max_filesize .*/upload_max_filesize 300M/ $php_inised -i s/post_max_size .*/post_max_size 300M/ $php_inised -i s/;date.timezone .*/date.timezone Asia\/Shanghai/ $php_inifilog_info PHP安装完成
}# 安装Perl模块
install_perl_modules() {log_step 安装Perl及模块...# 安装Perl基础包apt install -y \perl \perl-base \perl-modules-5.36 \libperl-dev# 安装OCS必需的Perl模块apt install -y \libxml-simple-perl \libdbi-perl \libdbd-mysql-perl \libapache-dbi-perl \libnet-ip-perl \libsoap-lite-perl \libarchive-zip-perl \libio-compress-perl \libmojolicious-perl \libplack-perl \libswitch-perl \libxml-entities-perl \libipc-run-perl \libproc-daemon-perl \libproc-pid-file-perl \libuniversal-require-perl# 使用cpan安装部分模块log_info 安装额外的Perl模块...cpan -i Apache::DBI XML::Entities 2/dev/null || truelog_info Perl模块安装完成
}# 配置数据库
setup_database() {log_step 配置数据库...# 创建OCS数据库和用户local db_nameocsweblocal db_userocslocal db_passwordOcsPass123!mysql EOF
CREATE DATABASE IF NOT EXISTS $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS $db_userlocalhost IDENTIFIED BY $db_password;
GRANT ALL PRIVILEGES ON $db_name.* TO $db_userlocalhost;
FLUSH PRIVILEGES;
EOF# 保存数据库信息cat /root/ocs_db_info.txt EOFOCS Inventory 数据库信息
数据库名: $db_name
用户名: $db_user
密码: $db_password
主机: localhost
端口: 3306
创建时间: $(date) MySQL Root 密码
MySQL Root密码: ${MYSQL_ROOT_PASSWORD:-请查看 /root/.my.cnf}
配置文件: /root/.my.cnf 远程访问配置
GLPI服务器可使用以下信息远程连接
- 主机: OCS服务器IP地址
- 端口: 3306
- 数据库: $db_name
- 用户名: ocs (仅限SELECT权限)
- 密码: $db_password
EOFchmod 600 /root/ocs_db_info.txtlog_info 数据库配置完成log_info OCS数据库密码: $db_password
}# 下载OCS-NG安装包并安装Composer依赖
download_ocs_packages() {log_step 下载OCS Inventory NG安装包...# 创建下载目录local download_dir/tmp/ocs_installationmkdir -p $download_dircd $download_dirlog_info 正在下载OCS Inventory NG最新版本...# 下载OCS Server组件log_info 下载OCS Server组件...if ! git clone --depth 1 https://github.com/OCSInventory-NG/OCSInventory-Server.git; thenlog_error 下载OCS Server失败请检查网络连接exit 1fi# 下载OCS Reports组件log_info 下载OCS Reports组件...if ! git clone --depth 1 https://github.com/OCSInventory-NG/OCSInventory-ocsreports.git; thenlog_error 下载OCS Reports失败请检查网络连接exit 1fi# 下载OCS Agent可选log_info 下载OCS Agent组件...git clone --depth 1 https://github.com/OCSInventory-NG/UnixAgent.git 2/dev/null || log_warning OCS Agent下载失败可选组件# 安装OCS Reports的Composer依赖log_step 安装OCS Reports的Composer依赖...if [[ -d OCSInventory-ocsreports ]]; thencd OCSInventory-ocsreports# 检查composer.json文件是否存在if [[ -f composer.json ]]; thenlog_info 发现composer.json正在安装PHP依赖...# 使用--no-dev避免安装开发依赖--optimize-autoloader优化自动加载if composer install --no-dev --optimize-autoloader --no-interaction; thenlog_info ✓ Composer依赖安装成功elselog_warning ✗ Composer依赖安装失败可能需要手动安装fielselog_info 未找到composer.json文件跳过Composer依赖安装ficd $download_dirfi# 设置正确的权限chown -R root:root $download_dirchmod -R 755 $download_dirlog_info OCS Inventory NG安装包下载完成echo 下载位置: $download_dir
}# 创建安装指导文档
create_installation_guide() {log_step 创建安装指导文档...cat /root/ocs_installation_guide.txt EOFOCS Inventory NG 手动安装指导 安装文件位置/tmp/ocs_installation/ 安装步骤1. 安装OCS Server组件cd /tmp/ocs_installation/OCSInventory-Server./setup.sh2. 安装OCS Reports组件cd /tmp/ocs_installation/OCSInventory-ocsreports# 复制文件到Web目录cp -r . /usr/share/ocsinventory-reports/# 注意必要目录和权限已自动配置# 注意Composer依赖已自动安装# 创建Apache配置符号链接ln -sf /usr/share/ocsinventory-reports /var/www/html/ocsreports3. 配置Apache虚拟主机可选# 已在环境准备中自动配置4. 访问Web界面完成配置http://your-server-ip/ocsreports/使用以下数据库信息- 数据库: ocsweb- 用户名: ocs- 密码: OcsPass123!- 主机: localhost5. 默认登录信息- 用户名: admin- 密码: admin✅ 自动完成的配置
- Composer依赖已自动安装
- 目录权限已自动设置
- MariaDB性能优化已配置
- Apache性能优化已启用
- PHP OPCache已优化
- 自动备份脚本已创建 (/usr/local/bin/ocs-backup.sh)
- 定时备份任务已配置 (每日2:00AM)
- 日志轮转已配置⚠️ 重要提示
- 安装完成后请立即更改admin密码
- 删除install.php文件确保安全
- 配置防火墙允许80和443端口
- 数据库已配置远程访问 (bind-address 0.0.0.0) 相关文件
- 数据库信息: /root/ocs_db_info.txt
- MySQL配置: /root/.my.cnf
- 备份脚本: /usr/local/bin/ocs-backup.sh
- 性能配置: /etc/mysql/mariadb.conf.d/99-ocs-optimization.cnf
EOFlog_info 安装指导文档创建完成: /root/ocs_installation_guide.txt
}# 配置Apache基础设置
configure_apache_basics() {log_step 配置Apache基础设置...# 创建基础配置cat /etc/apache2/sites-available/ocs.conf EOF
VirtualHost *:80ServerAdmin adminlocalhostDocumentRoot /var/www/html# OCS Reports别名Alias /ocsreports /usr/share/ocsinventory-reportsDirectory /usr/share/ocsinventory-reportsOptions -Indexes FollowSymLinksAllowOverride AllRequire all granted/Directory# 日志配置ErrorLog ${APACHE_LOG_DIR}/ocs_error.logCustomLog ${APACHE_LOG_DIR}/ocs_access.log combined
/VirtualHost
EOF# 启用站点a2ensite ocsa2dissite 000-default# 重启Apachesystemctl restart apache2log_info Apache基础配置完成
}# 自动权限配置和优化设置
configure_automatic_optimizations() {log_step 配置自动权限和优化设置...# 1. 创建OCS必要目录并设置权限log_info 创建OCS目录结构和权限...# 创建主要目录mkdir -p /usr/share/ocsinventory-reportsmkdir -p /var/lib/ocsinventory-reports/{download,ipd,snmp,scripts,logs}mkdir -p /var/log/ocsinventory-servermkdir -p /etc/ocsinventory# 设置正确的所有者和权限chown -R www-data:www-data /usr/share/ocsinventory-reportschown -R www-data:www-data /var/lib/ocsinventory-reportschown -R www-data:www-data /var/log/ocsinventory-serverchown -R root:www-data /etc/ocsinventorychmod -R 755 /usr/share/ocsinventory-reportschmod -R 750 /var/lib/ocsinventory-reportschmod -R 755 /var/log/ocsinventory-serverchmod -R 750 /etc/ocsinventory# 2. 配置MariaDB性能优化log_info 配置MariaDB性能优化...cat /etc/mysql/mariadb.conf.d/99-ocs-optimization.cnf EOF
# OCS Inventory NG MariaDB Optimization
[mysqld]# 基础设置
default_storage_engine InnoDB
character_set_server utf8mb4
collation_server utf8mb4_unicode_ci# 连接设置
max_connections 200
max_user_connections 190
thread_cache_size 8
table_open_cache 2048# InnoDB设置
innodb_buffer_pool_size 256M
innodb_log_file_size 64M
innodb_log_buffer_size 16M
innodb_flush_log_at_trx_commit 2
innodb_file_per_table 1# 临时表
tmp_table_size 64M
max_heap_table_size 64M# 日志
slow_query_log 1
slow_query_log_file /var/log/mysql/slow-query.log
long_query_time 2# 安全
local_infile 0
bind-address 0.0.0.0
EOF# 3. 配置Apache性能优化log_info 配置Apache性能优化...cat /etc/apache2/conf-available/ocs-performance.conf EOF
# OCS Inventory NG Performance Optimization# 启用压缩
IfModule mod_deflate.cAddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/jsonAddOutputFilterByType DEFLATE application/xml application/xhtmlxml application/rssxmlAddOutputFilterByType DEFLATE image/svgxml
/IfModule# 浏览器缓存
IfModule mod_expires.cExpiresActive OnExpiresByType text/css access plus 1 monthExpiresByType application/javascript access plus 1 monthExpiresByType image/png access plus 1 monthExpiresByType image/jpg access plus 1 monthExpiresByType image/jpeg access plus 1 monthExpiresByType image/gif access plus 1 monthExpiresByType text/html access plus 1 hour
/IfModule# 安全头部
IfModule mod_headers.cHeader always set X-Content-Type-Options nosniffHeader always set X-Frame-Options SAMEORIGINHeader always set X-XSS-Protection 1; modeblockHeader always set Referrer-Policy strict-origin-when-cross-origin
/IfModule# 隐藏Apache版本
ServerTokens Prod
ServerSignature Off
EOF# 启用Apache模块和配置a2enmod expiresa2enmod headersa2enmod deflatea2enconf ocs-performance# 4. 配置PHP性能优化log_info 应用PHP额外优化配置...local php_ini/etc/php/8.2/apache2/php.iniif [[ -f $php_ini ]]; then# 添加额外的PHP优化配置cat $php_ini EOF; OCS Inventory NG 额外优化配置
; 会话设置
session.gc_maxlifetime 3600
session.cookie_lifetime 0; 安全设置
expose_php Off
allow_url_fopen Off
allow_url_include Off; 性能设置
realpath_cache_size 4096K
realpath_cache_ttl 600; OPCache设置
opcache.enable 1
opcache.memory_consumption 128
opcache.max_accelerated_files 10000
opcache.revalidate_freq 2
opcache.validate_timestamps 1
EOFfi# 5. 创建自动备份脚本log_info 创建自动备份脚本...cat /usr/local/bin/ocs-backup.sh EOF
#!/bin/bash
# OCS Inventory NG 自动备份脚本BACKUP_DIR/var/backups/ocs
DATE$(date %Y%m%d_%H%M%S)
DB_NAMEocsweb# 创建备份目录
mkdir -p $BACKUP_DIR# 数据库备份
echo 开始数据库备份...
mysqldump --single-transaction --routines --triggers $DB_NAME | gzip $BACKUP_DIR/ocs_db_$DATE.sql.gz# 配置文件备份
echo 开始配置文件备份...
tar -czf $BACKUP_DIR/ocs_config_$DATE.tar.gz \/etc/apache2 \/etc/mysql \/usr/share/ocsinventory-reports \/var/lib/ocsinventory-reports \2/dev/null# 保留最近7天的备份
find $BACKUP_DIR -name ocs_* -mtime 7 -deleteecho 备份完成: $DATE
EOFchmod x /usr/local/bin/ocs-backup.sh# 6. 创建cron定时任务log_info 配置定时备份任务...cat /etc/cron.d/ocs-backup EOF
# OCS Inventory NG 每日备份
0 2 * * * root /usr/local/bin/ocs-backup.sh /var/log/ocs-backup.log 21
EOF# 7. 配置logrotatelog_info 配置日志轮转...cat /etc/logrotate.d/ocs-inventory EOF
/var/log/apache2/ocs_*.log {dailymissingokrotate 52compressdelaycompressnotifemptycreate 644 www-data admpostrotatesystemctl reload apache2 /dev/null 21 || trueendscript
}/var/log/ocsinventory-server/*.log {dailymissingokrotate 30compressdelaycompressnotifemptycreate 644 www-data adm
}
EOFlog_info 自动权限和优化配置完成
}# 重启服务
restart_services() {log_step 重启相关服务应用所有配置...# 重启MariaDB加载新配置log_info 重启MariaDB服务...if systemctl restart mariadb; thenlog_info ✓ MariaDB服务重启成功elselog_error ✗ MariaDB服务重启失败fi# 重启Apache加载新配置和模块log_info 重启Apache服务...if systemctl restart apache2; thenlog_info ✓ Apache服务重启成功elselog_error ✗ Apache服务重启失败fi# 等待服务完全启动sleep 3log_info 服务重启完成所有配置已生效
}# 最终检查
final_check() {log_step 执行最终检查...# 检查服务状态local services(mariadb apache2)for service in ${services[]}; doif systemctl is-active --quiet $service; thenlog_info ✓ $service 服务运行正常elselog_error ✗ $service 服务异常fidone# 检查端口监听if netstat -tuln | grep -q :80 ; thenlog_info ✓ Apache监听端口80正常elselog_warning ✗ Apache端口80未监听fiif netstat -tuln | grep -q :3306 ; thenlog_info ✓ MariaDB监听端口3306正常elselog_warning ✗ MariaDB端口3306未监听fi# 检查PHPif php -v /dev/null 21; thenlog_info ✓ PHP安装正常elselog_error ✗ PHP安装异常fi# 检查Perlif perl -v /dev/null 21; thenlog_info ✓ Perl安装正常elselog_error ✗ Perl安装异常filog_info 最终检查完成
}# 显示完成信息
show_completion_info() {local server_ip$(hostname -I | awk {print $1})echoecho echo OCS Inventory NG 环境准备完成echo echoecho 环境信息echo - ✅ MariaDB 10.x 已安装并配置echo - ✅ Apache 2.4 已安装并配置echo - ✅ PHP 8.2 及扩展已安装echo - ✅ Perl 及必要模块已安装echo - ✅ OCS数据库已创建echoecho 安装文件已准备echo - OCS Server: /tmp/ocs_installation/OCSInventory-Server/echo - OCS Reports: /tmp/ocs_installation/OCSInventory-ocsreports/echo - ✅ Composer依赖已自动安装echoecho 重要信息echo - MySQL root密码: ${MYSQL_ROOT_PASSWORD:-查看 /root/.my.cnf}echo - OCS数据库信息: 查看 /root/ocs_db_info.txtecho - 安装指导: 查看 /root/ocs_installation_guide.txtechoecho 下一步操作echo 1. 阅读安装指导: cat /root/ocs_installation_guide.txtecho 2. 进入Server目录: cd /tmp/ocs_installation/OCSInventory-Serverecho 3. 运行安装脚本: ./setup.shecho 4. 按照指导完成Reports组件安装echo 5. 访问 http://$server_ip/ocsreports 完成Web配置echoecho ⚡ 自动优化配置echo - ✅ MariaDB性能优化已配置echo - ✅ Apache性能优化已启用echo - ✅ PHP OPCache已优化echo - ✅ 目录权限已自动设置echo - ✅ 自动备份脚本已创建 (/usr/local/bin/ocs-backup.sh)echo - ✅ 定时备份任务已配置 (每日2:00AM)echo - ✅ 日志轮转已配置echoecho 重要目录echo - OCS主目录: /usr/share/ocsinventory-reportsecho - 数据目录: /var/lib/ocsinventory-reportsecho - 日志目录: /var/log/ocsinventory-serverecho - 备份目录: /var/backups/ocsechoecho ⚠️ 安全提醒echo - 请立即更改默认admin密码echo - 安装完成后删除install.php文件echo - 配置防火墙和SSL证书echo - 数据库已配置远程访问 (bind-address 0.0.0.0)echoecho
}# 主函数
main() {echo echo OCS Inventory NG 环境准备脚本echo 适用于 Debian 12echo echocheck_rootcheck_debian_version# 询问是否继续echo 此脚本将echo 1. 清理现有Web/数据库环境echo 2. 安装MariaDB、Apache、PHP、Perlecho 3. 配置OCS数据库echo 4. 下载OCS-NG安装包echo 5. 提供详细的安装指导echoread -p 是否继续(y/N): -n 1 -rechoif [[ ! $REPLY ~ ^[Yy]$ ]]; thenlog_info 安装已取消exit 0fi# 执行安装步骤configure_china_mirrorsupdate_system# 询问是否清理环境echolog_warning 检测到可能存在的旧环境是否执行完整清理read -p 清理环境(推荐) (Y/n): -n 1 -rechoif [[ ! $REPLY ~ ^[Nn]$ ]]; thenperform_complete_cleanupfiinstall_basic_toolsinstall_mariadbinstall_apacheinstall_phpinstall_perl_modulessetup_databaseconfigure_apache_basicsconfigure_automatic_optimizationsdownload_ocs_packagescreate_installation_guiderestart_servicesfinal_checkshow_completion_infoecholog_info 环境准备完成请按照指导文档完成OCS-NG安装。
}# 错误处理
trap log_error 脚本在第$LINENO行执行失败 ERR# 脚本入口
main $