0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

production.ERROR: Database (/var/www/releases/1/backend/database/data base.sqlite) does not exist. 解決方法

Last updated at Posted at 2022-03-08

初めに

この記事では、deployerを使った手動デプロイで発生したmigrateのエラーに関してご紹介していきます!

エラー

Dockerコンテナから手動デプロイを実行
→migrateの実行時に「sqliteが存在しない」とエラーで指摘。

 [Deployer\Exception\RuntimeException (128)]                                            
  The command "cd /var/www/ && (/usr/bin/git clone -b "main"  --recursive  https://gith  
  ub.com/yu00212/laravel-zaikokanri.git /var/www//releases/1 2>&1)" failed.              
                                                                                         
  Exit Code: 128 (Invalid exit argument)                                                 
                                                                                         
  Host Name: LaravelWeb1                                                                 
                                                                                         
  ================                                                                       
  Cloning into '/var/www//releases/1'...                                                 
  fatal: could not read Username for 'https://github.com': No such device or address 

解決手順

今回の環境ではRDSでMySQLをつかっていますが、エラーではsqliteに関して指摘されました。
エラーの内容から、.envもしくは/config/database.phpでsqliteの指定をしている可能性があると考えたので、EC2上に配置されているファイルを確認してみます。

確認したファイルのフルパスはこちらです。
/var/www/アプリディレクトリ/.env
/var/www/アプリディレクトリ/config/database.php

[ec2-user@ip-172-31-33-88 backend]$ cat .env

DB_CONNECTION=mysql
DB_HOST=????
DB_PORT=????
DB_DATABASE=????
DB_USERNAME=????
DB_PASSWORD=????
[ec2-user@ip-172-31-33-88 config]$ cat database.php

'default' => env('DB_CONNECTION', 'mysql'),

確認しましたが問題なくmysqlの設定がされていますね。。。

エラー文をもう一度読んでみると、/var/www//releases/1'...のパスが気になります。
クローンしたのは/var/www/アプリディレクトリ/のはず?

メンターに相談したところ、どうやら.envを他のディレクトリに配置しないといけないようです。
EC2でLaravelを使っている場合、EC2上の/var/www/下には/sharedというディレクトリが作成されています。
ここに.envを配置させてあげる必要があるとのことなのでさっそく実施!

[ec2-user@ip-172-31-33-88 www]$ ls #sharedディレクトリありますね!
cgi-bin  html  laravel-zaikokanri  release  releases  sample  shared

[ec2-user@ip-172-31-33-88 www]$ chmod 777 shared #書き込みできるように権限の変更

[ec2-user@ip-172-31-33-88 www]$ ls #権限が変更できてれば、sharedが紫文字から緑に変わってます
cgi-bin  html  laravel-zaikokanri  release  releases  sample  shared

[ec2-user@ip-172-31-33-88 www]$ cd shared

[ec2-user@ip-172-31-33-88 shared]$ touch .env
[ec2-user@ip-172-31-33-88 shared]$ vi .env #アプリディレクトリと同じ内容で.envを編集

では、コンテナから再度デプロイしてみます!

root@5dfb0b5f66db:/work# ./vendor/bin/dep deploy LaravelWeb1 -vvv
・
・
・
Successfully deployed!

デプロイが成功しました!
.envの配置場所が違っているということには中々気づきずらいかと思うので、是非参考になれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?