AWSのLarave環境構築(Laraveアップロードの土台作りまで)

Laravel開発環境構築

VPC設定

  • vpc作成
  • パブリックサブネットとプライベートサブネットを作成

EC2設定

  • EC2インスタンス作成
  • EC2へSSH接続
  • sudo yum update -yyumを最新状態にする
  • sudo yum -y install httpdでアパッチをインストール
  • sudo systemctl start httpd.serviceでアパッチ起動
  • sudo systemctl status httpd.serviceで起動しているかの確認
  • ps -axuでも確認可能。この時は/usr/sbin/httpdが表示されているかも確認。 上記で確認すると大量に結果が表示される。 こういった時は絞り込みをする。 ps - axu | grep <検索文字> 例)ps -axu | grep httpd
  • sudo systemctl enable httpd.serviceこれで、サーバーを起動した時に自動的にアパッチも起動する様に設定(これをしないと、サーバーが停止すると再度起動しても、アパッチは停止したままで、都度起動が必要な状態のままになる。 自動起動設定が機能したか確認するためにはsudo systemctl is-enabled httpd.serviceを入力。これでenabledが表示されればOK

ファイアーウォール設定

上記でアパッチをインストールしてもこれだけではwebページへアクセス出来ない。それはアパッチをインストールしただけでは通信がファイアーウォールによって遮断される為。 その為、現状はEC2の「パブリック IPv4 アドレス」を開いても一向に開かれず、読み込み画面がぐるぐるするだけ。 これを解除するために、EC2インスタンスの該当「セキュリティグループ」を確認する。 インバウンドのルールにタイプSSH、ポート範囲22などと記載されている場合、ssh接続以外では接続できない。その為、httpアクセスが出来る様に設定を変える。 インバウンドのルールにHTTPを追加し、ソースの部分は「Anywhere-IPv4」にすると接続可能に。

手順

  • EC2のセキュリティグループで作成したEC2インスタンスを選択し、インバウンドルールの編集を行う。 タイプ : HTTP, ソース : myAnywher-IPv4を選択する。 これで設定OK

Elastic IPアドレスを固定する。

これを設定しないとインスタンスを停止するたびにアドレスが変わっていない。 但し、ElasticIPアドレスを設定したインスタンスを停止すると課金される! 使っている間はインスタンスは起動しておき、インスタンスを停止する場合、ElasticIPアドレスは開放し、さらに関連付けの解除をする必要あり!!

RDSの設定

  • RDS設定の前に推奨されているプライベートサブネットを2つ作成する。 既にVPCの設定で1つプライベートサブネットの作成をしているので、追加で1つ作成する。
  • DB用のEC2のセキュリティグループを1つ作る
  • RDSでサブネットグループを作成する
  • RDSでパラメーターグループを作成する
  • RDSでオプショングループを設定する。
  • RDSデータベースを作成する。
  • EC2にssh接続する。
  • sudo yum -y install mysqlmysqlをインストールする
  • RDSを作成したらEC2のElasticIPアドレスを使用してssh接続をターミナルから行う。 *RDSのデータベースから作成したDBのエンドポイントを確認する。 ターミナルに戻ってmysql -h <エンドポイント> -u root -pを実行し、RDSを作成した際のパスワードを入力するとmysqlにログイン出来る。

-h : エンドポイントを指定している -u : ログインするユーザーを指定している(rootはマスターユーザーの事RDS作成時に自分でここは設定している) -p : これをする事でこの後にパスワード入力が求められる。これをしないと画面上にパスワードが表示される形でログインする事になる

Laravel構築

上記までのAWS設定完了後、LaravelのソースをAWSへアップロードしていく。

SSH接続と公開鍵認証について

SSH接続

公開鍵認証とは

  • ユーザー名とパスワードでの認証と比べセキュリティが高い
  • 秘密鍵と公開鍵を用いた暗号方式

公開鍵はサーバーが保有する。そして、秘密鍵保有しているユーザーだけがログイン出来る。

仕組み

大きく3つの概念がある

  • 公開鍵 : 誰でも取得できるもの

  • 暗号文 : 公開鍵認証の際に認証に使用する暗号化されたデータ

  • 秘密鍵 : 公開鍵認証時に認証に使用する暗号文を複合化出来るもの

  • 上記を使用し、認証(ログイン)したいユーザーは公開鍵にアクセスする。
  • 暗号文が送られるのでそれを秘密鍵で複合化する これが公開鍵認証の流れである。

手順

  • EC2作成時に.pemファイルを作成する。これが秘密鍵に該当する。
  • この秘密鍵を使用して認証を行う。
// 秘密鍵の権限変更
chmod 600 ~/〇〇/himitsu_key.pem


// ssh接続
ssh -i /Users/yourname/〇〇/himitsu_key.pem ec2-user@EC2のパブリックIPv4アドレス

Git管理の仕方

基本的な流れ

  1. masterブランチからclone 又はブランチを切る。
  2. 自身のローカル環境にてcloneしたブランチをdevelopと名前をつける(ここの名前は任意で変更可能)
  3. さらに2のdevelopブランチを作業ブランチ用の名前に変更しブランチを切る(例:feature/update_imageなど)
  4. 3で切ったブランチにて自身の開発タスクを進める。
  5. 4の開発タスクが完了したら、まず、ローカルで自身の開発ブランチ(feature/update_imageブランチ)をmasterブランチから切ったdevelopブランチとmargeする。
  6. 更に自身の開発ブランチ(feature/update_imate)をリモートにpushする。
  7. ここからは開発責任者が、pushされた開発ブランチをリモートのmasterブランチへmargeする。

ここまでで一旦一区切り。

さらに作業が入った場合は

  1. 7で開発責任者によってmargeされた最新のmasterブランチをローカルにfetch? or clone? する。
  2. 最新状態のmasterブランチをローカルのdevelopブランチにmargeする。
  3. 最新状態になったdevelopからブランチを切って開発用ブランチを切る
  4. 後は4に戻り、繰り返し作業する。