如何在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 安装 composerunzip,这是从 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 提供:

现在,使用命令行 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 来访问 storagepublic/uploadsbootstrap/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_DATABASEDB_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 UtilityStep 1,其中 Snipe-IT 将对您的安装进行快速测试,以确保一切都正确配置。

在此屏幕上,您将看到一个表格,其中显示了 Pre-Flight 测试的每个设置、设置的测试结果以及描述设置的简短说明。 Valid 列中的绿色复选标记表示设置正确。 如果任何设置在 Valid 列中以粉红色突出显示并用红色 X 标记,则表明该设置存在问题。 在继续之前,请按照 Snipe-IT 的说明解决问题。

由于我们还没有为电子邮件配置 Snipe-IT,您现在可以单击屏幕右下角蓝色的 Next: Create Database Tables 按钮继续安装。

Pre-FlightStep 2 中,Snipe-IT 检查您的数据库并在必要时执行迁移。 由于您已经在 本教程的第 3 步 中使用 artisan 进行了手动数据库迁移,因此 Pre-Flight 会告诉您数据库 已经设置好 并且没有 没有可迁移的内容

按屏幕右下角的蓝色 Next: Create User 按钮。

Pre-FlightStep 3 中,Snipe-IT 要求您输入一些通用应用程序设置并创建您的第一个管理用户帐户。

Site Name 字段中,输入您希望 Snipe-IT 在每个屏幕顶部显示的标签。 这可能是您公司的名称,也可能是更具描述性的名称,例如 Sammy's Asset Management

Email Domain 字段中,输入您希望 Snipe-IT 用于发送邮件的域,然后在 Email Format 字段中,选择您希望 Snipe-IT 格式化的方式To: 外发邮件的标头。

First NameLast Name 字段中输入您的姓名,在 Email 字段中输入您的电子邮件地址。

最后,在 Username 字段中输入您希望与您的帐户关联的用户名,并在 Password 字段中输入您希望使用的密码。 请务必在 确认密码 字段中输入相同的密码,并在继续之前记下您的凭据。 您将需要他们都登录到 Snipe-IT。

因为您是为自己创建此帐户,所以您可以不选中 将我的凭据发送到上面的电子邮件地址

填写完所有信息后,单击屏幕右下角的蓝色 Next: Save User 按钮。

Pre-FlightStep 4 中,Snipe-IT 保存您刚刚输入的常规应用程序设置,创建新的管理用户,并将您登录到主仪表板。

至此,您的安装已完成,您可以开始使用 Snipe-IT 来管理您或您客户的 IT 资产。

结论

在本文中,您设置了 LEMP 堆栈,使用 Let's Encrypt TLS/SSL 证书保护 Nginx,安装和配置了 Snipe-IT,创建了一个管理用户帐户,并登录到主 Snipe-IT 仪表板。

要了解如何向 Snipe-IT 添加和编辑资产,请参阅 管理资产的官方指南

要了解如何在 Snipe-IT 中使用用户帐户,请参阅 管理用户的官方文档

或者,对于其他问题,请查看官方Snipe-IT用户手册