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
                        
sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --reload
                        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
                        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: @@@@@
                        
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でやったら簡単にできちゃって、なおのこと泣きそう。
                    
