Laravelベースで使いやすい!Snipe-IT(オープンソースIT資産管理)

わたなべです。
もうすぐ4月、お花見の時期ですね!
この時期だけはオフィスが目黒川沿いにあって良かった!って思います:D

さてさて、先日オープンソースのIT資産管理システム、
Snipe-IT」を導入したのでご紹介します。

弊社では今までGoogleスプレッドシートやEvernote上で、
PC本体やAdobe・Office等のライセンス管理をしていました。

しかし、今年の1月に社員数が70名を突破しまして、
メモベースで管理するのはここが限界だろうと判断し、
きちんとしたIT資産管理のシステムに移行することにしました。

IT資産管理のツールはユーザーが業務用に限られているためか、
価格もBtoBのツールにありがちな問い合わせベースばかりです。
(営業メール… 電話… ちなみに業界No.1は何個も見つかりました😂)

そこで白羽の矢を立てたのが、オープンソースの「Snipe-IT」でした。

Snipe-IT概要

日本語の記事が3件しか見つからなかったので、
日本での導入実績はあまりないのではないでしょうか。

Snipe-ITはLaravel 5.2Bootstrap 3で構成されているオープンソース(AGPL-3.0)で、
今日(2017/03/30)現在も開発が積極的に行われています。

日本語にも概ね対応していますが、
弊社が導入したv3.6.4時点では翻訳が間違っている箇所が何点かあります。
翻訳に関してはcrowdin上で管理されているので、
今回自分で翻訳を精査して提出いたしました。
未翻訳部分も全て提出したので、反映されれば翻訳度100%になるはずです!(採用されれば…!)
(※追記 4/6に承認されました!)

インストール・保守が面倒という方は、SaaS型も30ドルで提供されています!

動作要件

  • PHP >= 5.5.9
  • MySQL or MariaDB
  • PHP Extension (OpenSSL, PDO, Mbstring, Tokenizer, cURL, MySQL, PHPZIP, Fileinfo)
  • GD Library (>=2.0) or Imagick PHP extension (>=6.3.8)
  • Git
  • Composer
  • Mod Rewrite
  • LDAP extension (LDAP認証を使う場合)

システム要件はこちらにあります。
PHPは最新のPHP7.1を使いたいところですが、
v3.6.4時点では、PHP 7.1には対応していません(後述)。
そのため、今回はPHP7.0でセットアップします。

サーバーセットアップ

CentOS7.3をベースにインストールしていきます。
不要な方は適宜飛ばしてください。

構成

  • nginx 1.10.2
  • PHP7.0 + PHP-FPM
  • MariaDB 5.5

nginx

yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=epel install nginx

systemctl enable nginx
systemctl start nginx

PHP,PHP-FPM

yum --enablerepo=remi-php70 install php php-fpm php-mbstring php-pdo php-mysqlnd php-mcrypt php-gd php-zip
# 再三になりますが、php71には対応していないので、php70を指定してください。

vi /etc/php-fpm.d/www.conf #24〜26行目付近
user = nginx
group = nginx

systemctl enable php-fpm
systemctl start php-fpm 

MariaDB

yum install mariadb mariadb-server

systemctl enable mariadb.service
systemctl start mariadb.service

#初期設定
/usr/bin/mysql_secure_installation

バージョン確認

nginx -v
nginx version: nginx/1.10.2

php -v
PHP 7.1.3 (cli) (built: Mar 14 2017 17:39:59) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

php-fpm -v
PHP 7.1.3 (fpm-fcgi) (built: Mar 14 2017 17:42:35)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

rpm -qa | grep maria
mariadb-5.5.52-1.el7.x86_64
mariadb-server-5.5.52-1.el7.x86_64
mariadb-libs-5.5.52-1.el7.x86_64

セットアップ

Documentation>Installationを参照しながらセットアップしていきます。

Step 1 Download Snipe-IT

Snipe-ITをダウンロードします。今回はおすすめされているGit Cloneで行います。
フォルダはnginx権限にしておき、後々nginxから参照できるようにしてください。

git clone https://github.com/snipe/snipe-it

Step 2 Creating a Database and User

データベースを用意します。

mysql -u root -p
create database snipeit;
show databases;
create user snipe_user;
grant all on snipeit.* to 'snipe_user'@'localhost' identified by 'パスワード';

Step 3 Configure Snipe-IT for your environment

環境設定ファイルを作成します。

cp -a .env.example .env #サンプルをコピー

vi .env
# 以下、自分が変更した行だけ記述します

# REQUIRED: BASIC APP SETTINGS
APP_KEY=ChangeMe
# すごく変えたくなりますが、この行はまだ触りません。後ほど自動生成で差し替えます。

APP_URL=https://snipe-it.example.com # URL 末尾スラッシュなし
APP_TIMEZONE='Asia/Tokyo'
APP_LOCALE=ja

# REQUIRED: DATABASE SETTINGS
DB_HOST=localhost
DB_DATABASE=snipeit
DB_USERNAME=snipe_user
DB_PASSWORD=password # パスワード

# REQUIRED: OUTGOING MAIL SERVER SETTINGS
MAIL_HOST=smtp.gmail.com # googleAppsを使う設定
MAIL_PORT=587
MAIL_USERNAME=server@example.com
MAIL_PASSWORD=password # パスワード
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDR=server@example.com
MAIL_REPLYTO_ADDR=server@example.com

パーミッションの変更を行います。

chown -R nginx:nginx storage public/uploads
chmod -R 755 storage
chmod -R 755 public/uploads

Step 4 Install package dependencies via composer

必要パッケージ等をcomposerでインストールします。
結構な時間が掛かります!

# composerがない場合
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev --prefer-source

# グローバルなcomposerがある場合
composer install --no-dev --prefer-source

Step 5 Generate Your App Key

APP_KEYを生成します。このKEYはデータの復号に使うので、手元にバックアップすることが推奨されています!

php artisan key:generate
Application key [base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=] set successfully.
# このタイミングで.envのAPP_KEYが書き換わります。

Step 6 Configure your webserver

publicフォルダにアクセスできるよう、Webサーバーの設定を行います。
ドキュメント上ではApacheが推奨されていますが、
今回はNginx+PHP-FPMなので、こちらの資料を元に設定します。
PHP7なので、nginx.confを少し変更してあります。

vi /etc/nginx/nginx.conf

--------
server {
    listen 80;
    server_name snipe-it.example.com; # ドメイン

    root /opt/snipe-it/public/; # インストールしたフォルダ
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~ \.php$ {
        try_files $uri $uri/ =404;
        fastcgi_pass   127.0.0.1:9000;
        #fastcgi_pass unix:/var/run/php5-fpm-www.sock; # 公式設定をコメントアウト
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
--------
systemctl reload nginx

Step 7 Pre-Flight & Setup

Webページ上から初期設定を行います。

(余談)PHP7.1でインストールしてしまった場合

ここでもし起動しなかった場合は、エラーを詳しく追うため、DebugモードをONにしてみます。

vi .env
#APP_DEBUG=false
APP_DEBUG=true


v3.6.4ではLaravel5.2を使用している影響で、暗号化周りのメソッドでエラーが出てしまいます。
現在開発が進んでいるv4.0からはLaravel5.4に移行されるそうなので、
現時点ではPHP7.0以下を使用するようにしてください。

Pre-Flight


このような画面が出れば、ひとまず成功です!
もし赤色のエラー項目があれば修正していきましょう。

セットアップ完了!


トップ画面が表示されればセットアップ完了です!

用語

意味がわかりづらい用語が幾つかありますので、補足しておきます。

  • 資産(hardware) : PC本体
    資産番号が振られますので、ラベル印刷機能でバーコードを本体に貼って管理します。
  • ソフトウェア・ライセンス(licenses) : 名前通り
    ライセンスは社員とPCどちらにも割り当てることができます。
    添付ファイルとして納品書等をアップすると便利です!
  • 付属品(accessories) : キーボードなど
  • 消耗品(consumables) : プリンタのインクやコピー用紙など
  • 構成部品(components) : メモリやHDDなど
  • チェックイン(check-in) : 社員から返却してもらうこと
  • チェックアウト(check-out) : 社員に付与すること

まとめ

  • オープンソースのIT資産管理ツール!
  • 誤訳ちょっとあるけど日本語対応済み!
  • Laravelベース、Web上で使えて便利!
  • v3.6.4はPHP7.1非対応なのでPHP7.0を使おう!
  • インストール・保守が面倒という方はSaaS型30ドル!

以上、Snipe-ITのご紹介でした。

作者 Jun Watanabe

2010年11月ORATTA入社。エンジニアリーダーと名刺には書いてました。

コメントを残す