[TOC]
0x00 前言简介
描述:最近接手了公司的固定资产的管理工作,一看到用Excl记录的固定资产信息我就产生了一种想法,手工(上/下帐)管理太麻烦了于是找一款开源的固定资产管理进行管理。
0x01 Snipe-IT
1.简单介绍
Snipe-it是一款开源的资产管理系统,采用Laravel的PHP框架进行编写。在实际工作中,完全替代EXECL表格的资产管理。支持多语言,方便公司全球化扩张。
官网:https://snipeitapp.com/
安装文档:https://snipe-it.readme.io
2.搭建流程
环境构建:
- CentOS7
- Snipe-Mysql
- Snipe-IT
安装版本系统信息1
2
3
4Snipe-IT version v4.7.8 build 4170 (g4fe689dc5)
软件许可证 AGPL3
PHP版本 7.1.33-1+ubuntu16.04.1+deb.sury.org+1
Laravel版本 5.5.47
下面我们采用最简单的Docker部署的方式进行安装:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67#1.宿主机上面建立相应的持久化目录
sudo mkdir -p /app/Snipe-mysql /app/Snipe-conf
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
yum install docker-ce docker-compose -y
#2.生成APP_KEY并利用其来修改yml配置文件
php artisan key:generate
# Please re-run this container with an environment variable $APP_KEY
# An example APP_KEY you could use is:
# base64:D5oGA+zhFSVA3VwuoZoQ21RAcwBtJv/RGiqOcZ7BUvI=
#3.修改env环境变量
#参考;https://snipe-it.readme.io/docs/configuration
#参考: https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=87421#
# Mysql Parameters
MYSQL_ROOT_PASSWORD=#SnipeIT#Root
MYSQL_DATABASE=snipeit
MYSQL_USER=snipeit
MYSQL_PASSWORD=#SnipeIT#SnipeIT
# Email Parameters
# - the hostname/IP address of your mailserver
# MAIL_PORT_587_TCP_ADDR=smtp.whatever.com
# #the port for the mailserver (probably 587, could be another)
# MAIL_PORT_587_TCP_PORT=587
# # the default from address, and from name for emails
# MAIL_ENV_FROM_ADDR=youremail@yourdomain.com
# MAIL_ENV_FROM_NAME=Your Full Email Name
# # - pick 'tls' for SMTP-over-SSL, 'tcp' for unencrypted
# MAIL_ENV_ENCRYPTION=tcp
# # SMTP username and password
# MAIL_ENV_USERNAME=your_email_username
# MAIL_ENV_PASSWORD=your_email_password
# Snipe-IT Settings
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:5U/KPKw1GN/Rz0fWYO/4FsSOqjmjvDAQzMCqwcAqstc=
#注意构建时候修改成为外网地址
APP_URL=http://127.0.0.1:80
APP_TIMEZONE=Asia/Shanghai
APP_LOCALE=zh-CN
# user
PUID=1000
PGID=1000
# SNIPEIT CONNECT MYSQL (这里直接可以实用docker-compose.yml)
DB_HOST=db
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=#SnipeIT#SnipeIT
DB_DUMP_PATH='/usr/bin'
# OPTIONAL: LOGIN THROTTLING
LOGIN_MAX_ATTEMPTS=5
LOGIN_LOCKOUT_DURATION=60
1 | #3.编写Docker-compose.yml进行一键部署 |

WeiyiGeek.
1 | #5.运行并且构建环境(这里我们不后台运行) |

WeiyiGeek.
- 打开浏览器访问设置好的站点
http://10.10.10.10:8082/setup
并且检测相关条件是否符合(Create Database Tables)WeiyiGeek.Snipe-IT Pre-Flight Setup
5.基础使用
(1) 二维码显示设置 WeiyiGeek.
点击设置 -> Barcodes(Barcode & QR settings) -> 显示二维码
(2)LDAP同步设置 WeiyiGeek.1
2
3
4
5
6#LDAP过滤器完整格式
&(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2))
#然后设置定时任务
vim /etc/crontab
0 */3 * * * /usr/local/php/bin/php /data/http/html/snipeit/artisan snipeit:ldap-sync >> /dev/null 2>&1 //每三个小时执行一次
(3)数据库备份1
2
3
4
5
6
7root@44dc40312522:/var/www/html/storage/app# chown -R docker:root /var/www/html/storage/app/
total 4.0K
drwxr-xr-x 1 docker root 39 Nov 9 01:15 .
drwxr-xr-x 1 docker root 46 Nov 9 01:15 ..
-rwxr-xr-x 1 docker root 23 Nov 9 01:04 .gitignore
lrwxrwxrwx 1 docker root 22 Nov 9 01:15 backups -> /var/lib/snipeit/dumps
root@44dc40312522:/var/www/html/storage/app# chown -R docker:root /var/lib/snipeit/dumps/
4.进阶配置
OpenLDAP登录Snipe-IT配置
环境说明:1
2
3Snipe-IT version v4.9.0 build 4210 (g8b2f8ef3c)
PHP版本 7.1.33-12+ubuntu16.04.1+deb.sury.org+1
Laravel版本 5.5.48
Setting -> LDAP/Active Directory 配置如下,官网ldap-sync-login配置参考:https://snipe-it.readme.io/docs/ldap-sync-login
1
2
3
4
5
6
7
8
9
10
11
12
13LDAP集成: 启用LDAP验证
LDAP密码同步: 可选
LDAP 服务器: ldap://127.0.0.1
LDAP 用户名: cn=weiyi,geek,dc=com,dc=cn
LDAP 密码: password
Base Bind DN: ou=People,dc=geek,dc=com,dc=cn
LDAP 过滤器: &(objectclass=inetOrgPerson)(memberof=cn=snipeit,ou=Group,dc=geek,dc=com,dc=cn) #此处采用GroupOfUniqueNames用户组属性(过滤是唯一)
用户名字段: uid
姓氏: sn
LDAP用户名字字段:cn
LDAP认证请求:uid= #注意openladp默认是cn 您需要进行设置RDN
LDAP 版本: 3
LDAP Email: mail
openldap服务创建配置如下:

WeiyiGeek.
补充由于版本适用于AD的LDAP,此时需要对ldap.php文件进行修改1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#Index: app/Models/Ldap.php
@@ -98,8 +98,10 @@
if (!$ldapbind = @ldap_bind($connection, $userDn, $password)) {
return false;
} else {
if(!$ldapbind = Ldap::bindAdminToLdap($connection)){
return false;
}
}
@@ -148,7 +150,7 @@
if (!$ldapbind = @ldap_bind($connection, $ldap_username, $ldap_pass)) {
throw new Exception('Could not bind to LDAP: '.ldap_error($connection));
}
return $ldapbind;
}
然后重启snipeit容器测试LDAP登录连接:

WeiyiGeek.
1 | #开启同步密码(可以手动或者自动) |

WeiyiGeek.LDAP登录
补充知识:
(1) Windows AD 域 LDAP过滤器完整格式
&(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2))
(2) SnipeIT 定时同步
0 */3 * * * /usr/local/php/bin/php /data/http/html/snipeit/artisan snipeit:ldap-sync >> /dev/null 2>&1 //每三个小时执行一次

WeiyiGeek.AD-LDAP
- (3) Snipe-IT BackUP 可以在页面上进行备份也可以采用命令行工具进行备份,实际上是创建数据库的SQL转储以及任何图像以及文件附件;
1
php artisan snipeit:backup
5.后续升级
常规安装升级
注意:升级之前请备份数据库及程序(即snipe-it目录),因在国内Github被qiang,所以无法通过GIT自动升级,所以只能自己手动升级了。
1.备份程序目录1
mv /data/http/html/snipe-it/ /data/http/html/snipe-it_bakxxxxxxxx/#此处因后面需要重新解压程序目录,所以在此处直接重命名
2.解压新版本到/data/http/html/snipe-it目录1
2
3tar -zxvf snipe-it-4.5.0.tar.gz -C /data/http/html/
cd /data/http/html/
mv snipe-it-4.5.0/ snipe-it
3.拷贝旧程序的配置文件至新目录并授权1
2
3
4
5
6
7
8
9#如提示是否要覆盖.gitignore或者.gitkeep,请输入no。
cp -R snipe-it-backup/public/uploads/* snipe-it/public/uploads
cp -R snipe-it-backup/storage/private_uploads/* snipe-it/storage/private_uploads
cp -R snipe-it-backup/storage/app/backups/* snipe-it/storage/app/backups
cp -R snipe-it-backup/.env snipe-it/
cp -R snipe-it-backup/storage/oauth-private.key snipe-it/storage/oauth-private.key
cp -R snipe-it-backup/storage/oauth-public.key snipe-it/storage/oauth-public.key
chown -R apache:apaches snipe-it/
chmod -R 775 snipe-it/
4.重新执行Composer安装1
2
3
4
5
6cd snipe-it/
curl -sS https://getcomposer.org/installer | php
php composer.phar install --prefer-source
php composer.phar dump-autoloa
php artisan migrate
#如提示Do you really wish to run this command? (yes/no),请输入yes
5.清除缓存1
2php artisan config:clear
php artisan config:cache
到此升级完成,请访问你的网页查看页面及数据是否正常。
Docker安装升级
注意点:https://snipe-it.readme.io/docs/docker
数据库迁移:1
2
3CREATE DATABASE snipeit;
CREATE USER 'snipeit'@'%' IDENDIFIED BY '123456';
GRANT all ON snipeit.* TO 'snipeit'@'%' WITH GRANT OPTION; # GRANT OPTION 则是管理员权限;
0x02 CLPI
安装流程
CMDB系统: abbr. 配置管理数据库(Configuration Management Database)
官网地址: https://glpi-project.org/
1 | git clone https://github.com/luckman666/deploy_glpi.git |
访问进行:http://10.10.10.10:8081/install/install.php 进行安装CLPI流程

WeiyiGeek.

WeiyiGeek.
数据库设置(注意这里采用低权限的用户): WeiyiGeek.
直接下一步,直到显示 缺省 登录名/密码是: WeiyiGeek.1
2
3
4管理员帐号是 glpi/glpi
技术员帐号是 tech/tech
普通帐号是 normal/normal
只能发布的帐号是 post-only/postonly
注意事项:
- 为了安全,请更改默认用户glpi post-only tech normal 的密码
- 为了安全,请删除文件:
install/install.php