本教程适用于以下操作系统版本
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
本页内容
- 先决条件
- 安装依赖项
- 配置 MariaDB 服务器
- 配置 PHP
- 配置 UFW 防火墙
- 安装 OCS Inventory 服务器
- 为 OCS Inventory 服务器应用 Apache2 配置
- 安装 OCS Inventory 服务器与 OCS Reports
- 结语
OCS Inventory Server 是一款开源软件,可让你扫描并盘点所处环境或 IT 部门中的所有设备。它是一套免费的设备与资产管理系统,帮助你掌握所有设备与计算机的信息。
OCS Inventory Server 由 4 个主要组件构成:数据库服务器(Database server)、通信服务器(Communication Server)、管理服务器(Administration Server)和部署服务器(Deployment server)。OCS Inventory Server 可让你获取关于设备的最新、最相关数据。它可以安装在多种操作系统上,并为 Microsoft Windows、Linux、BSD、Sun Solaris、IBM AIX、HP-UX、MacOS X 和 Android 等多种操作系统提供代理(agent)软件包。
在网络设备方面,OCS Inventory 支持网络发现和 SNMP 代理。你可以通过网络发现(Network Discovery)和 SNMP 代理,添加并录入网络硬件的信息,例如打印机、交换机、未安装 OCS 代理的计算机等。
在本指南中,你将在 Ubuntu 22.04 服务器上安装 OCS Inventory Server。你将使用 Apache2 Web 服务器、MariaDB 数据库服务器和 PHP 来部署 OCS Inventory Server。这还包括安装 ocsreports —— 一个基于 PHP 的应用程序,为 OCS Inventory Server 提供 Web 管理控制台,它将与 Apache2 和 PHP 一同运行。
先决条件
要完成本指南,你必须满足以下要求:
- 一台运行 Ubuntu 22.04 的 Linux 服务器 —— 本示例使用的是一台全新且通用的 Ubuntu 服务器,主机名为 ' ocs-server ',IP 地址为 ' 192.168.5.20 '。
- 一个具有 sudo/root 管理员权限的非 root 用户。
当上述先决条件就绪后,即可继续开始安装 OCS Inventory Server。
安装依赖项
在本节中,你需要安装一些用于安装和运行 OCS Inventory Server 的依赖项。本次安装将包含以下软件包:
- 基础依赖项 —— 这些软件包将用于编译部分 Perl 模块。
- Perl 及部分额外的 Perl 软件包 —— OCS Inventory Server 使用 Perl 编写,因此你必须在服务器上安装 Perl。其中一些额外的 Perl 软件包包括用于 REST API 的 Perl 数据库驱动和 Perl soap 软件包。
- LAMP 技术栈 —— OCS Inventory Server 将运行在 Apache2 和 MariaDB 数据库之上。PHP 软件包将由 ' ocsreports ' 使用,它是 OCS Inventory Server 的 Web 应用控制台。
- 额外的 Perl 模块 —— 你将通过 CPAN(Comprehensive Perl Archive Network,Perl 综合典藏网)安装一些 Perl 模块。
在开始之前,执行以下命令更新并刷新你的 Ubuntu 软件包索引。
sudo apt update
执行以下 ' apt install ' 命令安装一些基础开发依赖项。这些软件包主要用于编译部分 Perl 模块。
sudo apt install git curl wget make cmake gcc make
当提示时,输入 y 确认并按 ENTER 继续。

现在通过下面的 ' apt install ' 命令安装 Perl 及部分 Perl 软件包。OCS Inventory Server 主要使用 Perl 编写,因此在安装 OCS Inventory Server 之前必须先安装 Perl 软件包。
sudo apt install perl libxml-simple-perl libcompress-zlib-perl libdbi-perl libdbd-mysql-perl libnet-ip-perl libsoap-lite-perl libio-compress-perl
当提示时输入 y 并按 ENTER 继续。

接下来,通过以下 ' apt install ' 命令安装 LAMP 技术栈以及部分额外软件包,例如 ' libapache2-mod-perl2 ' 和 ' composer '。Apache Web 服务器和 PHP 软件包将用于运行 OCS Inventory Server 的 Web 管理控制台,而 MariaDB 则用作数据库后端。
sudo apt install apache2 libapache2-mod-perl2 libapache2-mod-perl2-dev libapache-dbi-perl libapache-db-perl libapache2-mod-php libarchive-zip-perl mariadb-server composer php-mbstring php-xml php-mysql php-zip php-pclzip php-gd php-soap php-curl php-json
当提示时输入 y,然后按 ENTER。

在 LAMP 技术栈与 Composer 安装完成后,执行以下命令验证 Apache2 和 MariaDB 服务状态,然后验证 PHP 和 Composer 的版本。
通过下面的 ' systemctl ' 命令验证 Apache2 服务。输出 ' enabled ' 表示 Apache2 Web 服务器将在系统启动时自动启动,而输出 ' active (running) ' 表示 Apache2 Web 服务器正在运行。
sudo systemctl is-enabled apache2
sudo systemctl status apache2

通过下面的 ' systemctl ' 命令验证 MariaDB 服务。输出 ' enabled ' 表示 MariaDB 服务器将在系统启动时自动启动,而输出 'active (running) ' 表示 MariaDB 服务正在运行。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

使用以下命令验证 PHP 版本。撰写本文时,服务器上安装的是由 Ubuntu 软件源提供的 PHP 8.1。
php -v

执行以下命令验证 Composer 版本。
sudo -u www-data composer -v

在基础依赖项安装完成后,执行以下命令安装 OCS Inventory Server 所需的一些 Perl 模块。
sudo perl -MCPAN -e 'install Apache2::SOAP'
sudo perl -MCPAN -e 'install XML::Entities'
sudo perl -MCPAN -e 'install Net::IP'
sudo perl -MCPAN -e 'install Apache::DBI'
sudo perl -MCPAN -e 'install Mojolicious'
sudo perl -MCPAN -e 'install Switch'
sudo perl -MCPAN -e 'install Plack::Handler'
系统会首次要求你配置 CPAN。输入 ' yes ' 确认并自动完成 CPAN 配置。随后 Perl 模块的安装应会开始。

Perl 模块安装完成后,即表示 OCS Inventory Server 的软件包依赖已安装就绪。接下来,你将配置 MariaDB 服务器和 PHP。
配置 MariaDB 服务器
在本节中,你将通过 ' mariadb-secure-installation ' 命令对 MariaDB 服务器部署进行初始化与安全加固。随后,你将创建一个供 OCS Inventory Server 使用的新数据库和用户。
执行以下命令,开始配置并加固 MariaDB 服务器部署。
sudo mariadb-secure-installation
系统会向你询问以下 MariaDB 相关配置:
- 将本地认证切换为 unix_socket?输入 n。
- 设置新的 MariaDB root 密码?输入 y 确认,然后输入你的 MariaDB 服务器部署的新密码。
- 移除匿名用户?输入 y 确认。
- 从部署中移除默认的 test 数据库?输入 y 确认。
- 禁止 MariaDB root 用户远程登录?输入 y 确认。
- 重新加载权限表并应用更改?输入 y 并按 ENTER。
至此,你已完成 MariaDB 服务器部署的安全加固,并配置了 MariaDB root 用户的密码。
现在使用以下命令登录 MariaDB shell。你将为此 OCS Inventory Server 应用创建一个新 MariaDB 数据库和用户。
sudo mariadb -u root -p
执行以下 SQL 语句创建一个新数据库 ' ocsdb ' 和用户 'ocs@localhost' 。同时,请务必修改下面的 MariaDB 用户密码。
CREATE DATABASE ocsdb;
GRANT ALL PRIVILEGES ON ocsdb.* TO ocs@localhost IDENTIFIED BY "ocsP4ssw0rd";
FLUSH PRIVILEGES;

最后,执行以下查询以验证新用户 ' ocs@localhost ' 的权限列表。你应该看到 MariaDB 用户 ' ocs@localhost ' 拥有对 OCS Inventory Server 将使用的数据库 ' ocsdb ' 的访问权限。
SHOW GRANTS FOR ocs@localhost;
QUIT;

在本节中,你已通过 ' mariadb-secure-installation ' 命令加固了 MariaDB 服务器部署并配置了 MariaDB root 密码。你也为 OCS Inventory Server 安装创建了一个新的 MariaDB 数据库和用户。下一步,你将配置一个用于运行 ' ocsreports '(即 OCS 管理控制台)的 PHP 配置文件。
配置 PHP
在配置完 MariaDB 服务器后,你现在需要配置供 ocsreports 或 OCS 管理服务器(Administration Server)使用的 PHP 安装。你需要修改 ' php.ini ' 文件中的一些参数,并重启 Apache2 服务以使所做的更改生效。
使用以下 nano 编辑器命令打开 PHP 配置文件 ' /etc/php/8.1/apache2/php.ini'。
sudo nano /etc/php/8.1/apache2/php.ini
将默认参数修改为以下各行。请务必根据你的时区调整 ' date.timezone ' 参数。
memory_limit = 512M post_max_size = 100M upload_max_filesize = 100M max_execution_time = 360 date.timezone = Europe/Stockholm
完成后保存并关闭文件。
现在执行以下 systemctl 命令以重启 Apache2 服务并应用更改。
sudo systemctl restart apache2
至此,OCS Inventory Server 的 LAMP 技术栈基础配置已完成。下一步,你将配置 UFW 防火墙并开放一些端口或服务。
配置 UFW 防火墙
在 Ubuntu 服务器上,ufw 是默认安装且已安装的防火墙,但它尚未在系统上运行。在本节中,你将把 OpenSSH 和 ' Apache Full ' 服务添加到 ufw。随后,你将在服务器上启动 ufw 并使其在系统开机时自动运行。
执行以下 ' ufw allow ' 命令以开放 OpenSSH 和 ' Apache Full ' 应用。OpenSSH 应用会开放默认的 SSH 端口 22/tcp,而 'Apache Full' 服务会开放默认的 HTTP 和 HTTPS 端口 —— 80/tcp 和 443/tcp。
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
现在执行以下命令以启动并启用 UFW 防火墙。当提示时,输入 y 确认并按 ENTER 继续。
sudo ufw enable
输出 ' Firewall is active and enabled on system startup ' 表示 UFW 已启用,并将在系统开机时自动运行。命令执行后,UFW 应当处于运行状态。

执行以下命令验证 UFW 防火墙的状态。输出 ' Status: Active ' 表示 UFW 正在运行,你还会看到 ' OpenSSH ' 和 ' Apache Full ' 两个应用已被添加并可用于 UFW 防火墙。
sudo ufw status

至此,你已完成 OCS Inventory Server 安装所需的软件包依赖的安装与基础配置。进入下一节,开始安装 OCS Inventory Server。
安装 OCS Inventory 服务器
OCS Inventory Server 可以安装在 Linux、Unix 和 Windows 等不同的操作系统上。它提供多种软件包形式,并为 Ubuntu、Debian 和 CentOS 等不同 Linux 发行版提供了官方软件仓库。
在本示例中,你将通过源代码手动安装 OCS Inventory Server,并使用 MariaDB 数据库服务器进行配置。你还将安装 ocsreports,它将作为图形化应用,为 OCS Inventory Server 提供 Web 管理控制台。
将工作目录切换到 ' /var/www ',并通过下面的 ' git clone ' 命令下载 OCS Inventory Server 源代码。源代码将位于 ' OCSInventory-Server ' 目录中。
cd /var/www/
git clone https://github.com/OCSInventory-NG/OCSInventory-Server.git

切换到 'OCSInventory-Server' 目录,并通过下面的 ' git clone ' 命令下载 ' ocsreports ' 应用。' ocsreports ' 是一个 PHP Web 应用,将作为 OCS Inventory Server 的 Web 控制台或 Web 管理控制台,它将存放在 ' ocsreports ' 目录中。
cd OCSInventory-Server/
git clone https://github.com/OCSInventory-NG/OCSInventory-ocsreports.git ocsreports

切换到 ' ocsreports ' 目录,并运行 ' composer install ' 命令以安装 ocsreports Web 应用的 PHP 依赖项。
cd ocsreports/
sudo -u www-data composer install
接下来,进入 OCS Inventory Server 安装根目录 ' /var/www/OCSInventory-Server /',并使用以下 nano 编辑器命令打开 bash 脚本 ' setup.sh '。'setup.sh ' 脚本将用于安装 OCS Inventory Server。
cd /var/www/OCSInventory-Server/
nano setup.sh
根据你的数据库信息修改数据库参数,包括数据库名、用户名和密码。
DB_SERVER_HOST="localhost" DB_SERVER_PORT="3306" DB_SERVER_USER="ocs" DB_SERVER_PWD="ocsP4ssw0rd"
完成后保存并关闭文件。
现在执行 ' setup.sh ' 脚本以开始安装 OCS Inventory Server。在安装过程中,系统会向你询问一些 OCS 服务器配置。
./setup.sh
首先,' setup.sh ' 脚本会检查并验证 OCS Inventory 服务器安装的依赖项。如果服务器配置满足 OCS 服务器的要求,你应该会看到安装脚本输出的欢迎信息。
输入 y 继续。

接下来,安装脚本会验证 OCS Inventory Server 将使用的数据库信息。按 ENTER 以使用数据库主机和端口的默认值。

接下来,系统会询问 Apache2 Web 服务器的配置。这包括 ' apachectl ' 二进制文件的位置、默认的 Apache 配置 'apache.conf' 、运行 Apache2 服务的默认用户和组,以及 Apache2 用于存储额外配置文件的默认路径。
按 ENTER 以使用 Apache2 Web 服务器的默认设置。

接下来系统会询问 ' perl ' 的二进制文件。保持默认并按 ENTER 继续。

当询问是否在当前机器上设置 ' Communication server '(通信服务器)时,输入 y 确认。随后安装脚本会检查安装 ' Communication server ' 所需的一些依赖项。
此外,系统还会询问 ' Communication server ' 将使用的一些设置。按 ENTER 以使用默认设置。

接下来,安装脚本 ' setup.sh ' 会确保所需的 Perl 模块在你的系统上可用。出现 ' Found that PERL module ... is available ' 的输出表示相应模块可用。
然后,系统会要求你设置 OCS Inventory Server 的 REST API。输入 y 确认,其余设置按 ENTER 使用默认值。

至此,' Communication server '(即 OCS Inventory Server)的安装将开始。下面是 OCS Inventory Server 安装过程的一些截图。
' Communication server ' 的 Perl 模块的安装与配置。

为 ' Communication serve r' 设置配置目录。

' Communication server ' 的安装已完成。此外,当询问是否重命名 OCS Inventory Server 默认的 Apache2 配置文件时,输入 y 确认并按 ENTER 继续。

接下来,系统会要求你设置和安装 'ocsreports' Web 管理控制台。输入 y 确认。
然后,安装程序会询问已通过 Composer 下载并安装好 PHP 依赖的 ' ocsreports ' 源代码位置。再次输入 y 确认安装,其余配置按 ENTER 使用默认设置。

ocsreports 的安装现在将开始。

完成后,你的终端上会打印出类似 ' OK, Administration server installation finished ' 的信息。

至此,' Communication server '(即 OCS Inventory Server)与 ' Administration server '(即 ocsreports)的安装已完成。
至此,OCS Inventory Server 的基础安装与配置已完成,并生成了一些默认配置文件和目录。下一步,你将启用 OCS Inventory Server 和 ocsreports 所使用的额外 Apache2 配置文件。
为 OCS Inventory 服务器应用 Apache2 配置
在安装完 OCS Inventory Server 和 ocsreports 之后,你现在将应用为 OCS 安装生成的 Apache2 配置。OCS 的 'setup.sh' 脚本会将额外的 Apache2 配置生成到目录 '/etc/apache2/conf-available/ '。
现在,你将为配置文件创建指向目标目录 ' /etc/apache2/conf-enabled/ ' 的符号链接,以启用供 OCS Inventory Server 使用的 Apache2 配置。
执行以下命令以启用 OCS Inventory Server 的 Apache2 配置文件。
文件 ' ocsinventory-reports.conf ' 用于运行 ocsreports Web 应用,' z-ocsinventory-server.conf' 文件由 OCS Inventory 服务器使用,而文件 ' zz-ocsinventory-restapi.conf ' 由 OCS 服务器的 REST API 使用。
sudo ln -s /etc/apache2/conf-available/ocsinventory-reports.conf /etc/apache2/conf-enabled/ocsinventory-reports.conf
sudo ln -s /etc/apache2/conf-available/z-ocsinventory-server.conf /etc/apache2/conf-enabled/z-ocsinventory-server.conf
sudo ln -s /etc/apache2/conf-available/zz-ocsinventory-restapi.conf /etc/apache2/conf-enabled/zz-ocsinventory-restapi.conf
现在执行以下命令,确保 ' www-data ' 用户和组能够对 ocsreports 数据目录 '/var/lib/ocsinventory-reports ' 进行写入。然后,通过下面的 ' apachectl ' 命令验证 Apache2 配置。
sudo chown -R www-data:www-data /var/lib/ocsinventory-reports
sudo apachectl configtest
输出 ' Syntax OK ' 表示你拥有正确且规范的 Apache2 配置文件。

执行以下 systemctl 命令以重启 Apache2 服务并应用更改。至此,OCS Inventory Server 应当可以通过服务器 IP 地址访问了。
sudo systemctl restart apache2
安装 OCS Inventory 服务器与 OCS Reports
打开你的 Web 浏览器,访问服务器 IP 地址加上 ' ocsreports ' Web 管理控制台的路径(例如:http://192.168.5.20/ocsreports/install.php )。
输入你的 OCS Inventory Server 安装的数据库信息,然后点击 ' Send ' 确认。

安装完成后,你会看到类似这样的页面 —— 在页面底部,你会看到类似 ' Installation finished.. ' 的信息。同时你还会获得指向 ocsreports Web 管理控制台的链接。
点击该链接进入 ocsreports 登录页面。

在 OCS 登录页面,输入默认的管理员用户名和密码 ' admin '。然后点击 ' Send ' 继续。

成功后,你会进入 ocsreports 管理控制台,它是 OCS Inventory Server 的图形化管理界面。

在 ocsreports 控制台的顶部,你应该会看到 ' SECURITY ALERT '(安全警报)信息。它会提示你移除安装脚本 '/ usr/share/ocsinventory-reports/ocsreports/install.php ' 并修改默认的 admin 用户名和密码。
回到 OCS Inventory Server 的终端,运行以下命令以移除安装脚本 ' install.php '。
rm -f /usr/share/ocsinventory-reports/ocsreports/install.php
接下来,回到 ocsreports 控制台,点击右上角的设置菜单,然后选择 ' My account '(我的账户)菜单。
修改默认的 admin 用户名、邮箱和密码。然后点击 ' OK ' 确认。

在移除安装脚本 'install.php ' 并修改默认的 admin 用户名和密码之后,' SECURITY ALERT ' 信息将从 ocsreports Web 管理控制台中消失。

结语
在本指南中,你在 Ubuntu 22.04 服务器上安装并配置了 OCS Inventory Server。你已通过源代码手动安装 OCS Invebntory Server,并配置了用于运行 OCS Invebntory Server 和 ocsreports Web 应用的 LAMP 技术栈(Apache2、MariaDB 和 PHP)。
此外,你还安装了 ocsreports 作为 OCS Inventory Server 的 Web 控制台与管理面板。你已经完成了基于 LAMP 技术栈的 OCS Reports Web 应用的安装。
有了这些,你现在可以通过 OCS Agent 轻松管理你的设备,OCS Agent 可安装在 Linux 发行版、Windows、macOS 和 BSD 等多种操作系统上。你还可以通过在 Apache Web 服务器上启用安全的 HTTPS 来加固 OCS Inventory Server。欲了解更多信息,请访问 OCS Inventory Server 的官方文档。