2020年4月30日にAWS Elastic Beanstalk で Amazon Linux 2 ベースの Node.js、PHP、Go、および Ruby プラットフォームの一般提供を発表とアナウンスがありました。
さっそくやってみようと思います。
ElasticBeanstalkの設定
ElasticBeanstalkのコンソールから CreateApplication をクリックします。
名前は好きな名前で作成します。(これがEC2のインスタンスの名前にもなります。)
プラットフォームを今回はPHPを選択すると、AmazonLinux2が選択出来るのがわかると思います。
今回はPHP7.4で作成します。
それでアプリケーションの作成をクリックすると、作成が始まります。
この操作は少し時間がかかります。
待ってる間に小話
webサーバーはNginxでした。
今回PHPを選択したので、どのような拡張機能が入っているかを調べました。(後ほどsshの方法を解説します。
(長いので折りたたみました)
これをみると、かなりの数の拡張機能が入っています。
Laravelの動作環境も満たしているので、これだけでLaravel環境が作れますね。
Laravelの環境を作るのにとても苦労した経験があるので、これはありがたい。
Laravelのデプロイとインストールは公式ドキュメントがあるので参考にしてください。 => Elastic Beanstalk への Laravel アプリケーションのデプロイ
動作確認
作成が完了すると、以下のような画面になると思います。赤丸のところのURLをクリックしてサンプルアプリケーションを確認できます。
アプリケーションのデプロイ
取りあえずphpinfoをデプロイしてみようと思います。
自分のローカルマシンでphpinofo.php
を作成します。
ファイル名はなんでも大丈夫です。
$ echo "<?php phpinfo();?>" >phpinfo.php $ zip sampleapp1.zip phpinfo.php adding: phpinfo.php (stored 0%)
アップロードとデプロイをクリックします
先程作成したファイルを選択します。
選択したらデプロイをクリック
URL/phpinfo.php
にアクセスすると、表示されます。
sshしてみる。
サーバーを自動で作成してくれても、やはりsshはしたい。
というわけで、sshしてみます。
コンソールの 設定 > セキュリティ の編集をおして、sshを選択します。
選択して、適用をおすと、このような注意書きが出ますがこれは「鍵つけるときに新しくインスタンス作るよ〜」ということを言っています。
確認を押します。
そうしたら新しくインスタンスが生成され、前のやつはなくなります。
EIPも新しいのが生成されます。
デプロイしたアプリは消えないので安心してください。
次はmac側で設定します。
ebコマンドを使えるようにpipでインストールする方法もあるのですが、パスを通したりするのでめんどくさいので、brewでインストールします。
$ brew install awsebcli
終わったら下記コマンドでインストールできたか確認します。
eb --version EB CLI 3.18.1 (Python 3.8.2)
sshの設定をします。
$ eb init --interactive
対話形式なので読みながら選択すれば大丈夫かと思います。
$ eb ssh --setup
これでセットアップします。
こちらも対話形式なので問題ないかと思います。
sshするときは下記コマンドです
$ eb ssh
注意事項としては、鍵は~/.ssh
内にないと怒られます。
おわりに
webアプリを作って公開したいけど、インフラの設定をするのがめんどくさい…
そんなときにすごく活躍するサービスだと思います。
ドキュメントルートを変更するのもElasticBeanstalk上のコンソールで出来るのでsshする必要はあまりないかもしれません。
他にもコンソールで設定出来る項目はたくさんありますので、とても活躍出来ると思います