allgreen998の備忘録

SnipeITの構築(失敗例)

SnipeITを構築しようとしたら、最終的に行き詰まってしまった。
瑕疵などあれば、教えていただけると助かります。
できた事例はこちらから。

目次

構築環境

  • OS
  • CentOS 7.8.2003
  • Web Server
  • Nginx version 1.20.1
  • DataBase
  • MySQL version 14.14 distoribution 5.7.35
  • PHP
  • veriosn 7.4.22
    Composer version 2.1.5
  • SnipeIT
  • version 5.1.8

CentOS7のインストール

Nginxのインストール


yum install epel-release
yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=epel install nginx
                        
(起動)

systemctl enable nginx
systemctl start nginx
                        
(FireWall設定)

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --reload
                        
IPにアクセスして仮ページが見られることを確認した。

PHPのインストール


yum --enablerepo=remi-php74 install php php-fpm php-mbstring php-pdo php-mysqlnd php-mcrypt php-gd php-zip php-xml php-bcmath php-ldap
vi /etc/php-fpm.d/www.conf

user = nginx
***
group = nginx

cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
vi /etc/nginx/nginx.conf

location / {
    root   /usr/share/nginx/html;
    index  index.php;
}
***
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

vi /usr/share/nginx/html/index.php

<?php
    phpinfo();
?>
                        
(起動)

systemctl enable php-fpm
systemctl start php-fpm
systemctl restart nginx
                        
phpinfoが表示されていることを確認した。

MySQLのインストール


yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum install mysql-community-server
                        
(起動)

systemctl enable mysqld
systemctl start mysqld

grep password /var/log/mysqld.log
A temporary password is generated for root@localhost: @@@@@
                        
ここで初期PWを確認する。

mysql_secure_installation --use-default
mysql -u root -p
CREATE USER 'snipeit'@'localhost' IDENTIFIED WITH mysql_native_password BY '@@@@@';
CREATE DATABASE snipeit CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON snipeit.* TO `snipeit`@`localhost` WITH GRANT OPTION;
flush privileges;
quit
                        

SnipeITのインストール


yum install git
git config --global http.sslVerify false
git clone https://github.com/snipe/snipe-it /usr/share/nginx/html/snipeit
cp /usr/share/nginx/html/snipeit/.env.example /usr/share/nginx/html/snipeit/.env
vi /usr/share/nginx/html/snipeit/.env

APP_URL=
APP_TIMEZONE='Asia/Tokyo'
APP_LOCALE=ja
***
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=@@@@@

chown -R nginx:nginx /usr/share/nginx/html/snipeit
cd /usr/share/nginx/html/snipeit
chmod -R 755 public/uploads
chmod -R 755 storage
chmod -R 755 storage/private_uploads
cd ~
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/share/nginx/html/snipeit
cd /usr/share/nginx/html/snipeit
php composer.phar install --no-dev --prefer-source
php artisan key:generate
                        

Nginxの構成変更

vi /etc/nginx/nginx.conf
root /usr/share/nginx/html/snipeit;
2箇所変更する。
systemctl restart nginx

起きた問題と対処

Composerのインストールの時点で止まる

大体の場合、phpのパッケージが足りていない。
Required ~とか言われるので、それを yum installしてあげるとひとつづつProblemが消えていく。
公式ドキュメントどおりだとphp-xml php-bcmath php-ldapの3つが足りなかった記憶が。

HTTP Error 500を吐かれる

ここで挫折した。
エラーログは以下の通り。
[Wed Aug 18 18:12:44.485992 2021] [php7:error] [pid 12541] [client 10.0.10.30:55277] PHP Fatal error: Uncaught ErrorException: file_put_contents(/var/www/snipe-it/storage/framework/cache/cf/90/cf906e7195218453e4ff6f1bdcdc6b2d9f6cae71): failed to open stream: No such file or directory in /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:133\nStack trace:\n#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()\n#1 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(133): file_put_contents()\n#2 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php(74): Illuminate\\Filesystem\\Filesystem->put()\n#3 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php(152): Illuminate\\Cache\\FileStore->put()\n#4 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Cache/Repository.php(355): Illuminate\\Cache\\FileStore->forever()\n#5 /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Cache/Repository.php(418): Illuminate\\Cache\\Repository->forever()\n#6 /var/www/snipe-it/vendor/laravel/ in /var/www/snipe-it/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php on line 133

第一案
Nginxのみならず、Apacheで環境を作った。
同様にだめ

第二案
CentOSでインストールしている記事があったので、これを参考にphpのバージョンを5.4でインストールした。
https://www.vultr.com/docs/how-to-install-snipe-it-on-centos-7
Composerでのインストールの際に7よりも上じゃないとだめですって怒られた。
7に上げるとまた同じエラーを吐く。

第三案
Ubuntuではrootユーザで環境構築してはいけないらしい。
ソースは思い出し中。
(解説サイトにも非rootユーザって書いてあることが多々ある)
CentOSでも別ユーザを作ってインストールし直してみた。
変わらず。
あとから思えば、この作ったユーザーをGroupに入れないといけなかったのかもしれない。

第四案
どこかでyum updateを行ったら、/bootの容量が足りなくて更新できていなかった。
カーネルを最新バージョン2つだけ残して再起動。
とりあえず更新はできたが、特に変わらず。
https://www.teradas.net/archives/13922/

第五案
https://www.gitmemory.com/issue/snipe/snipe-it/8632/730567731
これに基づいて、snipeitのディレクトリごとオーナーを変えた。
それでも変わらず。
また、念の為ApacheのUserとGroupも確認。
大丈夫そう。
mod-phpとphp-fpmの競合はなさそう。
yum list installed | grep phpでmod-phpは出てこないが、phpinfo()では確認できたので、動いていそう。
同様に、php-fpmは確認できなかったので大丈夫と判断。

第六案
https://github.com/snipe/snipe-it/issues/9045
これをみて、現状そのままinstall.shを走らせた。
(たしかComposerのところでパッケージが足りないとか言われた気がする。)
だめ。
以上、挫折までの工程。
Ubuntuでやったら簡単にできちゃって、なおのこと泣きそう。

最終更新:2021/08/20