如何在Ubuntu16.04上安装Snipe-IT
介绍
在IT行业,资产管理是对资产全生命周期的跟踪过程,包括获取、维护、存储和处置。 尽管具体资产各不相同,但重点通常放在硬件或软件的各个部分、许可证和基于文件的资源上,例如数字艺术作品。
Snipe-IT — 专为 IT 资产管理设计的免费开源应用程序 — 提供基于 Web 的界面,用于跟踪许可证、附件、消耗品和组件。 Snipe-IT 包括基于用户的帐户,具有可配置的组级权限、可定制的报告功能以及用于从命令行或第三方应用程序连接、管理和扩展 Snipe-IT 的 JSON REST API。
在本教程中,您将下载、安装和配置 Snipe-IT,然后您将创建一个管理员用户帐户以首次登录 Snipe-IT。
先决条件
要完成本教程,您需要:
- 按照Ubuntu 16.04初始服务器设置教程设置一台Ubuntu 16.04服务器,包括sudo非root用户和防火墙。
- 按照这个LEMP安装指南配置的LEMP堆栈。
- 为您的服务器设置了以下 DNS 记录。 您可以关注 this hostname tutorial 了解如何添加它们的详细信息。 带有 example.com 的 A 记录指向您的服务器的公共 IP 地址。 www.example.com 的 A 记录指向您服务器的公共 IP 地址。
- Nginx 通过遵循 在 Ubuntu 16.04 教程 上设置 Let's Encrypt with Nginx server blocks 使用 SSL 证书进行保护。 请务必在 Nginx 设置教程的第 4 步中选择选项 2
Redirect
,因为这将在您的 Snipe-IT 安装中提供到 HTTPS 的自动重定向。
第 1 步 — 准备服务器
在下载 Snipe-IT 之前,通过安装一些额外的 PHP 库并创建 MySQL 数据库和数据库用户 Snipe-IT 将用于存储其数据来准备服务器。
Snipe-IT 建立在 Laravel PHP 框架 之上,因此需要 Composer 依赖管理器 来安装和管理额外的 PHP 库。
使用 apt-get
安装 composer
和 unzip
,这是从 Zip 档案中提取文件所需的实用程序。
sudo apt-get install composer unzip
接下来,安装 Snipe-IT 所依赖的附加 PHP 模块。
sudo apt-get install php7.0-mbstring php7.0-xml php7.0-mcrypt php7.0-gd php7.0-zip php7.0-curl php7.0-bcmath
额外的包为 PHP 提供:
- php7.0-mbstring - 多字节字符串模块,用于处理不能用 256 个字符表示的语言
- php7.0-xml - DOM 模块 用于通过 文档对象模型 (DOM) API 处理 XML 文档,SimpleXML 模块 用于将 XML 转换为可以使用属性选择器和数组迭代器操作的对象,WDDX 模块 用于以 Web 分布式数据交换 (WDDX) 格式交换数据,XML 解析器模块[X384X ] 用于解析 XML 文档,XSL 模块 用于执行 XSLT 转换
- php7.0-mcrypt - Mcrypt 模块 用于 分组密码算法
- php7.0-gd - 用于图像处理的 GD 模块
- php7.0-zip - Zip 模块 用于操作 Zip 压缩档案
- php7.0-curl - 客户端 URL 库模块 用于通过各种协议连接到服务器并与之通信
- php7.0-bcmath - BCMath 任意精度数学模块 用于处理任何大小和精度高达 2147483647 小数的数字
现在,使用命令行 mysql
实用程序以 root 数据库用户身份登录 MySQL。
mysql -u root -p
在 localhost 127.0.0.1
上创建一个名为 snipeit 的新 MySQL 用户,并为该用户分配密码。
create user snipeit@127.0.0.1 identified by 'snipeit_user_password';
接下来,创建一个名为 snipeitdb
的数据库,Snipe-IT 将在其中存储其数据。
create database snipeitdb;
将 snipeitdb
数据库中所有表的所有权限授予 snipeit 用户,以便 Snipe-IT 有权对数据库执行所需的任何操作。
grant all on snipeitdb.* to snipeit@127.0.0.1;
最后,通过使用 flush privileges
命令重新加载授权表来激活更改并退出实用程序。
flush privileges; exit;
您的服务器现在拥有 Snipe-IT 正常运行所需的额外 PHP 库和 MySQL 数据库,所以让我们下载并配置 Snipe-IT 本身。
第 2 步 — 下载和配置 Snipe-IT
根据官方安装说明,你将使用Git下载最新版本的Snipe-IT。 由于 Git 只会在现有目录为空时克隆到现有目录,因此请使用 ls
查看您在 Prerequisites 中为 Snipe-IT 的 Nginx 服务器块配置的目录的内容。
ls /var/www/example.com/html/
如果目录不为空,现在使用基本的Linux导航和文件管理命令将其清除。 mv
将内容移动到不同的位置,rm
将它们完全删除。
目录为空后,从 GitHub 上的 官方存储库下载 Snipe-IT。
git clone https://github.com/snipe/snipe-it /var/www/example.com/html/
输出确认您要克隆到的位置,然后提供该过程的实时报告,包括 Git 预期复制的对象的计数以及它实际复制的数量。
Output from git cloneCloning into '/var/www/example.com/html/'... remote: Counting objects: 70975, done. remote: Compressing objects: 100% (62/62), done. remote: Total 70975 (delta 20), reused 37 (delta 15), pack-reused 70897 Receiving objects: 100% (70975/70975), 67.04 MiB | 14.35 MiB/s, done. Resolving deltas: 100% (44264/44264), done. Checking connectivity... done.
你现在有了一个完整的 Snipe-IT 副本,但是在开始安装之前,你需要启用 Nginx 来访问 storage
、public/uploads
和 bootstrap/cache
目录,因为这样是 Snipe-IT 写入其缓存、日志和上传文件的地方。
切换到安装目录。
cd /var/www/example.com/html/
使用带有 -R
选项的 chown
以递归方式将所有三个目录上的 用户和组所有权 更改为 www-data
— Nginx 的用户和组。
sudo chown -R www-data:www-data storage sudo chown -R www-data:www-data public/uploads sudo chown -R www-data:www-data bootstrap/cache
然后,使用带有 -R
标志的 chmod
以递归方式 设置这些目录的权限 ,使其所有者可以读取、写入和执行,读取和执行由他们的组,并由世界读取和执行。
sudo chmod -R 755 storage sudo chmod -R 755 public/uploads sudo chmod -R 755 bootstrap/cache
为 Nginx 正确设置文件和目录权限后,您就可以运行 composer install
,它会读取 Snipe-IT 的 composer.json
文件中的附加依赖项列表,然后解析并将它们安装到 [ X214X]。
--no-dev
选项告诉 composer
忽略运行 Snipe-IT 不需要但在 Snipe-IT 上进行开发时有用的依赖项。
--prefer-source
选项告诉 composer
从其版本控制存储库中下载依赖项(如果存在)。
composer install --no-dev --prefer-source
输出报告 composer
尝试安装的每个依赖项,指示依赖项是否已成功克隆,并通过创建优化的自动加载文件来完成,这提高了 Composer 支持的 PHP 应用程序中 类加载的性能 .
Output from composer install --no-dev --prefer-sourceLoading composer repositories with package information Installing dependencies from lock file - Installing symfony/finder (v3.3.10) Cloning 773e19a491d97926f236942484cb541560ce862d ... Generating optimized autoload files
您现在可以开始配置您的安装。 首先复制 Snipe-IT 附带的 .env.example
文件; 这是 Snipe-IT 存储环境变量和设置(如时区、基本 URL 和日志大小)的地方。 然后,打开.env
进行编辑。
cp .env.example .env nano .env
查找以下内容:
.env
# -------------------------------------------- # REQUIRED: BASIC APP SETTINGS # -------------------------------------------- ... APP_URL=null ...
APP_URL
告诉 Snipe-IT 安装的基本 URL。 将 null
替换为您的域名。
.env
# -------------------------------------------- # REQUIRED: BASIC APP SETTINGS # -------------------------------------------- ... APP_URL=https://example.com ...
接下来,找到以下几行:
.env
... # -------------------------------------------- # REQUIRED: DATABASE SETTINGS # -------------------------------------------- DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_DATABASE=null DB_USERNAME=null DB_PASSWORD=null DB_PREFIX=null DB_DUMP_PATH='/usr/bin' DB_CHARSET=utf8mb4 DB_COLLATION=utf8mb4_unicode_ci ...
这是您告诉 Snipe-IT 如何连接到您在 步骤 1 中创建的 MySQL 数据库的地方。
因为 Snipe-IT 默认配置为连接到在 localhost 上运行的 MySQL 数据库,所以您不需要修改前两行。
将 DB_DATABASE
和 DB_USERNAME
替换为您在 Step 1 中创建的 MySQL 数据库和数据库用户的名称,并将 DB_PASSWORD
替换为您分配的密码数据库用户。
DB_PREFIX
为 Snipe-IT 数据库中的表名添加自定义前缀。 此设置不是必需的,但可能会阻止一些依赖默认数据库表名称的自动攻击。 将此设置保留为默认的 null
值,除非您要添加自定义前缀。
.env
# -------------------------------------------- # REQUIRED: DATABASE SETTINGS # -------------------------------------------- DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_DATABASE=snipeitdb DB_USERNAME=snipeit DB_PASSWORD=snipeit_user_password DB_PREFIX=null
关闭并保存文件。
现在,使用 artisan migrate
用 Snipe-IT 的默认数据库模式填充 MySQL。 该命令将告诉 Laravel 使用 /var/www/example.com/html/database/migrations/
中的文件执行 数据库迁移。
sudo php artisan migrate
出现提示时,输入 yes
以确认您要执行迁移。
输出报告实时完成的每个迁移的名称。
Output from php artisan migrate************************************** * Application In Production! * ************************************** Do you really wish to run this command? (yes/no) [no]: > yes Migration table created successfully. ... Migrated: 2017_11_08_123942_labels_display_company_name
最后,使用 artisan key:generate
为您的安装创建一个应用程序密钥。 Laravel 会将密钥的值写入 .env
文件中的 APP_KEY
行,Snipe-IT 将在加密和解密会话令牌等数据时使用该密钥。
php artisan key:generate
再次出现提示时,输入 yes
以确认您要生成应用程序密钥。
完成后,输出将显示生成的密钥并告诉您该值已写入 .env
文件。
Output from php artisan key:generate************************************** * Application In Production! * ************************************** Do you really wish to run this command? (yes/no) [no]: > yes Application key [base64:rxP+jS3Q8qtM9eBktXtS/zqrrXVY1LEMxoZkbV35Al0=] set successfully.
安装和配置完成后,是时候修改 Nginx 以服务于 Snipe-IT。
第 3 步 — 配置 Nginx
在您可以在您的网络浏览器中启动 Snipe-IT 之前,您首先需要将 Nginx 指向 Snipe-IT 的根网络应用程序目录,并且您需要将传入的请求重定向到 Snipe-IT 的请求处理程序。
首先打开您为 Snipe-IT 的 Nginx 服务器块创建的配置文件。
sudo nano /etc/nginx/sites-available/example.com
查找设置服务器块根目录的指令。
/etc/nginx/sites-available/example.com
server { ... root /var/www/example.com/html; ... }
Snipe-IT 的 Web 应用程序文件位于 public
目录中,该目录是您从 GitHub 克隆项目时自动创建的。 修改 Nginx 以使用 public
作为此服务器块的根目录。
/etc/nginx/sites-available/example.com
server { ... root /var/www/example.com/html/public; ... }
接下来,找到默认位置块:
/etc/nginx/sites-enabled/snipe-it
server { ... location / { try_files $uri $uri/ =404; } ... }
修改此块以将所有请求传递给 Snipe-IT 的请求处理程序进行处理。
/etc/nginx/sites-enabled/snipe-it
server { ... location / { try_files $uri $uri/ /index.php$is_args$args; } ... }
保存并关闭文件。
在重启 Nginx 之前,测试你的新配置。
sudo nginx -t
输出应报告您的 syntax is ok
。 如果没有,请按照屏幕上的消息获取更多帮助。
现在,重新启动 Nginx 以应用更改。
sudo systemctl reload nginx
最后,验证 Nginx 是否已备份并运行。
sudo systemctl status nginx
输出应指示服务为 active (running)
。 如果没有,请在继续之前回溯之前的步骤以解决问题
现在 Nginx 已完全配置,登录到 Snipe-IT 的 Web 设置实用程序以完成安装。
第 4 步 — 使用 Pre-Flight 实用程序设置 Snipe-IT
要完成安装,请将您的网络浏览器指向 https://example.com
。 这将带您进入 Snipe-IT 的 Pre-Flight Utility 的 Step 1,其中 Snipe-IT 将对您的安装进行快速测试,以确保一切都正确配置。
在此屏幕上,您将看到一个表格,其中显示了 Pre-Flight 测试的每个设置、设置的测试结果以及描述设置的简短说明。 Valid 列中的绿色复选标记表示设置正确。 如果任何设置在 Valid 列中以粉红色突出显示并用红色 X 标记,则表明该设置存在问题。 在继续之前,请按照 Snipe-IT 的说明解决问题。
由于我们还没有为电子邮件配置 Snipe-IT,您现在可以单击屏幕右下角蓝色的 Next: Create Database Tables 按钮继续安装。
在 Pre-Flight 的 Step 2 中,Snipe-IT 检查您的数据库并在必要时执行迁移。 由于您已经在 本教程的第 3 步 中使用 artisan
进行了手动数据库迁移,因此 Pre-Flight 会告诉您数据库 已经设置好 并且没有 没有可迁移的内容 。
按屏幕右下角的蓝色 Next: Create User 按钮。
在 Pre-Flight 的 Step 3 中,Snipe-IT 要求您输入一些通用应用程序设置并创建您的第一个管理用户帐户。
在 Site Name 字段中,输入您希望 Snipe-IT 在每个屏幕顶部显示的标签。 这可能是您公司的名称,也可能是更具描述性的名称,例如 Sammy's Asset Management。
在 Email Domain 字段中,输入您希望 Snipe-IT 用于发送邮件的域,然后在 Email Format 字段中,选择您希望 Snipe-IT 格式化的方式To: 外发邮件的标头。
在 First Name 和 Last Name 字段中输入您的姓名,在 Email 字段中输入您的电子邮件地址。
最后,在 Username 字段中输入您希望与您的帐户关联的用户名,并在 Password 字段中输入您希望使用的密码。 请务必在 确认密码 字段中输入相同的密码,并在继续之前记下您的凭据。 您将需要他们都登录到 Snipe-IT。
因为您是为自己创建此帐户,所以您可以不选中 将我的凭据发送到上面的电子邮件地址 。
填写完所有信息后,单击屏幕右下角的蓝色 Next: Save User 按钮。
在 Pre-Flight 的 Step 4 中,Snipe-IT 保存您刚刚输入的常规应用程序设置,创建新的管理用户,并将您登录到主仪表板。
至此,您的安装已完成,您可以开始使用 Snipe-IT 来管理您或您客户的 IT 资产。
结论
在本文中,您设置了 LEMP 堆栈,使用 Let's Encrypt TLS/SSL 证书保护 Nginx,安装和配置了 Snipe-IT,创建了一个管理用户帐户,并登录到主 Snipe-IT 仪表板。
要了解如何向 Snipe-IT 添加和编辑资产,请参阅 管理资产的官方指南 。
要了解如何在 Snipe-IT 中使用用户帐户,请参阅 管理用户的官方文档 。
或者,对于其他问题,请查看官方Snipe-IT用户手册。