惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
Recent Commits to openclaw:main
Recent Commits to openclaw:main
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
罗磊的独立博客
V
Visual Studio Blog
爱范儿
爱范儿
H
Help Net Security
J
Java Code Geeks
I
InfoQ
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
GbyAI
GbyAI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
Scott Helme
Scott Helme
S
SegmentFault 最新的问题
S
Securelist
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
C
Cisco Blogs
Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
博客园_首页
B
Blog
F
Fortinet All Blogs
AWS News Blog
AWS News Blog
V
Vulnerabilities – Threatpost
S
Secure Thoughts
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Forbes - Security
Forbes - Security
S
Security @ Cisco Blogs
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Schneier on Security
Project Zero
Project Zero
Martin Fowler
Martin Fowler
C
Cybersecurity and Infrastructure Security Agency CISA
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
Snipe it资产管理系统安装使用
2023-03-15 · via mephisto.cc

最近公司需要一个IT资产管理系统,在三个开源的系统(snipe it、glpi、ralph)中选择了Snipe it,ralph偏向机房管理,glpi看起来也行,但是暂时不需要那么多额外的功能,后续可能会试用下。

系统长这样:

snipe demo

1. 本地docker安装测试

为了快速体验,搭建测试环境还是docker方便点(不怕麻烦,主机命令行安装也可以的)

  • 1.1 下载镜像
1docker pull snipe/snipe-it
  • 1.2 找个目录,创建环境变量文件

公司可以申请测试mysql,就没有使用容器化的mysql(需要使用容器化的mysql,请参考Snipe docker)

示例如下:

 1➜  cat my_env_file
 2# Mysql Parameters
 3MYSQL_PORT_3306_TCP_ADDR=127.0.0.1  #数据库的host
 4MYSQL_PORT_3306_TCP_PORT=3306       #数据库的port
 5
 6MYSQL_DATABASE=xxxx                 #数据库名
 7MYSQL_USER=xxxx                     #数据库用户名
 8MYSQL_PASSWORD=xxxx                 #数据库密码
 9
10# 邮箱设置,暂时注释忽略
11# Email Parameters
12# - the hostname/IP address of your mailserver
13#MAIL_PORT_587_TCP_ADDR=smtp.whatever.com
14#the port for the mailserver (probably 587, could be another)
15#MAIL_PORT_587_TCP_PORT=587
16# the default from address, and from name for emails
17#MAIL_ENV_FROM_ADDR=youremail@yourdomain.com
18#MAIL_ENV_FROM_NAME=Your Full Email Name
19# - pick 'tls' for SMTP-over-SSL, 'tcp' for unencrypted
20#MAIL_ENV_ENCRYPTION=tcp
21# SMTP username and password
22#MAIL_ENV_USERNAME=your_email_username
23#MAIL_ENV_PASSWORD=your_email_password
24
25# Snipe-IT Settings
26APP_ENV=production
27APP_DEBUG=false
28APP_KEY=<<Fill in Later!>>     #这里是后续不走生成的,不慌,先不填
29APP_URL=http://192.169.1.33    #系统访问地址,ip或者域名,测试填本机ip,方便测试
30APP_TIMEZONE=Asia/Shanghai     #时区,后续都可以调整的
31APP_LOCALE=en                  #语言,后续也可以调整
32
33# Docker-specific variables
34PHP_UPLOAD_LIMIT=100           #上传文件大小限制
  • 1.3 生成APP_KEY
1docker run --rm snipe/snipe-it

运行上面的命令后会输出:

1Please re-run this container with an environment variable $APP_KEY
2An example APP_KEY you could use is: 
3base64:D5oGA+zhFSVA3VwuoZoQ21RAcwBtJv/RGiqOcZ7BUvI=

base64:D5oGA+zhFSVA3VwuoZoQ21RAcwBtJv/RGiqOcZ7BUvI= 这一串就是要填入环境变量APP_KEY的值,每个人在自己的环境生成的不一样的,格式一样就行。

  • 1.4 运行启动(注意要先填上上一步的APP_KEY值,保存后再启动)
1➜ docker run -p 80:80 --env-file=my_env_file  snipe/snipe-it
2➜ docker ps
3CONTAINER ID   IMAGE            COMMAND         CREATED       STATUS       PORTS                                        NAMES
455b39ab3e1ac   snipe/snipe-it   "/startup.sh"   8 hours ago   Up 8 hours   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   jovial_carver

上面可以看出已经运行正常,服务端口为80

  • 1.5 浏览器访问APP_URL的地址(上一步环境变量中设置的:http://192.169.1.33),进行系统初始化设置

这一步比较简单,网页上面会显示步骤条,跟着一路按需操作就可以了,这里不赘述,参考官方文档

完成后,测试环境搭建完毕,登入系统,尽情傲游即可!

2. 生产环境主机部署

生产环境为什么又变成主机部署不用docker了呢?因为Snipe it会允许用户上传图片、文件什么的,这是存在本地的,其实Snipe it提供存储到 Amazon S3等服务的选项(官方文档),但是我们公司私有云没有这种东西,容器部署的方案就不合适了,主机部署定时备份也还行。

下面主要介绍 php + php-fpm + nginx 部署方式:

  • 2.1 下载代码

登录到你的生产主机后,下载Snipe it的代码

1git clone https://github.com/snipe/snipe-it 
  • 2.2 运行安装脚本

源码仓库里面自带装脚本,下载下来后直接执行。该自动化脚本会根据系统类型安装 mariadb、apache2、php等,具体可查搜索查看PACKAGES关键字,为了方便,主要是让它安装php和对应的插件,等安装完成后,不需要mariadb、apache2的可以自行选择禁用或者删除,本教程会选用 nginx + php-fpm

1cd snipe-it
2wget https://raw.githubusercontent.com/snipe/snipe-it/master/install.sh
3chmod 744 install.sh
4./install.sh
  • 2.3 安装php-fpm、nginx 安装之前记得先禁用httpd(即apache2),不然nginx无法启动,端口被占用冲突。
1systemctl disable httpd
2systemctl stop httpd
3yum install php-fpm nginx
  • 2.4 准备环境变量文件

按照需要更改.env里面的配置信息,参考测试环境的配置

官方模版

  1# --------------------------------------------
  2# REQUIRED: BASIC APP SETTINGS
  3# --------------------------------------------
  4APP_ENV=production
  5APP_DEBUG=false
  6APP_KEY=ChangeMe
  7APP_URL=null
  8APP_TIMEZONE='UTC'
  9APP_LOCALE=en
 10MAX_RESULTS=500
 11
 12# --------------------------------------------
 13# REQUIRED: UPLOADED FILE STORAGE SETTINGS
 14# --------------------------------------------
 15PRIVATE_FILESYSTEM_DISK=local
 16PUBLIC_FILESYSTEM_DISK=local_public
 17
 18#PRIVATE_FILESYSTEM_DISK=s3_private
 19#PUBLIC_FILESYSTEM_DISK=s3_public
 20
 21
 22# --------------------------------------------
 23# REQUIRED: DATABASE SETTINGS
 24# --------------------------------------------
 25DB_CONNECTION=mysql
 26DB_HOST=127.0.0.1
 27DB_DATABASE=null
 28DB_USERNAME=null
 29DB_PASSWORD=null
 30DB_PREFIX=null
 31DB_DUMP_PATH='/usr/bin'
 32DB_CHARSET=utf8mb4
 33DB_COLLATION=utf8mb4_unicode_ci
 34
 35# --------------------------------------------
 36# OPTIONAL: SSL DATABASE SETTINGS
 37# --------------------------------------------
 38DB_SSL=false
 39DB_SSL_IS_PAAS=false
 40DB_SSL_KEY_PATH=null
 41DB_SSL_CERT_PATH=null
 42DB_SSL_CA_PATH=null
 43DB_SSL_CIPHER=null
 44
 45# --------------------------------------------
 46# REQUIRED: OUTGOING MAIL SERVER SETTINGS
 47# --------------------------------------------
 48MAIL_DRIVER=smtp
 49MAIL_HOST=email-smtp.us-west-2.amazonaws.com
 50MAIL_PORT=587
 51MAIL_USERNAME=YOURUSERNAME
 52MAIL_PASSWORD=YOURPASSWORD
 53MAIL_ENCRYPTION=null
 54MAIL_FROM_ADDR=you@example.com
 55MAIL_FROM_NAME='Snipe-IT'
 56MAIL_REPLYTO_ADDR=you@example.com
 57MAIL_REPLYTO_NAME='Snipe-IT'
 58MAIL_AUTO_EMBED_METHOD='attachment'
 59
 60# --------------------------------------------
 61# REQUIRED: IMAGE LIBRARY
 62# This should be gd or imagick
 63# --------------------------------------------
 64IMAGE_LIB=gd
 65
 66
 67# --------------------------------------------
 68# OPTIONAL: BACKUP SETTINGS
 69# --------------------------------------------
 70MAIL_BACKUP_NOTIFICATION_DRIVER=null
 71MAIL_BACKUP_NOTIFICATION_ADDRESS=null
 72BACKUP_ENV=true
 73ALLOW_BACKUP_DELETE=false
 74ALLOW_DATA_PURGE=false
 75
 76# --------------------------------------------
 77# OPTIONAL: SESSION SETTINGS
 78# --------------------------------------------
 79SESSION_DRIVER=file
 80SESSION_LIFETIME=12000
 81EXPIRE_ON_CLOSE=false
 82ENCRYPT=false
 83COOKIE_NAME=snipeit_session
 84COOKIE_DOMAIN=null
 85SECURE_COOKIES=false
 86API_TOKEN_EXPIRATION_YEARS=15
 87
 88# --------------------------------------------
 89# OPTIONAL: SECURITY HEADER SETTINGS
 90# --------------------------------------------
 91APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1
 92ALLOW_IFRAMING=false
 93REFERRER_POLICY=same-origin
 94ENABLE_CSP=false
 95CORS_ALLOWED_ORIGINS=null
 96ENABLE_HSTS=false
 97
 98# --------------------------------------------
 99# OPTIONAL: CACHE SETTINGS
100# --------------------------------------------
101CACHE_DRIVER=file
102QUEUE_DRIVER=sync
103CACHE_PREFIX=snipeit
104
105# --------------------------------------------
106# OPTIONAL: REDIS SETTINGS
107# --------------------------------------------
108REDIS_HOST=null
109REDIS_PASSWORD=null
110REDIS_PORT=null
111
112# --------------------------------------------
113# OPTIONAL: MEMCACHED SETTINGS
114# --------------------------------------------
115MEMCACHED_HOST=null
116MEMCACHED_PORT=null
117
118# --------------------------------------------
119# OPTIONAL: PUBLIC S3 Settings
120# --------------------------------------------
121PUBLIC_AWS_SECRET_ACCESS_KEY=null
122PUBLIC_AWS_ACCESS_KEY_ID=null
123PUBLIC_AWS_DEFAULT_REGION=null
124PUBLIC_AWS_BUCKET=null
125PUBLIC_AWS_URL=null
126PUBLIC_AWS_BUCKET_ROOT=null
127
128# --------------------------------------------
129# OPTIONAL: PRIVATE S3 Settings
130# --------------------------------------------
131PRIVATE_AWS_ACCESS_KEY_ID=null
132PRIVATE_AWS_SECRET_ACCESS_KEY=null
133PRIVATE_AWS_DEFAULT_REGION=null
134PRIVATE_AWS_BUCKET=null
135PRIVATE_AWS_URL=null
136PRIVATE_AWS_BUCKET_ROOT=null
137
138# --------------------------------------------
139# OPTIONAL: AWS Settings
140# --------------------------------------------
141AWS_ACCESS_KEY_ID=null
142AWS_SECRET_ACCESS_KEY=null
143AWS_DEFAULT_REGION=null
144
145# --------------------------------------------
146# OPTIONAL: LOGIN THROTTLING
147# --------------------------------------------
148LOGIN_MAX_ATTEMPTS=5
149LOGIN_LOCKOUT_DURATION=60
150
151# --------------------------------------------
152# OPTIONAL: FORGOTTEN PASSWORD SETTINGS
153# --------------------------------------------
154RESET_PASSWORD_LINK_EXPIRES=15
155PASSWORD_CONFIRM_TIMEOUT=10800
156PASSWORD_RESET_MAX_ATTEMPTS_PER_MIN=50
157
158# --------------------------------------------
159# OPTIONAL: MISC
160# --------------------------------------------
161APP_LOG=single
162APP_LOG_MAX_FILES=10
163APP_LOG_LEVEL=warning
164APP_LOCKED=false
165APP_CIPHER=AES-256-CBC
166APP_FORCE_TLS=false
167APP_ALLOW_INSECURE_HOSTS=false
168GOOGLE_MAPS_API=
169LDAP_MEM_LIM=500M
170LDAP_TIME_LIM=600
171IMPORT_TIME_LIMIT=600
172IMPORT_MEMORY_LIMIT=500M
173REPORT_TIME_LIMIT=12000
174REQUIRE_SAML=false
175API_THROTTLE_PER_MINUTE=120

个人示例:敏感信息已用xxx替换

 1[root@snipe-it]# egrep -v '^#|^$' .env | head -n 25
 2APP_ENV=production
 3APP_DEBUG=false
 4APP_KEY= xxx
 5APP_URL=http://xxx
 6APP_TIMEZONE='Asia/Shanghai'
 7APP_LOCALE=en
 8MAX_RESULTS=500
 9
10PRIVATE_FILESYSTEM_DISK=local
11PUBLIC_FILESYSTEM_DISK=local_public
12
13
14
15DB_CONNECTION=mysql
16DB_HOST=xxx
17DB_PORT=xxx
18DB_DATABASE=xxx
19DB_USERNAME=xx
20DB_PASSWORD=xxx
21DB_PREFIX=null
22DB_DUMP_PATH='/usr/bin'
23DB_CHARSET=utf8mb4
24DB_COLLATION=utf8mb4_unicode_ci
25
26DB_SSL=false
  • 2.5 安装php包依赖
1curl -sS https://getcomposer.org/installer | php
2php composer.phar install --no-dev --prefer-source
  • 2.6 生成APP_KEY
1php artisan key:generate
  • 2.7 Nginx 和 PHP-FPM 配置

nginx 配置参考

 1[root@conf.d]# cat snipe-it.conf
 2server {
 3    listen 80;
 4    server_name localhost;
 5
 6    root /data/snipe-it/public;
 7    index index.php index.html index.htm;
 8
 9    location / {
10        try_files $uri $uri/ /index.php$is_args$args;
11    }
12
13    location ~ \.php$ {
14        try_files $uri $uri/ =404;
15        fastcgi_pass unix:/var/run/php7-fpm-www.sock;
16        fastcgi_index index.php;
17        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
18        include fastcgi_params;
19    }
20}

php-fpm 配置参考

 1[root@php-fpm.d]# egrep -v '^;|^$' www.conf
 2[www]
 3user = nginx
 4group = nginx
 5listen = /var/run/php7-fpm-www.sock
 6listen.owner = nginx
 7listen.group = nginx
 8listen.mode = 0660
 9listen.allowed_clients = 127.0.0.1
10pm = dynamic
11pm.max_children = 50
12pm.start_servers = 5
13pm.min_spare_servers = 5
14pm.max_spare_servers = 35
15slowlog = /var/log/php-fpm/www-slow.log
16php_admin_value[error_log] = /var/log/php-fpm/www-error.log
17php_admin_flag[log_errors] = on
18php_value[session.save_handler] = files
19php_value[session.save_path]    = /var/lib/php/session
20php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

注意,这里php-fpm、nginx都是用nginx这个用户运行,不一致会遇到权限问题,接着把代码目录也改为nginx, 当然你你也可以改成自己想要的用户运行,记得对应的配置文件也要一并修改。

更改目录权限和启动相关服务

1chown -R nginx:nginx /data/snipe-it
2systemctl start php-fpm
3systemctl start nginx

如有需要可往源码目录放一个test.php文件,用于测试相关环境配置是否正常。

1echo -e '<?php\nphpinfo();\n?>' > test.php
  • 2.8 最后测试验证

访问http://xxx.xxx.xxx/test.php 确认正常显示phpinfo信息。

php info

如果有错误,请查看nginx和php-fpm的错误日志,根据报错解决问题。

再访问http://xxx.xxx.xxx/ 根据指引设置登录使用系统。

没有怎么接触的新手,初次使用可以参考官方demo