書くこと
- 長い前置きと言い訳
- AWSにアカウント登録する
- EC2のインスタンスを作成する
- SSHを使用してEC2に接続する
- VScodeでEC2のコードを編集う出来るようにする
- RDSにてDBを作成し、EC2からRDSに接続する
- RDSをphpMyAdminからも操作出来るようにする
- EC2にLaravelの環境を作る
- composer update
- 500 ERROR
- ストリームを開けませんでした:許可が拒否されました
- No application encryption key has been specified.
- file_put_contents()
長い前置きと言い訳
これまで発信というものをして来ませんでした。
今も積極的にするつもりはないのですが、今日1日あまりにはまったので備忘録として壁打ち記事を書いてみます。
対象者は自分なので皆さまに有益な情報は全くないかもしれません。
そして記事を書くつもりなくあれこれ操作したのでまとまっていない・情報が足りない部分もあると思われますが、記事1ページ目としてご容赦願いたい。
あまり詰まらなかった箇所はサクサク箇条書きしていくつもり。
AWSにアカウント登録する
実は登録したのは3ヵ月ほど前に遡る。
正直何も覚えていないくらいスムーズに登録したと思う。
EC2のインスタンスを作成する
3ヵ月前の自分が どこのリージョンにインスタンスを立てたか まったく思い出せない。
久々にやる気になって当然東京(ap-northeast-1)だろうとみてみるも、作成したはずのインスタンスが見つからず、結局立て直し後にオハイオ(us-east-2)に建てたことに気付く。
公式のチュートリアルドキュメントが大変わかりやすかった。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html
SSHを使用してEC2に接続する
ここで大変はまる。ターミナルはMobaXtermを使用して接続する。
・AWSコンソールのIAMにて設定したユーザ名が使えるものと思い込む。(実際は ec2-user)
・MobaXtermはPuTTYであるためプライベートキーを返還する必要があることを知らなかった。
公式のドキュメントにあんなに丁寧に書いてあるにもかかわらず目が滑ったためである。
いずれも懇切丁寧に記載されている。
ユーザ名も変えられました。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/putty.html
VScodeでEC2のコードを編集出来るようにする
SSH FS というプラグインを使用しました。
設定がびっくりするくらい簡単で、setting.jsonから下記をサクッと追記するだけです。
"sshfs.configs": [
{
"name":"VScodedeで表示するわかりやすい名前",
"root": "/var/www/html",
"host": "Elastic IP",
"port": 22,
"username": "ec2-user もしくは変更したユーザ名",
"privateKeyPath": "C:/プライベートキーのパス",
}
],
RDSにてDBを作成し、EC2からRDSに接続する
コンソールからDBを作成。余裕こいていたらはまりました。
VPNの設定を変更したためにはまった方の記事を読んだ覚えがあったので諸々defaultで設定したのですが、これがよくありませんでした。
当然ですが、EC2と同じセキュリティグループでなかったために
ERROR 2002 (HY000): Can't connect to MySQL server on 'hoge.rds.amazonaws.com'
流れで作業するって怖いですね。
RDSをphpMyAdminからも操作出来るように
VScodeから設定変更大変良き~便利!と調子に乗っていたら無慈悲にERRORが襲ってきました。
「設定ファイルのパーミッションが正しくありません。誰でも書き込み可能になっています!」
mampの場合はアドレス直打ちするとよいとあったのでmampじゃないけれども念のため試す。がしかし通らない。。
少し前の記事ですが こちら を参考にパーミッションの設定を755に変更したところすんなり通りました。ありがたいです。
【参考にさせて頂きました】
https://hacknote.jp/archives/40002/
EC2にLaravelの環境を作る
はまりポイント1 : composer update
下記のようなエラー。
The following exception is caused by a lack of memory or swap, or not having swap configured Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
こちらにたどり着き、php.iniの設定によるメモリ不足とswapが000であることが原因と推定。
こちらを参考に設定変更し、無事アップデート出来ました。
はまりポイント2 : 500 ERROR
無事入れられたと思った矢先にこれです。
こちら を参考に確認したところ.envがsampleしかありませんでした。
はまりポイント3 : ストリームを開けませんでした:許可が拒否されました
logs/laravel.log が開けんとのことで、laravel.logというからファイルを作ってみたらエラー内容がポイント4に移行しました。
はまりポイント4 : No application encryption key has been specified.
こちら を参考に設定するとまたエラー内容が5に移行しました。
ちゃんと内容変わってるので一つ一つクリアしていってる感が謎に楽しくなってきています。
はまりポイント5 : file_put_contents()
file_put_contents(/var/www/html/Laravel/storage/framework/views/a98899461fa7df96140905779c36af262be64fce.php): failed to open stream: Permission denied
こちら を参考にし下記のパーミッションを変更。ユーザー権限だとApacheが一時ファイルを書き出せないためのようです。
chmod 757 bootstrap/cache
chmod 757 storage/app/public
chmod 757 storage/framework/cache
chmod 757 storage/framework/sessions
chmod 757 storage/framework/views
chmod 757 storage/logs
5つ乗り越えた先に…
ようやくLaravelのindexを表示させることができました…!!!
正直あのシンプルな画面が出てきたときは「え?もうエラーいいんですか?」みたいな謎の心境になりましたが、ようやく先に進めるので素直に喜びたいと思います。
【参考にさせて頂きました】
https://qiita.com/PKunito/items/31445d4475d4e18fe4d7
おわりに
ここまでまとめていると如何にインフラ系の知識が無いかがよくわかりますね。
そしてふわふわ構築しているというか、取り合えず手を動かしてる感を改めて感しました。自分の1日を振り返るってとても重要ですね。
色々なサイトを見すぎて参考になったサイトすべてを記載できている自信がありません。
まだログイン機能なども残っていますし簡単なアプリも実装しながらlaravelの特徴も学んでいきたいので、またこうして壁打ち記事を書くつもりで勉強します。
完全に自分用の内容となっていますが、同じERRORに遭遇した方の役に少しでもなれたら嬉しいです。