开源资产管理系统Snipe-IT安装教程

介绍

在IT行业中,需要完整的生命周期跟踪资产的资产管理,包括采购,维护,存储和处置。Snipe-IT是专为IT资产管理而设计的免费开源应用程序,提供基于Web的界面,用于跟踪许可证,附件,耗材和组件。Snipe-IT包括具有可配置组级权限的用户帐户,可自定义的报告功能以及用于从命令行或第三方应用程序连接,管理和扩展Snipe-IT的JSON REST API。在本教程中,将教您将下载,安装和配置Snipe-IT,然后您将创建一个管理员用户帐户,以便首次登录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能力,具体如下:

  • php7.0-mbstring —— 用于处理不能用256个字符表示的语言的Multibyte String模块
  • php7.0-XML —— 用于通过文档对象模型(DOM)API处理XML文档的DOM模块,用于将XML转换为可以使用属性选择器和数组迭代器操作的对象的SimpleXML模块,用于交换数据的WDDX模块在Web分布式数据交换(WDDX)格式中,用于解析XML文档的XML Parser模块和用于执行XSLT转换的XSL模块
  • php7.0-mcrypt —— 用于处理分组密码算法的Mcrypt模块
  • php7.0-gd —— 用于图像处理的GD模块
  • php7.0-zip —— 用于操作Zip压缩档案的Zip模块
  • php7.0-curl —— 客户端URL库模块,用于通过各种协议连接到服务器并与之通信
  • php7.0-bcmath —— BCMath任意精度数学模块,用于处理任意大小和精度的数字,最大值为2147483647

现在,使用命令行mysqlroot用户身份登录MySQL 。

mysql -u root -p

在localhost上创建一个名为snipeit的新MySQL用户127.0.0.1,并为用户分配密码。

create user snipeit@127.0.0.1 identified by 'snipeit_user_password';

接下来,创建一个名为snipeitdb的数据库,其中Snipe-IT将存储其数据。

grant all on snipeitdb.* to snipeit@127.0.0.1;

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本身。

第二步 - 下载和配置Snipe-IT

根据官方安装说明,您将使用Git下载最新版本的Snipe-IT。由于Git只会克隆到现有目录中,因此使用ls查看在准备中为Snipe-IT的Nginx服务器块配置的目录的内容。

ls /var/www/example.com/html/

GitHub上的官方存储库下载Snipe-IT。

git clone https://github.com/snipe/snipe-it /var/www/example.com/html/

输出确认您正在克隆的位置,然后提供该过程的报告,包括Git复制的对象的数量。

Cloning 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文件中的其他依赖项列表,然后将其解析并安装到/var/www/example.com/html/vendor中。

--no-dev选项告诉composer忽略运行Snipe-IT不必要的依赖项,但在Snipe-IT上进行开发时非常有用。

--prefer-source选项告诉composer从版本控制存储库下载依赖项。

composer install --no-dev --prefer-source

输出报告composer尝试安装的每个依赖项,指示是否已成功克隆依赖项,并通过创建优化的自动加载文件来完成,这些文件可提高Composer支持的PHP应用程序中类加载的性能。

Loading 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

寻找以下内容:

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
...
APP_URL=null
...

APP_URL告诉Snipe-IT安装的基本URL。替换null为您的域名。

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
...
APP_URL=https://example.com
...

接下来,找到以下行:

...
# --------------------------------------------
# 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如何连接到您在第一步中创建的MySQL数据库。

由于Snipe-IT默认配置为连接到localhost上运行的MySQL数据库,因此您无需修改​​前两行。

DB_DATABASEDB_USERNAME替换为您在步骤1中创建的MySQL数据库和数据库用户的名称,并将DB_PASSWORD替换为您为该数据库用户分配的密码。

DB_PREFIX在Snipe-IT数据库中为表名添加自定义前缀。此设置不是必需的,但可能会停止一些依赖于默认数据库表名称的自动攻击。除非您要添加自定义前缀,否则请将此设置保留为默认null值。

# --------------------------------------------
# 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以确认您要执行迁移。

输出会实时报告其完成的每次迁移的名称。

**************************************
*     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文件。

**************************************
*     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。

第三步 - 配置Nginx

在您可以在Web浏览器中启动Snipe-IT之前,首先需要将Nginx指向Snipe-IT的根Web应用程序目录,并且需要将传入的请求重定向到Snipe-IT的请求处理程序。

首先打开为Snipe-IT的Nginx服务器块创建的配置文件。

sudo nano /etc/nginx/sites-available/example.com

查找设置服务器块根目录的指令。

server {
    ...
    root /var/www/example.com/html;
    ...
}

Snipe-IT的Web应用程序文件位于从GitHub克隆项目时自动创建的public目录中。修改Nginx以使用public用作此服务器块的根目录。

server {
    ...
    root /var/www/example.com/html/public;
    ...
}

接下来,找到默认位置块:

server {
    ...
    location / {
        try_files $uri $uri/ =404;
    }
    ...
}

修改此块以将所有请求传递给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设置实用程序以完成安装。

第四步 - 使用Pre-Flight Utility设置Snipe-IT

要完成安装,请用您的浏览器访问https://example.com。这将带您进入Snipe-IT的第一步,Snipe-IT将对您的安装进行快速测试,以确保所有内容都已正确配置。

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

您可以单击屏幕右下角的蓝色下一步:创建数据库表按钮以立即继续安装。

Pre-Flight的第二步中,Snipe-IT会检查您的数据库并在必要时执行迁移。由于您已经在本教程的第三步中用artisan进行了手动数据库迁移,因此Pre-Flight将告诉您数据库已经设置并且无法迁移

按屏幕右下角的蓝色下一步:创建用户按钮。

Pre-Flight的第三步中,Snipe-IT会要求您输入一些常规应用程序设置并创建您的第一个管理用户帐户。

在“站点名称”字段中,输入要在每个屏幕顶部显示Snipe-IT的标签。这可能是您公司的名称,甚至可能是更具描述性的东西,如Sammy的资产管理

在“ 电子邮件域”字段中,输入您希望Snipe-IT用于外发邮件的域,并在“电子邮件格式”字段中,选择您希望Snipe-IT在【发送到】字段中使用的格式。

名字姓氏字段中输入您的姓名,在电子邮件字段中输入您的电子邮件地址。

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

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

填写完所有信息后,单击屏幕右下角的蓝色下一步:保存用户按钮。

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

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

结论

在本文中,安装和配置了Snipe-IT,创建了管理用户帐户,并登录到主Snipe-IT仪表板。

要了解有关向Snipe-IT添加和编辑资产的信息,请参阅管理资产的官方指南。要了解如何在Snipe-IT中使用用户帐户,请参阅有关管理用户的官方文档。或者,对于其他问题,请查看官方的Snipe-IT用户手册。如果您在公网I搭建Snipe-IT,强烈建议您使用SSL证书保护你您的网站。如何设置此证书取决于你是否拥有可解析该服务器的域名。

更多Linux教程请前往腾讯云+社区学习更多知识。


参考文献:《How to Install Snipe-IT on Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏wblearn

package.json文件快速入门详解

相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必...

16010
来自专栏Python爬虫与算法进阶

强大的异步爬虫 with aiohttp

看到现在网络上大多讲的都是requests、scrapy,却没有说到爬虫中的神器:aiohttp

21720
来自专栏技术博文

H5缓存机制浅析

1 H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5 引入的离...

44980
来自专栏JavaEdge

Java开发必备linux命令集锦文件管理磁盘管理文档编辑系统管理rpm -aq|grep phpgrep someText *ifconfigenvexportechonetstat -npllso

352100
来自专栏blackheart的专栏

[OIDC in Action] 1. 基于OIDC(OpenID Connect)的SSO

在[认证授权]系列博客中,分别对OAuth2和OIDC在理论概念方面进行了解释说明,其间虽然我有写过一个完整的示例(https://github.com/lin...

428100
来自专栏运维

Nginx1.10.2稳定版本tcp四层负载安装配置过程略解

nginx1.10.2(2016.10.18)是最新稳定版,适合线上运行,最新开发版为1.11.8(2016.12.27)

15710
来自专栏linux、Python学习

Linux基础教程之linux文件权限深度解读

基本命令—— 1.cut : cat /etc/passwd | cut -d’:’ -f7| uniq -c| sort -nr

10000
来自专栏linux运维学习

linux学习第四十二篇:限定某个目录禁止解析php, 限制user_agent,PHP相关配置

限定某个目录禁止解析php 虚拟主机配置文件添加的核心配置内容: <Directory /data/wwwroot/111.com/upload> ...

26790
来自专栏Coding迪斯尼

java开发操作系统:一个程序向另一个程序伸出的咸猪手

17940
来自专栏wireboy编程加油站

用Vue.js搭建一个小说阅读网站

这是一个使用vue.js + mint-ui + .net core api的小说网站。

61900

扫码关注云+社区

领取腾讯云代金券