开源免费的资产管理项目Snipe-IT ,在LNMP 环境下的部署指南
Snipe-IT 是一款功能强大的开源IT资产管理系统,可以帮助企业跟踪和管理硬件、软件许可证等资产。以下是详细的部署流程,涵盖从环境准备到系统配置的全过程。
一、部署前准备
1. 系统要求
- 操作系统: Ubuntu 20.04/22.04 LTS 或 CentOS 7/8 (推荐Ubuntu)
- 内存: 至少2GB (生产环境建议4GB以上)
- 存储空间: 至少10GB可用空间
- 网络: 可访问互联网
2. 软件依赖
- PHP 7.4/8.0
- MySQL 5.7+/MariaDB 10.3+
- Apache/Nginx
- Composer
- Git
二、部署流程
一、环境确认
首先确认你的 LNMP 环境已包含以下组件:
- Nginx (已安装并运行)
- MySQL/MariaDB (已安装,建议 10.3+ 版本)
- PHP (8.1+,已安装并配置了 FPM)
- Composer (已安装)
检查命令:
nginx -v
mysql --version
php -v
composer --version
二、部署步骤
1. 创建数据库和用户
sudo mysql -u root -p
在 MySQL 提示符下执行:
CREATE DATABASE snipeit CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'snipeit'@'localhost' IDENTIFIED BY '设置一个强密码';
GRANT ALL PRIVILEGES ON snipeit.* TO 'snipeit'@'localhost';
FLUSH PRIVILEGES;
EXIT;
2. 安装必要 PHP 扩展
sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-bcmath php-intl php-ldap php-tokenizer
sudo systemctl restart php8.3-fpm # 根据实际PHP版本调整
3. 下载 Snipe-IT
cd /var/www
sudo git clone https://github.com/snipe/snipe-it.git
sudo chown -R www-data:www-data snipe-it
cd snipe-it
4. 配置环境文件
sudo cp .env.example .env
sudo nano .env
主要修改以下配置:
APP_URL=http://你的域名或IP
APP_TIMEZONE=Asia/Shanghai
DB_HOST=localhost
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=你设置的数据库密码
5. 安装 PHP 依赖
sudo -u www-data composer install --no-dev --prefer-source
6. 生成应用密钥
sudo -u www-data php artisan key:generate
7. 设置文件权限
sudo chmod -R 755 storage
sudo chmod -R 755 public/uploads
sudo chown -R www-data:www-data storage
sudo chown -R www-data:www-data public/uploads
8. 配置 Nginx
sudo nano /etc/nginx/sites-available/snipe-it
添加以下内容(根据你的实际路径和域名调整):
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或IP
root /var/www/snipe-it/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # 根据实际PHP版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
client_max_body_size 100M; # 允许大文件上传
}
启用配置:
sudo ln -s /etc/nginx/sites-available/snipe-it /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
9. 初始化数据库
sudo -u www-data php artisan migrate --seed
10. 设置定时任务
sudo crontab -e
添加以下行:
* * * * * /usr/bin/php /var/www/snipe-it/artisan schedule:run >> /dev/null 2>&1
11. 完成安装
现在可以通过浏览器访问你的域名或IP来使用 Snipe-IT。
三、HTTPS 配置(推荐)
使用 Let's Encrypt 免费证书
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
sudo systemctl reload nginx
证书会自动续期,无需手动操作。
四、常见问题解决
- 502 Bad Gateway 错误:
- 检查 PHP-FPM 是否运行:
systemctl status php8.3-fpm
- 确认 Nginx 配置中的 PHP socket 路径正确
- 检查 PHP-FPM 是否运行:
- 数据库连接问题:
- 确认 .env 文件中的数据库凭据正确
- 检查 MySQL 用户权限:
SHOW GRANTS FOR 'snipeit'@'localhost';
- 文件上传问题:
- 确保
public/uploads
目录可写 - 检查 PHP 配置:
sudo nano /etc/php/8.3/fpm/php.ini
修改以下值:
upload_max_filesize = 100M post_max_size = 100M memory_limit = 256M
然后重启 PHP-FPM:
sudo systemctl restart php8.3-fpm
- 确保
五、优化建议
- 启用 OPcache:
sudo apt install php8.3-opcache sudo nano /etc/php/8.3/fpm/php.ini
添加/取消注释:
[opcache] opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60
重启 PHP-FPM:
sudo systemctl restart php8.3-fpm
配置队列处理:- 在 .env 中设置
QUEUE_CONNECTION=database
- 设置队列 worker:
sudo nano /etc/systemd/system/snipeit-worker.service
内容:
[Unit] Description=Snipe-IT Queue Worker After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www/snipe-it ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3 [Install] WantedBy=multi-user.target
启用并启动:
sudo systemctl enable snipeit-worker sudo systemctl start snipeit-worker
定期备份:
- 创建备份脚本
/usr/local/bin/snipeit-backup.sh
:#!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR="/backups/snipeit" mkdir -p $BACKUP_DIR # 备份数据库 mysqldump -u snipeit -p'你的密码' snipeit > $BACKUP_DIR/snipeit-db-$DATE.sql # 备份应用文件 tar -czf $BACKUP_DIR/snipeit-files-$DATE.tar.gz /var/www/snipe-it # 保留最近7天备份 find $BACKUP_DIR -type f -mtime +7 -delete
- 创建备份脚本
- 在 .env 中设置
- 设置可执行权限:
chmod +x /usr/local/bin/snipeit-backup.sh
- 添加到 cron:
crontab -e
添加0 2 * * * /usr/local/bin/snipeit-backup.sh
按照以上步骤,已经在 Ubuntu + LNMP 环境下成功部署了 Snipe-IT 资产管理系统。