Snipe-IT
資産管理ソフト、Snipe-ITの
- インストール
- 設定方法
- 運用
など
- Ubuntu 22.04(24.04)にSnipe-ITをインストール
- Snipe-ITをv6.3.3からv6.3.4にアップグレード。
- Snipe-ITのデータを別サーバに移行。(Ubuntu20.04/v6→Ubuntu24.04/v7)
Ubuntu 22.04(24.04)にSnipe-ITをインストール
Ubuntu 22.04環境下での資産構成システム「Snipe-IT」をインストールする方法についての手順です。
→ Ubuntu 24.04でも動作を確認しました。
環境
- Ubuntu 22.04
- またはUbuntu 24.04
- Apache 2.4
- php 8.1
- Ubuntu 24.04の場合は8.3
- composer
- mysql
前提
- ドメインで名前解決できること
- そのドメインに即した証明書があること
さっくりとした手順
- Snipe-IT用のDBを作成します。
- Snipe-ITをダウンロードします。
- Composerでインストールを行います。
- Apacheの設定を行います。
- Web画面からインストールを行います。
手順
- Web画面以外はSSH/ターミナルで操作を行います。
- Apacheの実行ユーザはwww-dataです。自分の環境に合わせます。
MySQLでDB作成
- コンソールログイン
mysql -u root -p
- DB作成
CREATE DATABASE snipeit character set utf8mb4;
CREATE USER 'snipeit'@'localhost' IDENTIFIED BY 'password';
この'password'は任意のパスワードに変更してください
GRANT ALL ON snipeit.* TO 'snipeit'@'localhost';
flush privileges;
exit
-
DB作成確認
-
設定したパスワードでログインできることを確認
mysql -u snipeit -p
- DB確認
SHOW DATABASES;
snipeitがあることを確認
- ログアウト
exit
プログラム配置
- Webサイト配置ディレクトリに移動
cd /home/www-data && pwd
自分の環境に合わせます。
- ダウンロード
sudo -u www-data git clone https://github.com/snipe/snipe-it snipe-it
- ディレクトリ移動
cd snipe-it
- .envを作成
sudo cp -pi .env.example .env
- .env修正
※教義・信仰に沿ったエディタで編集します。※
- 修正箇所
APP_URL=http://ドメイン名
snipe-itを動かすドメイン名です。
APP_TIMEZONE='Asia/Tokyo'
タイムゾーンを指定します。
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=
DB名/ユーザ名/パスワードは上述したDB作成で指定したものです。
修正後、.envを保存します。
composerでsnipe-itインストール
- 依存関係のアップデート
sudo -u www-data composer update --no-plugins --no-scripts
- インストール
sudo -u www-data composer install --no-dev --prefer-source --no-plugins --no-scripts
- APPキー作成
sudo -u www-data php artisan key:generate
途中のプロンプトには「yes」を入力します。
バーチャルサイト作成
- ログ格納ディレクトリを作成
sudo mkdir -p /var/log/snipeit
※自分の環境に合わせます。
- ログ格納ディレクトリの権限変更
sudo chown -R www-data:www-data /var/log/snipeit
- バーチャルファイル作成
- Snipe-IT用の設定ファイル作成
- 【】の箇所は、自分の環境に合わせて修正してください。
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/snipeit.conf
<VirtualHost *:80>
# ドメイン名を指定します
servername 【hoge.example.com】
# HTTPアクセスを強制的にHTTPSにリダイレクトします
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
# ドメイン名を指定します
ServerName 【hoge.example.com】
# 上述したログディレクトリを指定します。
CustomLog /var/log/snipeit/snipeit_access.log combined
ErrorLog /var/log/snipeit/snipeit_error.log
# Snipe-ITのプログラムを配置したディレクトリを指定します。
DocumentRoot 【/home/www-data/snipe-it/public】
<Directory 【/home/www-data/snipe-it/public】>
Options -MultiViews
AllowOverride All
Require all granted
</Directory>
#SSL設定
SSLEngine on
Protocols h2 http/1.1
# SSL証明書を指定します
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
# 秘密鍵を指定します
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 中間証明書が発行元から別ファイルで提供されている場合は、このすぐ下をコメントアウトして中間証明書を指定します
# SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】
#セキュリティヘッダー付与
Header always set Strict-Transport-Security "max-age=63072000"
Header set X-Content-Type-Options "nosniff"
Header always append X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
</VirtualHost>
# これらのセクションはSSL暗号化強度を高めるための記述です
# </VirtualHost>の外側に書くことにご注意ください
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:EC6-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
__EOF__
- コンフィグ有効化
sudo a2ensite snipeit.conf
- コンフィグの文法確認
sudo apache2ctl configtest
Syntax OKを確認します
- apache再起動
sudo systemctl restart apache2.service
Web画面からの設定確認
ブラウザで
https://設定したURL
にアクセスします。
のような画面が出てきます。「Next:Create Database Tables」をクリックします。
「Next: Create User」をクリックします。
この画面が出てきたら成功です。
Snipe-ITをv6.3.3からv6.3.4にアップグレード。
概要
資産管理システムSnipe-ITのアップグレードを行いました。
- アップグレード前:v6.3.3
- アップグレード後:v6.3.4
前提
以下の環境で動いています。
- Ubuntu 22.04
- Apache 2.4
- MySQL 8.0.36
- PHP 8.1.27
- Composer 2.6.6
参考手順
https://snipe-it.readme.io/docs/upgrading
さっくりとした手順
Snipe-ITがインストールされているサーバでコマンド操作を行います。
- Snipe-ITのインストールディレクトリに移動します。
- バックアップ用の仮ファイルを作成します。
- アップグレードスクリプトを実行します。
- ブラウザでアップグレードを確認します。
Snipe-ITのインストールディレクトリに移動
cd /home/www-data/snipe-it
自分の環境に合わせます。
仮ファイル作成
sudo -u www-data touch ./storage/app/backup-temp
- これを作っておかないと、後のスクリプトでエラーとなりました。
- Snipe-ITはApacheで実行しているので、仮ファイルは所有者権限で作成します。
アップグレード
sudo -u www-data php upgrade.php
スクリプト例
--------------------------------------------------------
WELCOME TO THE SNIPE-IT UPGRADER!
--------------------------------------------------------
This script will attempt to:
- validate some very basic .env file settings
- check your PHP version and extension requirements
- check directory permissions
- do a git pull to bring you to the latest version
- run composer install to get your vendors up to date
- run migrations to get your schema up to date
- clear out old cache settings
Launching using branch: master
Found PHP requirements, will check for PHP > 7.4.0 and < 8.2.0
Proceed with upgrade? [Y/n]:
確認はこの部分だけです。PHPのバージョンを確認した上で「y」を入力します。
(中略)
--------------------------------------------------------
STEP 9: Migrating database:
--------------------------------------------------------
Migrating: 2024_03_18_221612_update_legacy_locale
Migrated: 2024_03_18_221612_update_legacy_locale (154.60ms)
--------------------------------------------------------
STEP 10: Checking for OAuth keys:
--------------------------------------------------------
√ OAuth keys detected. Skipping passport install.
--------------------------------------------------------
STEP 11: Taking application out of maintenance mode:
--------------------------------------------------------
-- Application is now live.
---------------------- FINISHED! -----------------------
All done! Clear your browser cookies and re-login to use
your upgraded Snipe-IT!
--------------------------------------------------------
ここまで進めばスクリプトは完了です。
アップグレード確認
- ブラウザからSnipe-ITにログインし直します。(一度ログアウトします)
- Web画面の右下のバージョンが上がっていれば成功です。
Snipe-ITのデータを別サーバに移行。(Ubuntu20.04/v6→Ubuntu24.04/v7)
Snipe-IT のv7からPHP 8.1以降(PHP8.3含む)で動くようになりました。
こちらの方法を用いることでUbuntu24.04でもインストール可能だったことを確認していますが、データ移行はかなりハマりました。
うまくいかなかった手段1:データのバックアップ/リストア機能
Snipe-ITはデータ全体のバックアップとリストア機能を備えていますが、
- 移行元:Ubuntu 20.04
- v6
- PHP8.1
- Apache2.4
- MySQL8
- 移行先:Ubuntu 24.04
- v7
- PHP8.3
- Apache2.4
- MySQL8
のため、PHPのバージョンが合わないせいかインポート時にエラー発生。再アクセスしようとすると500エラーが発生。
うまくいかなかった手段2:データの移行とSQLリストア
- firefly-iii
- BookStack
と同じように、アップロードしたファイルを移行先に持っていき、mysqldumpで取得したファイルをインポートすることでうまくいくのではと思いましたが、これでも500エラーが発生。
お手上げ状態だった時に公式ドキュメントを見ると、答えが書いてありました。
うまくいった手段:keyファイルの上書きとマイグレーション
「手段2:データの移行とSQLリストア」に加えて、これが必要でした。
Moving Snipe-ITによると
Moving/migrating Snipe-IT to a new server should be a pretty painless process. You really only have a few things to worry about:
- Your .env
- Your database
- Your uploaded files
- Your OAuth keys
とあります。上記サイトにある情報を元に、手順化を行います。
【移行先】Snipe-ITを新たにインストールします。
セットアップを行い、管理者アカウントを作成するところまで進めます。
【移行元】→【移行先】各種データを転送します。
- SQLのダンプファイル
mysqldump -h localhost -u snipeit -p --no-tablespaces --single-transaction snipeit > snipeit_db.$(date +%Y%m%d).sql
パスワードは移行元のDBパスワードです。取得したダンプファイルは、任意の安全な方法で移行先に転送します。
- .envのAPP_KEY
移行元先ルートディレクトリ/storage
配下にある.env
のAPP_KEY=base64:
移行の文字列を、
移行元のAPP_KEY=base64:
のものにそのまま上書きして保存します。
- ファイルディレクトリ一式の転送
移行元のルートディレクトリ配下
└public/uploads
└storage/private_uploads
のディレクトリ一式を、同じように移行先に転送した上で、移行先のディレクトリに上書きます。(アクセス権は一致させます)
- OAuth key
移行元のルートディレクトリ/storage
配下にある
└oauth-private.key
└oauth-public.key
を、移行先の同じディレクトリにコピーして上書きます。
【移行先】DBのリストアとマイグレーションを行います。
これ以降は移行先のみで作業を行います。
- ダンプファイルのリストア
mysql -h localhost -u snipeit -p snipeit < /path/to/backup/directory/snipeit_db.$(date +%Y%m%d).sql
転送したディレクトリにあるダンプファイルのパスを指定します。
- Snipe-ITのルートディレクトリに移動
cd /var/www/html/snipe-it && pwd
など、移行先のsnipe-itのルートディレクトリに移動します。
- DBマイグレーション
sudo -u www-data php artisan migrate
途中のプロンプトはyesを指定します。
- コンフィグクリア
sudo -u www-data php artisan config:clear
Webサービスを再起動し、データ移行を確認します。
- Webサービス再起動
sudo systemctl restart apache2.service
- Webサービス再起動確認
systemctl status apache2.service
active(running)
を確認します。
- データ移行確認
- 移行先のSnipe-ITをインストールしたURLにアクセスします。
- 移行元のアカウントでログインできることを確認します。
- 移行元と同じデータがあることを確認します。