SnipeITの構築(失敗例)
SnipeITを構築しようとしたら、最終的に行き詰まってしまった。
瑕疵などあれば、教えていただけると助かります。
できた事例はこちらから。
目次
- 構築環境
- CentOS7のインストール
- Nginxのインストール
- PHPのインストール
- MySQLのインストール
- SnipeITのインストール
- Nginxの構成変更
- 起きた問題と対処
構築環境
- 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
- SnipeIT version 5.1.8
Composer version 2.1.5
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でやったら簡単にできちゃって、なおのこと泣きそう。