想ひ出29: AWS/Elastic Beanstalkに入門する/2
おはようございます、moqrinです。
前回の続きです。
今回のテーマはこちらです。
ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する
以下、コンソールベースでゴシゴシ作成するパターンと、コマンドで叩いて作成するパターンで進めます。(途中、ズルしてコンソールも使います。。)
目次
1. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(コンソールベース)
2. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(EB CLIベース)
3. 宿題
1. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(コンソールベース)
それでは進めていきます。なお、RDSにMySQLのDBがあることが前提です。
① アプリケーションの作成
② PHPで環境を作成
③ カスタム設定
ネットワークをカスタムVPCにします。
色々便利なので、キーペアを設定しておきましょう。
環境変数の追加やドキュメントルートを設定しておきましょう。
そしたら作成します。
思いっきりエラー出てますが、無視していいです。
④ セキュリティグループの編集
RDSへ接続するセキュリティグループ(以下SG)にEBのSGを追加します。
⑤ プロジェクト以下、public/index.phpに接続の情報を追記する
DB接続がちゃんと出来ているか確認します。
⑥vender以外の内容をzipにしてアップロードする
※ なお、ディレクトリをそのままzipするとパスがおかしくなっちゃうので注意。
OKね.
2. ElasticBeanstalkでLaravelアプリケーションをRDSと接続して設定する(EB CLIベース)
次は、.ebextensionsを利用してみたいため、Migrationできるようなアプリケーションで実践します。
こちらを素材として対応させて頂きます。
なお、RDSでMySQLが起動していること、EB CLIをインストールしていることが前提です。
① 環境変数やドキュメントルート設定のファイルを作成
ソースルートで.ebextensionsディレクトリと設定ファイルを作成しましょう。
mkdir .ebextensions && touch {environmentvariables,php-settings}.config
ファイルを編集しましょう。
# vim .ebextensions/environmentvariables.config
option_settings:
- option_name: DB_USERNAME
value: YourDBUserName
- option_name: DB_PASSWORD
value: YourDBPassword
- option_name: DB_HOST
value: YourDBEndPointURL
- option_name: DB_DATABASE
value: YourDBName
# vim .ebextensions/php-settings.config
option_settings:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
Migrationコマンドを叩くmigration.configファイルを作成しましょう。
# vim .ebextensions/migration.config container_commands: key generate: command: "php artisan key:generate" migration: command: "php artisan migrate"
そのままプロジェクトディレクトリでPHP7.2のプラットフォームでEBアプリケーションを作成しましょう。
eb init LaravelApps -p php-7.2 --region ap-northeast-1 --keyname YOUR_KEY_NAME
カスタムVPC内にシングル構成、publicIPを持ったt2.microインスタンスで環境を作成します。
eb create PassportApp --vpc.id YOUR_VPC_ID --vpc.publicip --vpc.ec2subnets YOUR_PUBLIC_SUBNET_ID -i t2.micro --vpc.dbsubnets YOUR_DB_SUBNET_ID --single
環境が作成されたら、RDSへの接続を許可するSGに、作成されたインスタンスに付与されたSGを追加します。(環境がエラーだって怒ってますが無視します。)
(eb deployでもいいのだけども)とりあえず、Vender以外のソースをzipにしてアップロードします。
はい、成功
じゃ見に行きましょう。ちなみに、飛び先は404なので、/passportsを飛び先につけます。
/passports/createで新規作成です。作成します。
はい、ちゃんとDB接続もうまく動いているっぽいですね。
何かあったらこの辺を確認します。
tail -f /var/log/eb-activity.log
クリーンアップする際は、RDSへのSGからEBのSGを削除してから環境を削除 -> アプリケーション削除。
eb terminate
3. 宿題
色々と雑。。
CodeCommitとの連携とかやってみる。
Flaskアプリケーションでの対応が何かうまくいかなかったので再度トライするー。
4. オマケ: EB CLIのインストール
brewでのインストールがうまくいかず。。。
brew update brew install awsebcli
pipで対応してもエラー出まくりで、何だヨこれは・・・と困惑していた。。 これでうまくいった。以前のバージョンが邪魔してたっぽい。
pip uninstall awsebcli pip3 uninstall awsebcli pip3 install awsebcli
How to fix eb command not found – Mac Users
http://www.derricksherrill.com/aws/eb-command-not-found/
参考:
Elastic Beanstalk への Laravel アプリケーションのデプロイ
設定ファイル (.ebextensions) による高度な環境のカスタマイズ
Laravel 5.6 CRUD tutorial with example