介绍
在信息技术行业, 资产管理是在整个生命周期中追踪资产的过程,包括采购,维护,存储和处置。 尽管具体的资产有所不同,但重点通常集中在硬件或软件,许可证以及数字艺术作品等基于文件的资源上。
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记录。 你可以按照这个主机名教程了解如何添加它们的细节。
-
example.com
指向您服务器的公有IP地址的记录。 - 与
www. example.com
的一条记录www. example.com
www. example.com
指向您的服务器的公共IP地址。
-
- Nginx通过遵循这个设置使用SSL证书进行保护让我们使用Ubuntu 16.04教程中的Nginx服务器模块进行加密 。 请务必在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) API处理XML文档的DOM 模块,用于将XML转换为可以使用属性选择器和数组迭代器处理的对象的SimpleXML模块 ,用于交换数据的WDDX模块以Web分布式数据交换(WDDX)格式,用于解析XML文档的XML解析器模块和用于执行XSLT转换的XSL模块
- 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
在本地主机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
来查看在先决条件中为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
文件中的其他依赖项列表,然后将其解析并安装到/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应用程序中的类加载性能。
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
寻找以下内容:
# --------------------------------------------
# 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如何连接到您在第1步中创建的MySQL数据库的地方。
由于Snipe-IT默认配置为连接到本地主机上运行的MySQL数据库,所以不需要修改前两行。
将DB_DATABASE
和DB_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
确认您要执行迁移。
输出报告实时完成的每个迁移的名称。
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的根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的网页设置工具来完成安装。
第4步 - 使用Pre-Flight Utility设置Snipe-IT
要完成安装,请将您的Web浏览器指向https:// example.com
。 这将带您进入Snipe-IT的飞行前实用程序的 第1步 ,Snipe-IT将对您的安装进行快速测试,确保一切正确配置。
在这个屏幕上,您会看到一个表格,向您显示每项设置,包括Pre-Flight测试,设置的测试结果以及描述设置的简短说明。 有效栏中的绿色复选标记表示设置是正确的。 如果任何设置以粉红色突出显示,并在“ 有效”列中标有红色X ,则表示该设置存在问题。 按照Snipe-IT的说明解决问题,然后再继续。
由于我们尚未配置Snipe-IT进行电子邮件,因此您可以单击屏幕右下角的蓝色下一步:创建数据库表按钮,以立即继续安装。
在Pre-Flight的 第2步中,Snipe-IT将检查您的数据库并在必要时执行迁移。 由于您已经在本教程的第3步中使用了artisan
进行了手动数据库迁移,因此Pre-Flight会告诉您数据库已经设置完毕,并且没有什么可以迁移 。
按屏幕右下角的蓝色下一步:创建用户按钮。
在Pre-Flight的 第3步中,Snipe-IT要求您输入一些常规应用程序设置并创建您的第一个管理用户帐户。
在“ 站点名称”字段中,输入您希望Snipe-IT在每个屏幕顶部显示的标签。 这可能是您公司的名字,或者甚至可能是像Sammy的资产管理那样更具描述性的东西。
在“ 电子邮件域”字段中,输入您希望Snipe-IT用于发送邮件的域,然后在“ 电子邮件格式”字段中选择您希望Snipe-IT格式化传出邮件中的“ 收件人:”标题的方式。
在名字和姓氏字段中输入您的姓名,并在电子邮件字段中输入您的电子邮件地址。
最后,在“ 用户名”字段中输入您希望与帐户关联的用户名 ,然后在“ 密码”字段中输入您要使用的密码 。 请确保在确认密码字段中输入相同的密码,并在继续之前记下您的凭证。 你需要他们都登录到Snipe-IT。
由于您正在为自己创建此帐户,因此可以将我的凭据通过电子邮件发送到上面的电子邮件地址 。
填完所有信息后,点击屏幕右下角的蓝色下一步:保存用户按钮。
在Pre-Flight的 第4步中,Snipe-IT保存您刚输入的常规应用程序设置,创建新的管理用户,并将您登录到主仪表板。
此时,您的安装已经完成,您可以开始使用Snipe-IT来管理您或您的客户的IT资产。
结论
在本文中,您设置了LEMP,使用Let's Encrypt TLS / SSL证书保护Nginx,安装并配置了Snipe-IT,创建了管理用户帐户,并登录到主要的Snipe-IT仪表板。
要了解有关向Snipe-IT添加和编辑资产的信息,请参阅管理资产的官方指南 。
要了解有关在Snipe-IT中使用用户帐户的信息,请参阅管理用户的官方文档 。
或者,对于其他问题,请查看官方的Snipe-IT用户手册 。