Snipe it 資産管理システムのインストールと使用
最近、私の会社ではIT資産管理システムが必要になりました。3つのオープンソースシステム(Snipe-IT、GLPI、Ralph)の中からSnipe-ITを選択しました。Ralphはコンピュータルーム管理に重点を置いており、GLPIも悪くないと思いましたが、今のところすべての追加機能は必要ありません。後で試してみるかもしれません。
システムは以下のようになります。
1. ローカル Docker のインストールとテスト
手軽に試したい場合は、Docker を使ってテスト環境を構築するのが便利です(面倒でなければ、ホストのコマンドラインからインストールすることもできます)。
- 1.1 イメージをダウンロードする
1docker pull snipe/snipe-it
- 1.2 ディレクトリを見つけて環境変数ファイルを作成する
1touch my_env_file
企業は MySQL のテストに応募できますが、コンテナ化された MySQL は使用しません(コンテナ化された MySQL を使用する場合は、Snipe docker を参照してください)。
例を以下に示します。
1➜ cat my_env_file
2# MySQLパラメータ
3MYSQL_PORT_3306_TCP_ADDR=127.0.0.1 #データベースホスト
4MYSQL_PORT_3306_TCP_PORT=3306 #データベースポート
5
6MYSQL_DATABASE=xxxx #データベース名
7MYSQL_USER=xxxx #データベースユーザー名
8MYSQL_PASSWORD=xxxx #データベースパスワード
9
10# メール設定(現在はコメントアウトされています)
11# メールパラメータ
12# - メールサーバーのホスト名/IPアドレス
13#MAIL_PORT_587_TCP_ADDR=smtp.whatever.com
14# メールサーバーのポート番号(通常は587ですが、他のポート番号でも構いません)
15#MAIL_PORT_587_TCP_PORT=587
16# デフォルトの送信元アドレスと送信元名メール
17#MAIL_ENV_FROM_ADDR=youremail@yourdomain.com
18#MAIL_ENV_FROM_NAME=メールアドレス
19# - SMTP over SSLの場合は「tls」、暗号化されていない場合は「tcp」を選択してください
20#MAIL_ENV_ENCRYPTION=tcp
21# SMTPユーザー名とパスワード
22#MAIL_ENV_USERNAME=メールアドレスのユーザー名
23#MAIL_ENV_PASSWORD=メールアドレスのパスワード
24
25# Snipe-IT設定
26APP_ENV=production
27APP_DEBUG=false
28APP_KEY=<<後で入力!>> # これは後で生成されるので、今は空白のままにしておいてください。
29APP_URL=http://192.169.1.33 # システムアクセスアドレス(IPまたはドメイン名)。テストを容易にするため、ローカルIPアドレスを使用してください。
30APP_TIMEZONE=Asia/Shanghai # タイムゾーン。後で調整できます。
31APP_LOCALE=en # 言語。後で調整できます。
32
33# Docker 固有の変数
34PHP_UPLOAD_LIMIT=100 # アップロードファイルのサイズ制限
- 1.3 APP_KEY の生成
1docker run --rm snipe/snipe-it
上記のコマンドを実行すると、以下の出力が表示されます。
1環境変数 $APP_KEY を指定して、このコンテナを再実行してください。
2使用できる APP_KEY の例は次のとおりです。
3
4base64: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
3コンテナ ID イメージ コマンド 作成日時 ステータス ポート名
455b39ab3e1ac snipe/snipe-it "/startup.sh" 8 時間前 8 時間前 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp jovial_carver
上記のように、正常に動作しており、ポート 80 でサービスが提供されています。
1.5 ブラウザを開き、前の手順で設定した APP_URL アドレスに移動します。 http://192.169.1.33 にアクセスして、システムの初期化を行います。
この手順は比較的簡単です。Web ページにステップバイステップのガイドが表示されますので、指示に従ってください。ここでは詳細は説明しませんので、公式ドキュメントを参照してください。
テスト環境がセットアップされたら、システムにログインして Maxthon をお楽しみください!
2. 本番ホストへのデプロイ
本番環境では Docker ではなくホストを使用しているのはなぜでしょうか?Snipe-it では、ユーザーが画像やファイルをアップロードし、ローカルに保存できるためです。Snipe-it では、Amazon S3 などのサービスに保存するオプションも提供されています(公式ドキュメント)。しかし、弊社のプライベートクラウドにはそのような機能がないため、コンテナデプロイは適していません。スケジュールバックアップ付きのホストデプロイも利用可能です。
以下は、PHP + PHP-FPM + Nginx のデプロイ方法です。
- 2.1 コードのダウンロード
本番サーバーにログインし、Snipe-it のコードをダウンロードします。
git 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 環境変数ファイルの準備
1cp .env.example .env
必要に応じて、テスト環境の設定を参考に .env 内の設定を変更してください。
公式テンプレート
1# ------------------------------------------
2# 必須: 基本アプリ設定
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# 必須: アップロードファイルストレージ設定
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#------------------------------------------------
24DB_CONNECTION=mysql
25DB_HOST=127.0.0.1
26DB_DATABASE=null
27DB_USERNAME=null
28DB_PASSWORD=null
29DB_PREFIX=null
30DB_DUMP_PATH='/usr/bin'
31DB_CHARSET=utf8mb4
32DB_COLLATION=utf8mb4_unicode_ci
33
34#------------------------------------------
35# オプション: SSL データベース設定
36# --------------------------------------------------
37DB_SSL=false
38DB_SSL_IS_PAAS=false
39DB_SSL_KEY_PATH=null
40DB_SSL_C
41
42ERT_PATH=null
43DB_SSL_CA_PATH=null
44DB_SSL_CIPHER=null
45
46#------------------------------------------------
47# 必須: 送信メールサーバー設定
48#------------------------------------------------
49MAIL_DRIVER=smtp
50MAIL_HOST=email-smtp.us-west-2.amazonaws.com
51MAIL_PORT=587
52MAIL_USERNAME=ユーザー名
53MAIL_PASSWORD=パスワード
54MAIL_ENCRYPTION=null
55MAIL_FROM_ADDR=you@example.com
56MAIL_FROM_NAME='Snipe-IT'
57MAIL_REPLYTO_ADDR=you@example.com
58MAIL_REPLYTO_NAME='Snipe-IT'
59MAIL_AUTO_EMBED_METHOD='attachment'
60
61# --------------------------------------------------
62# 必須:画像ライブラリ
63# gd または imagick を指定してください
64#------------------------------------------------
65IMAGE_LIB=gd
66
67#---------------------------------------------
68# オプション: バックアップ設定
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# オプション: セッション設定
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# オプション: セキュリティヘッダー設定
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# オプション: キャッシュ設定
100# --------------------------------------------------
101CACHE_DRIVER=file
102QUEUE_DRIVER=sync
103CACHE_PREFIX=snipeit
104
105#---------------------------------------------
106# オプション: REDIS 設定
107#------------------------------------------------
108REDIS_HOST=null
109REDIS_PASSWORD=null
110REDIS_PORT=null
111
112#------------------------------------------------
113# オプション: MEMCACHED 設定
114#------------------------------------------------
115MEMCACHED_HOST=null
116MEMCACHED_PORT=null
117
118#------------------------------------------------
119# オプション: PUBLIC S3 設定
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# オプション: プライベート S3 設定
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# オプション: AWS 設定
140# --------------------------------------------------
141AWS_ACCESS_KEY_ID=null
142AWS_SECRET_ACCESS_KEY=null
143AWS_DEFAULT_REGION=null
144
145#------------------------------------------------
146# オプション: ログインスロットリング
147#------------------------------------------------
148LOGIN_MAX_ATTEMPTS=5
149LOGIN_LOCKOUT_DURATION=60
150
151#------------------------------------------------
152# オプション: パスワード忘れ時の設定
153#------------------------------------------------
154RESET_PASSWORD_LINK_EXPIRES=15
155PASSWORD_CONFIRM_TIMEOUT=10800
156PASSWORD_RESET_MAX_ATTEMPTS_PER_MIN=50
157
158#---------------------------------------------
159# オプション: その他
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
2[root@snipe-it]# egrep -v '^#|^$' .env | head -n 25
3APP_ENV=production
4APP_DEBUG=false
5APP_KEY=xxx
6APP_URL=http://xxx
7APP_TIMEZONE='Asia/Shanghai'
8APP_LOCALE=en
9MAX_RESULTS=500
10
11PRIVATE_FILESYSTEM_DISK=local
12PUBLIC_FILESYSTEM_DISK=local_public
13
14DB_CONNECTION=mysql
15DB_HOST=xxx
16DB_PORT=xxx
17DB_DATABASE=xxx
18DB_USERNAME=xx
19DB_PASSWORD=xxx
20DB_PREFIX=null
21DB_DUMP_PATH='/usr/bin'
22DB_CHARSET=utf8mb4
23DB_COLLATION=utf8mb4_unicode_ci
24
25DB_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 {
3listen 80;
4server_name localhost;
5
6root /data/snipe-it/public;
7index index.php index.html index.htm;
8
9location/{
10try_files $uri $uri/ /index.php$is_args$args;
11}
12
13location ~ \.php$ {
14try_files $uri $uri/ =404;
15fastcgi_pass unix:/var/run/php7-fpm-www.sock;
16fastcgi_index index.php;
17fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
18include 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.s
6ock
7listen.owner = nginx
8listen.group = nginx
9listen.mode = 0660
10listen.allowed_clients = 127.0.0.1
11pm = dynamic
12pm.max_children = 50
13pm.start_servers = 5
14pm.min_spare_servers = 5
15pm.max_spare_servers = 35
16slowlog = /var/log/php-fpm/www-slow.log
17php_admin_value[error_log] = /var/log/php-fpm/www-error.log
18php_admin_flag[log_errors] = on
19php_value[session.save_handler] = files
20php_value[session.save_path] = /var/lib/php/session
21php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
22
23php-fpm のnginx と nginx はどちらもユーザー `nginx` で実行されます。この不一致は権限の問題を引き起こします。次に、コードディレクトリを `nginx` に変更します。もちろん、任意のユーザーに変更できます。また、関連する設定ファイルも変更することを忘れないでください。
24
25ディレクトリの権限を変更し、関連サービスを起動します。
26
27``shell
28chown -R nginx:nginx /data/snipe-it
29systemctl start php-fpm
30systemctl start nginx
必要であれば、ソースコードディレクトリに test.php というファイルを配置して、環境設定が正しいかどうかをテストできます。
``shell echo -e '' > test.php
1
2- 2.8 最終テストと検証
3
4http://xxx.xxx.xxx/test.php にアクセスし、phpinfo 情報が正しく表示されていることを確認します。
5
6````` 
7
8エラーが発生した場合は、nginx と php-fpm のエラーログを確認し、問題を解決してください。
9
10その後、http://xxx.xxx.xxx/ にアクセスし、指示に従ってログインしてシステムを使用してください。
11
12初めてご利用の場合は、[公式デモ](https://demo.snipeitapp.com/) をご参照ください。
著作権に関する声明:
- 出典のないコンテンツはすべてオリジナルです。、無断転載はご遠慮ください(転載後にレイアウトが崩れたり、内容が制御不能になったり、継続的に更新できない等の理由から)。
- このブログのコンテンツを非営利目的で解釈したい場合は、(読者の便宜のため)「オリジナル ソース」または「参照リンク」の形式でこのサイトの関連 Web ページ アドレスを提供してください。
このシリーズの投稿:
- Ubuntuの起動を高速化する
- 簡体字中国語の記事を繁体字中国語に一括変換
- Linux 用の Python の最新バージョンをインストールする
- Minetest トライアル
- Rime入力メソッドエンジンとClover入力スキーム
- ZFSスナップショットテスト