一時期試してみた『Snipe-IT』。

このときはインストールスクリプトを用いて、

  • Apache
  • mariaDB
  • php

という状態でした。(また、このときはローカルDNSも構築していませんでした)

そこで、既にある環境にこれを追加します。

前提

  • Linux: Kubuntu 20.04
  • Apache
  • PHP
  • MySQL
  • 既に以下のWebシステムを導入済み
    1. Zabbix
    2. フォトアルバムLychee
    3. Growi

手順

以下のサイトを参考にしました。

Ubuntu 22.04にSnipe-IT資産管理ツールをインストールする方法– VITUX

(参照先では22.04ですが、その前のバージョンでもほぼこの手順通りでした。また、参照先ではmysqlなどを導入するよう指示がありましたが、既に稼働しているため飛ばしています)

PHPインストール

sudo add-apt-repository ppa:ondrej/php

sudo apt install -y php7.4-{opcache,pdo,bcmath,calendar,ctype,fileinfo,ftp,gd,intl,json,ldap,mbstring,mysqli,posix,readline,sockets,bz2,tokenizer,zip,curl,iconv,phar}
# 参照元のコマンドでを叩くとPHPバージョンを指定するよう言われたので、原稿環境のバージョン「7.4」を加えています。
インストール後、既存サービスの設定確認
sudo systemctl restart apache2

→ 再起動後、ZabbixやLycheeが正常に稼働していることを確認しました。

Snipe-IT用のDBを作成

sudo mysql -u root -p
CREATE DATABASE snipeit_db;
CREATE USER  'snipeit'@'localhost' IDENTIFIED WITH mysql_native_password BY '任意のパスワード';
GRANT ALL PRIVILEGES ON snipeit_db.* TO 'snipeit'@'localhost';
FLUSH PRIVILEGES;
exit

Snipe-ITダウンロード

cd /var/www/html
sudo git clone https://github.com/snipe/snipe-it snipe-it
cd /var/www/html/snipe-it

Snipe-IT サーバ設定

sudo cp .env.example .env
sudo vim .env
設定ファイル内容(編集内容)
APP_URL=marazion.corn.wall
APP_TIMEZONE='JST'
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=snipeit_db
DB_USERNAME=snipeit
DB_PASSWORD=設定したパスワード
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

Composerインストール

sudo su -
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /var/www/html/snipe-it/
exit
sudo composer update --no-plugins --no-scripts
sudo composer install --no-dev --prefer-source --no-plugins --no-scripts
sudo php artisan key:generate
sudo chown -R www-data:www-data /var/www/html/snipe-it
sudo chmod -R 755 /var/www/html/snipe-it

httpd仮想ファイル作成

vi /etc/apache2/sites-available/snipe-it.conf
設定ファイル内容

ここでは

  1. ServerNameで複数のバーチャルホストを定義
  2. Rewriteで強制的にhttps通信をさせる
  3. 書式をApache2.4に合わせる

を行っています。

<VirtualHost _default_:80>
 ServerName marazion.corn.wall
#Server名は読み替えてください。(ログの場所も同じ)
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost _default_:443>
 ServerName marazion.corn.wall
 CustomLog /var/log/apache2/marazion.corn.wall/access.log combined
 ErrorLog /var/log/apache2/marazion.corn.wall/error.log
#  ログの場所を別のディレクトリにしたい場合は予め作成します
  SSLEngine on
    SSLProtocol All -SSLv2 -SSLv3  -TLSv1
     SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
    SSLCertificateFile /etc/certs/corn.wall.crt
    SSLCertificateKeyFile /etc/private/corn.wall.key
#mkcertで取得したローカル証明書と秘密鍵

  DocumentRoot /var/www/html/snipe-it/public
  <Directory /var/www/html/snipe-it/public>
    Options Indexes FollowSymLinks MultiViews
    Require all granted
</VirtualHost>                                                                                                                

設定ファイル反映

a2ensite snipe-it
apache2ctl configtest
 # → syntaxOKを確認
systemctl restart apache2.service

反映後、上記指定したドメインにアクセスすることでpre-flight checkが走り、

しっかり動くことを確認です。