OcsNG基于debian一鍵部署腳本

🤔 為什么有了GLPI還要部署OCS-NG?

核心問題:數據收集的風險

GLPI直接收集的問題:

  • Agent直接向GLPI報告數據時,任何收集異常都會直接影響資產數據庫
  • 網絡問題、Agent故障可能導致重復資產、錯誤數據、資產丟失
  • 無法對收集的數據進行預處理和驗證

OCS-NG作為中間層的價值:

傳統方式:終端Agent → GLPI → 資產數據庫 (有風險)
推薦方式:終端Agent → OCS-NG → 數據驗證 → GLPI → 資產數據庫 (安全)

實際場景舉例

場景1:網絡異常

  • 沒有OCS-NG:Agent因網絡問題重復提交 → GLPI創建重復資產
  • 有OCS-NG:Agent重復提交到OCS-NG → OCS-NG去重后同步到GLPI

場景2:Agent故障

  • 沒有OCS-NG:Agent報告錯誤硬件信息 → GLPI資產數據被污染
  • 有OCS-NG:錯誤數據進入OCS-NG → 管理員發現異常 → 修正后同步到GLPI

場景3:批量部署

  • 沒有OCS-NG:1000臺設備同時向GLPI報告 → GLPI壓力過大
  • 有OCS-NG:1000臺設備向OCS-NG報告 → 分批同步到GLPI → 系統穩定

🚀 OCS-NG腳本部署

1. 環境準備

# 系統要求
- Debian 12 / Ubuntu 22.04
- 最小4GB內存,8GB推薦
- 50GB硬盤空間# 網絡規劃
OCS-NG服務器:192.168.1.100
GLPI服務器:  192.168.1.101

2. 腳本部署步驟

第一步:下載并執行安裝腳本
# 使用項目中提供的腳本
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
默認密碼:admin

📋 OCS-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 -p'OcsPass123!' 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/apache2
Where is Apache main configuration file?/etc/apache2/apache2.conf
Where is Apache modules directory?/usr/lib/apache2/modules
What is Apache daemon running user?www-data
What is Apache daemon running group?www-data
Where is Apache Include configuration directory?/etc/apache2/conf-available
  • Apache 路徑配置完成

Perl 配置詢問

問題答案
Where is Perl interpreter?/usr/bin/perl
Do you wish to continue installing OCS Inventory NG Server?y
Where to copy Communication server files?/usr/share/ocsinventory-reports
Where to copy Administration console files?/usr/share/ocsinventory-reports
Do you allow Setup to create these directories?y
  • Perl 配置完成

數據庫配置詢問

問題答案
Database server address?localhost
Database server port?3306
Database name?ocsweb
Database user?ocs
Database user password?OcsPass123!
  • 數據庫配置完成

服務組件詢問

問題答案
Do you wish to setup Communication server on this computer?y
Do you wish to setup Administration server on this computer?y
Do you wish to setup Rest API server on this computer?y
Do you wish to setup a new database server?n
Do 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/ocsreports
  • Reports 文件復制完成
  • Apache 符號鏈接創建完成
步驟 7:重啟服務
systemctl restart apache2
systemctl restart mariadb
  • 服務重啟完成

🔗 Web 界面配置 (Web Configuration)

步驟 8:訪問 Web 安裝界面
  • 訪問地址:http://192.168.1.100/ocsreports/
  • Web 界面可正常訪問
步驟 9:數據庫配置

在 Web 界面中填入以下信息:

配置項
MySQL serverlocalhost
MySQL userocs
MySQL passwordOcsPass123!
Name of Databaseocsweb
MySQL Port3306
  • 數據庫連接測試成功
  • 數據庫表結構創建完成
步驟 10:完成安裝
  • Web 安裝向導完成
  • 顯示 “Installation is complete” 或類似成功信息

🔐 安裝后安全配置 (Post-Installation Security)

步驟 11:刪除安裝文件
rm -f /usr/share/ocsinventory-reports/install.php
  • install.php 文件已刪除
步驟 12:登錄測試
  • 訪問:http://192.168.1.100/ocsreports/
  • 用戶名:admin
  • 密碼:admin
  • 成功登錄 OCS 管理界面
步驟 13:更改默認密碼
  • 進入用戶管理
  • 修改 admin 用戶密碼
  • 默認密碼已更改

? 安裝驗證 (Installation Verification)

步驟 14:功能驗證
# 檢查 Apache 配置
apache2ctl configtest# 檢查數據庫表
mysql -u ocs -p'OcsPass123!' ocsweb -e "SHOW TABLES;"# 檢查 Web 服務
curl -I http://localhost/ocsreports/# 檢查日志
tail -f /var/log/apache2/ocs_error.log
  • Apache 配置語法正確
  • 數據庫表創建成功
  • 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/
🎯 下一步建議
  1. 客戶端部署:下載并部署 OCS Agent 到需要監控的計算機
  2. 網絡發現:配置 IP 網段發現
  3. 定制化:根據需要配置標簽、分組等
  4. 監控告警:配置日志監控和告警
  5. SSL 證書:配置正式的 SSL 證書
  6. 注意事項: Aget客戶端提交數據服務端無法接收,是perl的處理結果寫入數據的配置文件異常,請修改如下路徑的數據庫部分密碼與數據庫密碼一致:
vim /etc/apache2/conf-available/z-ocsinventory-server.conf
vim /etc/apache2/conf-available/zz-ocsinventory-restapi.conf
  1. 客戶端封裝 : 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_user'@'192.168.1.101' IDENTIFIED BY 'secure_password_123';
CREATE USER 'ocs_glpi_user'@'192.168.1.%' IDENTIFIED BY 'secure_password_123';# 授予權限
GRANT SELECT ON ocsweb.* TO 'ocs_glpi_user'@'192.168.1.101';
GRANT SELECT ON ocsweb.* TO 'ocs_glpi_user'@'192.168.1.%';
GRANT INSERT, UPDATE ON ocsweb.locks TO 'ocs_glpi_user'@'192.168.1.101';
GRANT INSERT, UPDATE ON ocsweb.locks TO 'ocs_glpi_user'@'192.168.1.%';
FLUSH PRIVILEGES;
# 配置遠程訪問
vim /etc/mysql/mariadb.conf.d/50-server.cnf
# 修改:bind-address = 0.0.0.0# 重啟MariaDB
systemctl restart mariadb

3. 在GLPI中配置OCS-NG連接

  1. 啟用插件

    GLPI → 設置 → 插件 → OCS Inventory NG → 安裝 → 啟用
    
  2. 配置連接

    設置 → 插件 → OCS Inventory NG → 配置添加OCSNG服務器:
    - 服務器名稱:OCS-NG主服務器
    - 數據庫主機:192.168.1.100
    - 數據庫名:ocsweb
    - 數據庫用戶:ocs_glpi_user
    - 數據庫密碼:secure_password_123
    
  3. 測試連接

    點擊"測試連接"按鈕,確保連接成功
    

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 -p'secure_password_123' ocsweb -se "SELECT COUNT(*) FROM hardware WHERE lastcome > DATE_SUB(NOW(), INTERVAL 7 DAY)")# 檢查GLPI中的設備數量
GLPI_COUNT=$(mysql -u glpi_user -p'glpi_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 "ID=debian" /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.list"fi# 配置清華大學鏡像源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 "停止服務: $service"systemctl 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 "刪除目錄: $dir"rm -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 User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"mysql -e "DROP DATABASE IF EXISTS test;"mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"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.cnf"log_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.ini"if [[ -f "$php_ini" ]]; then# 備份原配置cp "$php_ini" "$php_ini.bak"# 應用OCS優化配置sed -i 's/memory_limit = .*/memory_limit = 512M/' "$php_ini"sed -i 's/max_execution_time = .*/max_execution_time = 300/' "$php_ini"sed -i 's/upload_max_filesize = .*/upload_max_filesize = 300M/' "$php_ini"sed -i 's/post_max_size = .*/post_max_size = 300M/' "$php_ini"sed -i 's/;date.timezone =.*/date.timezone = Asia\/Shanghai/' "$php_ini"filog_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_name="ocsweb"local db_user="ocs"local db_password="OcsPass123!"mysql << EOF
CREATE DATABASE IF NOT EXISTS $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS '$db_user'@'localhost' IDENTIFIED BY '$db_password';
GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost';
FLUSH PRIVILEGES;
EOF# 保存數據庫信息cat > /root/ocs_db_info.txt << EOF
=== OCS 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_installation"mkdir -p "$download_dir"cd "$download_dir"log_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_dir"fi# 設置正確的權限chown -R root:root "$download_dir"chmod -R 755 "$download_dir"log_info "OCS Inventory NG安裝包下載完成"echo "下載位置: $download_dir"
}# 創建安裝指導文檔
create_installation_guide() {log_step "創建安裝指導文檔..."cat > /root/ocs_installation_guide.txt << 'EOF'
=== OCS 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 *:80>ServerAdmin admin@localhostDocumentRoot /var/www/html# OCS Reports別名Alias /ocsreports /usr/share/ocsinventory-reports<Directory "/usr/share/ocsinventory-reports">Options -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.c>AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/jsonAddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xmlAddOutputFilterByType DEFLATE image/svg+xml
</IfModule># 瀏覽器緩存
<IfModule mod_expires.c>ExpiresActive OnExpiresByType text/css "access plus 1 month"ExpiresByType application/javascript "access plus 1 month"ExpiresByType image/png "access plus 1 month"ExpiresByType image/jpg "access plus 1 month"ExpiresByType image/jpeg "access plus 1 month"ExpiresByType image/gif "access plus 1 month"ExpiresByType text/html "access plus 1 hour"
</IfModule># 安全頭部
<IfModule mod_headers.c>Header always set X-Content-Type-Options nosniffHeader always set X-Frame-Options SAMEORIGINHeader always set X-XSS-Protection "1; mode=block"Header 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.ini"if [[ -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_NAME="ocsweb"# 創建備份目錄
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 2>&1
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 2>&1 || 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 2>&1; thenlog_info "? PHP安裝正常"elselog_error "? PHP安裝異常"fi# 檢查Perlif perl -v >/dev/null 2>&1; 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.txt"echo "  - 安裝指導: 查看 /root/ocs_installation_guide.txt"echoecho "🚀 下一步操作:"echo "  1. 閱讀安裝指導: cat /root/ocs_installation_guide.txt"echo "  2. 進入Server目錄: cd /tmp/ocs_installation/OCSInventory-Server"echo "  3. 運行安裝腳本: ./setup.sh"echo "  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-reports"echo "  - 數據目錄: /var/lib/ocsinventory-reports"echo "  - 日志目錄: /var/log/ocsinventory-server"echo "  - 備份目錄: /var/backups/ocs"echoecho "??  安全提醒:"echo "  - 請立即更改默認admin密碼"echo "  - 安裝完成后刪除install.php文件"echo "  - 配置防火墻和SSL證書"echo "  - 數據庫已配置遠程訪問 (bind-address = 0.0.0.0)"echoecho "========================================="
}# 主函數
main() {echo "========================================"echo "🔧 OCS Inventory NG 環境準備腳本"echo "適用于 Debian 12"echo "========================================"echocheck_rootcheck_debian_version# 詢問是否繼續echo "此腳本將:"echo "1. 清理現有Web/數據庫環境"echo "2. 安裝MariaDB、Apache、PHP、Perl"echo "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 "$@" 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914329.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

001_Claude開發者指南介紹

Claude開發者指南介紹 目錄 Claude簡介Claude 4 模型開始使用核心功能支持資源 Claude簡介 Claude 是由 Anthropic 構建的高性能、可信賴和智能的 AI 平臺。Claude 具備出色的語言、推理、分析和編程能力&#xff0c;可以幫助您解決各種復雜任務。 想要與 Claude 聊天嗎&a…

004_Claude功能特性與API使用

Claude功能特性與API使用 目錄 API 基礎使用核心功能特性高級功能開發工具平臺支持 API 基礎使用 快速開始 通過 Anthropic Console 獲取 API 訪問權限&#xff1a; 在 console.anthropic.com/account/keys 生成 API 密鑰使用 Workbench 在瀏覽器中測試 API 認證方式 H…

ReAct論文解讀(1)—什么是ReAct?

什么是ReAct&#xff1f; 在大語言模型&#xff08;LLM&#xff09;領域中&#xff0c;ReAct 指的是一種結合了推理&#xff08;Reasoning&#xff09; 和行動&#xff08;Acting&#xff09; 的提示方法&#xff0c;全稱是 “ReAct: Synergizing Reasoning and Acting in Lan…

【云服務器安全相關】服務器防火墻常見系統日志信息說明

目錄? 一、防火墻日志是做什么的&#xff1f;&#x1f6e0;? 二、常見防火墻日志信息及說明&#x1f9ea; 三、典型日志示例解析1. 被阻斷的訪問&#xff08;DROP&#xff09;2. 被允許的訪問&#xff08;ACCEPT&#xff09;3. 被拒絕的端口訪問4. 可疑端口掃描行為&#x1f…

011_視覺能力與圖像處理

視覺能力與圖像處理 目錄 視覺能力概述支持的圖像格式圖像上傳方式使用限制最佳實踐應用場景API使用示例視覺能力概述 多模態交互 Claude 3 系列模型具備強大的視覺理解能力,可以分析和理解圖像內容,實現真正的多模態AI交互。這種能力使Claude能夠: 圖像內容分析:理解圖…

ansible自動化部署考試系統前后端分離項目

1. ?ansible編寫劇本步驟1??創建roles目錄結構2??在group_vars/all/main.yml中定義變量列表3??在tasks目錄下編寫tasks任務4??在files目錄下準備部署文件5??在templates目錄下創建j2模板文件6??在handlers目錄下編寫handlers7??在roles目錄下編寫主playbook8??…

【AI論文】GLM-4.1V-Thinking:邁向具備可擴展強化學習的通用多模態推理

摘要&#xff1a;我們推出GLM-4.1V-Thinking&#xff0c;這是一款旨在推動通用多模態推理發展的視覺語言模型&#xff08;VLM&#xff09;。在本報告中&#xff0c;我們分享了在以推理為核心的訓練框架開發過程中的關鍵發現。我們首先通過大規模預訓練開發了一個具備顯著潛力的…

Linux進程通信——匿名管道

目錄 1、進程間通信基礎概念 2、管道的工作原理 2.1 什么是管道文件 3、匿名管道的創建與使用 3.1、pipe 系統調用 3.2 父進程調用 fork() 創建子進程 3.3. 父子進程的文件描述符共享 3.4. 關閉不必要的文件描述符 3.5 父子進程通過管道進行通信 父子進程通信的具體例…

sql:sql在office中的應用有哪些?

在Office軟件套件中&#xff0c;主要是Access和Excel會用到SQL&#xff08;結構化查詢語言&#xff09;&#xff0c;以下是它們在這兩款軟件中的具體應用&#xff1a; 在Access中的應用 創建和管理數據庫對象&#xff1a; 創建表&#xff1a;使用CREATE TABLE語句可以創建新的數…

零基礎完全理解視覺語言模型(VLM):從理論到代碼實踐

本文是《從LLM到VLM&#xff1a;視覺語言模型的核心技術與Python實現》的姊妹篇&#xff0c;主要面向零基礎的讀者&#xff0c;希望用更通俗易懂的語言帶領大家入門VLM。本教程的完整代碼可以在GitHub上找到&#xff0c;如果你有任何問題或建議&#xff0c;歡迎交流討論。 寫在…

數據結構 Map和Set

文章目錄&#x1f4d5;1. 二叉搜索樹??1.1 查找操作??1.2 插入操作??1.3 刪除操作&#x1f4d5;2. Map的使用??2.1 Map的常用方法??2.2 TreeMap和HashMap的區別??2.3 HashMap的底層實現&#x1f4d5;3. Set的使用??3.1 Set的常用方法??3.2 TreeSet和HashSet的區…

樹莓派5-系統 Debian 12 開啟VNC遠程訪問踩坑記錄

簡單記錄一下踩坑&#xff0c;安裝vnc遠程訪問服務并設置開機自啟1.查看系統版本&#xff0c;我這里的系統版本是 12cat /etc/os-release2.安裝VNC服務sudo apt install realvnc-vnc-server realvnc-vnc-viewer -y3.創建服務單元文件&#xff1a;sudo nano /etc/systemd/system…

TASK2 夏令營:用AI做帶貨視頻評論分析

TASK2 夏令營&#xff1a;用AI做帶貨視頻評論分析**電商評論洞察賽題&#xff1a;從Baseline到LLM進階優化學習筆記**一、 賽題核心解讀1.1. 任務鏈條與目標1.2. 關鍵挑戰與評分機制二、 Baseline方案回顧與瓶頸分析2.1. Baseline技術棧2.2. 核心瓶頸三、 進階優化策略&#xf…

Docker:安裝命令筆記

目錄 零、安裝&#xff1a;略 一、鏡像 1.0、獲取鏡像&#xff1a; 1.1、查看鏡像&#xff1a; 1.2、刪除鏡像&#xff1a; 二、容器 2.0、創建并啟動容器 2.1、tomcat和jdk9的“創建并啟動容器”的命令 2.2、容器操作 2.3、容器日志操作 零、安裝&#xff1a;略 略 …

Python七彩花朵

系列文章 序號直達鏈接Tkinter1Python李峋同款可寫字版跳動的愛心2Python跳動的雙愛心3Python藍色跳動的愛心4Python動漫煙花5Python粒子煙花Turtle1Python滿屏飄字2Python藍色流星雨3Python金色流星雨4Python漂浮愛心5Python愛心光波①6Python愛心光波②7Python滿天繁星8Pytho…

【保姆級圖文詳解】MCP架構(客戶端-服務端)、三種方式使用MCP服務、Spring AI MCP客戶端和服務端開發、MCP部署方案、MCP安全性

文章目錄前言一、MCP(model context protocol)1.1、概念描述1.2、MCP作用與意義1.3、MCP架構二、使用MCP(model context protocol)2.1、云平臺使用MCP2.2、軟件客戶端使用MCP2.3、Spring AI程序中使用MCP三、Spring AI MCP(model context protocol)開發過程3.1、MCP服務端開發3…

Linux的 iproute2 配置:以太網(Ethernet)、綁定(Bond)、虛擬局域網(VLAN)、網橋(Bridge)筆記250713

Linux的 iproute2 配置:以太網(Ethernet)、綁定(Bond)、虛擬局域網(VLAN)、網橋(Bridge&#xff09;筆記250713 在 Linux 中使用 iproute2 工具集配置網絡是現代且推薦的方法&#xff0c;它取代了舊的 ifconfig、route、brctl、vconfig 等命令。iproute2 提供了統一的接口 ip …

當信任上鏈解碼區塊鏈溯源系統開發邏輯與產業變革

當信任上鏈&#xff1a;解碼區塊鏈溯源系統的開發邏輯與產業變革在上海某高端超市的進口水果區&#xff0c;消費者王女士拿起一盒車厘子&#xff0c;用手機掃描包裝上的二維碼&#xff0c;屏幕立刻彈出一串動態信息&#xff1a;智利瓦爾帕萊索港口的裝船時間、海關清關的具體日…

可視化DIY小程序工具!開源拖拽式源碼系統,自由搭建,完整的源代碼包分享

溫馨提示&#xff1a;文末有資源獲取方式傳統的小程序開發對技術要求較高&#xff0c;這使得許多非技術人員望而卻步。可視化DIY小程序工具應運而生&#xff0c;它通過拖拽式操作和開源代碼系統&#xff0c;極大地降低了開發門檻&#xff0c;讓更多人能夠快速構建個性化小程序。…

【MLLM】多模態理解GLM-4.1V-Thinking模型

note GLM-4.1V-Thinking模型引入 課程采樣強化學習&#xff08;RLCS, Reinforcement Learning with Curriculum Sampling&#xff09; 策略&#xff0c;在多個復雜推理任務中實現能力突破&#xff0c;整體性能達到 10B 級別視覺語言模型的領先水平。GLM-4.1V-9B-Thinking 通過…