4
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 3 years have passed since last update.

AWSのEC2へのデプロイ②(必要なパッケージのインストール)

Last updated at Posted at 2021-02-19

AWSのEC2へのデプロイをしたいと思い備忘録のために手順を記録します。
初学者の為、ご指摘等ありましたらご連絡いただければ幸いです。

前回の記事はこちら
AWSのEC2へのデプロイ①(EC2インスタンス作成からログインまで)

前回の内容は言語関係ないのですが今回から必要なパッケージが言語によって異なるのでご注意ください。

はじめに

私自身この手順で無事にデプロイができましたが、途中でエラーが出たことによりいろいろな記事を参考にさせて頂きました。
この場を借りて御礼申し上げます。

そのため、私に知識がないばかりに私の環境に必要のない操作もあるかもしれません。
初学者のためご承知おきください。
お気づきの点ございましたらご連絡いただければとても喜びます。

環境

Version
PHP 7.4.14
Laravel 8.24.0
mysql 8.0.23
docker 20.10.2
docker-compose 1.27.4

EC2ではAmazon Linux 2を利用しています。

前提

  • AWSのアカウントを作成済みである
  • EC2のインスタンス作成済みでsshにログインできる

EC2インスタンスに接続

1.AWSのEC2の画面で下記画像のようにインスタンスから接続を押下します。

スクリーンショット 2021-02-13 22.40.27.png

2.下記画像のようにSSHクライアントを押下後、一番下の文字列をコピーします。

スクリーンショット 2021-02-13 22.45.31.png

3.コピーしたssh -i ~をターミナルで入力すると

ターミナル
Are you sure you want to continue connecting (yes/no/[fingerprint])?

と出るのでyesと入力します。

4.下記のような内容が出力されていればOKです。

ターミナル
[ec2-user@ip-×××-××-××-××× ~]$

gitのインストール

コマンドは全てEC2インスタンス内で行います。

1.下記コマンドでyumをupdateします。

ターミナル
$ sudo yum update -y

2.下記コマンドでgitをインストールします。

ターミナル
$ sudo yum install git

3.下記コマンドご自身のユーザー名とパスワードを設定します。

ターミナル
$ git config --global user.name [ユーザー名]
$ git config --global user.email [メールアドレス]

4.下記コマンドで確認します。

ターミナル
$ git config --list | grep user

5.下記のように出ていればOKです。

ターミナル
user.name=[ユーザー名]
user.email=[メールアドレス]

Dockerのインストール

コマンドは全てEC2インスタンス内で行います。
Dockerのインストールは公式のAmazonECSにおけるDockerの基本で確認しました。

1.下記コマンドで最新のDocker Engineパッケージをインストールします(Amazon Linux 2用のコマンドです。)

ターミナル
sudo amazon-linux-extras install docker

2.下記コマンドでDockerサービスを開始します。

ターミナル
sudo service docker start

3.下記コマンドでec2-userdockerグループに追加するとsudoコマンドを使用せずにDockerコマンドを実行できます。

ターミナル
sudo usermod -a -G docker ec2-user

4.一旦EC2インスタンスからログアウト(exit)して再ログインします。
※これをしなくて私はエラーになりましたので大事です。

5.下記コマンドでec2-usersudoコマンドを使用せずにDockerコマンドを実行できることを確認します。

ターミナル
docker info

下記のようなメッセージが出ればOKです。

ターミナル
Client:
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
//省略

docker-composeのインストール

参考記事:M1 Mac + Laravel + Docker + AWS でポートフォリオを作るまで[初心者][未経験]

コマンドは全てEC2インスタンス内で行います。

1.下記コマンドでsuに入ります。

ターミナル
sudo -i

2.下記コマンドでcomposeをインストールします。

ターミナル
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

3.下記コマンドで実行権限を付与します。

ターミナル
chmod +x /usr/local/bin/docker-compose

4.exitをして抜けます。

ターミナル
exit

5.下記コマンドでdocker-composeがインストールされているか確認します。

ターミナル
docker-compose --version

下記のようにバージョンが出てくればOKです。

ターミナル
docker-compose version 1.27.4, build 40524192

参考にした先ほどの記事でdocker-compose.ymlのバージョンを書き換えました。

docker-compose.yml
version: "3.3" 変更
services:
  app:
    build: ./infra/php
    volumes:
      - ./backend:/work
//省略

EC2インスタンス内でDockerを起動

コマンドは全てEC2インスタンス内で行います。

1.下記コマンドでgitからcloneします。

ターミナル
git clone [githubのURL]

2.下記コマンドでフォルダがあるか確認します。

ターミナル
ls

3.下記コマンドでディレクトリを移動します。

ターミナル
cd [ディレクトリ名]

4.下記コマンドでdockerコンテナを立ち上げます。
少し長いメッセージが出ます。

ターミナル
docker-compose up -d

下記のようなメッセージが出ればOKです。

ターミナル
Creating ×××_app_1      ... done
Creating ×××_web_1      ... done
Creating ×××_db_1       ... done
Creating phpmyadmin         ... done

5.下記コマンドでステータスを確認します。

ターミナル
docker-compose ps

Stateが全てupになっていればOKです。

PHPのインストール

参考記事:AWS EC2 AmazonLinux2 PHPをインストールする

コマンドは全てEC2インスタンス内で行います。

1.下記コマンドでインストールリポジトリを追加します。

ターミナル
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
ターミナル
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

2.下記コマンドで既存のPHPパッケージを削除します。(削除するものがなくても問題ないです)

ターミナル
sudo yum remove php

3.下記コマンドでPHPのパッケージをインストールします。

ターミナル
sudo yum install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt

4.下記コマンドでバージョンを指定してインストールします。
途中で[y/d/N]とインストールしてもいいかの選択が出るのでyを押しEnterで進めます。

ターミナル
sudo amazon-linux-extras install php7.4

5.下記コマンドでその他の必要なパッケージをインストールします。
こちらも途中で[y/d/N]とインストールしてもいいかの選択が出るのでyを押しEnterで進めます。

ターミナル
sudo yum install --enablerepo=remi,amzn2extra-php7.4 php-xml php-mbstring

6.下記コマンドでyumにてインストールされたphpと名前がつくパッケージの一覧を表示し確認します。

ターミナル
yum list installed | grep php

下記のように表示されればOKです。

ターミナル
php-cli.x86_64                  7.4.7-1.amzn2                 @amzn2extra-php7.4
php-common.x86_64               7.4.7-1.amzn2                 @amzn2extra-php7.4
php-fpm.x86_64                  7.4.7-1.amzn2                 @amzn2extra-php7.4
php-json.x86_64                 7.4.7-1.amzn2                 @amzn2extra-php7.4
php-mbstring.x86_64             7.4.7-1.amzn2                 @amzn2extra-php7.4
php-mysqlnd.x86_64              7.4.7-1.amzn2                 @amzn2extra-php7.4
php-pdo.x86_64                  7.4.7-1.amzn2                 @amzn2extra-php7.4
php-xml.x86_64                  7.4.7-1.amzn2                 @amzn2extra-php7.4

7.無事に成功すれば下記コマンドでバージョンが表示されます。

ターミナル
php --version

MariaDBのインストール

コマンドは全てEC2インスタンス内で行います。

1.下記コマンドでMariaDBのインストールをします。

ターミナル
sudo yum -y install mysql56-server mysql56-devel mysql56 mariadb-server mysql-devel

2.下記コマンドでデータベースを起動します。

ターミナル
sudo systemctl start mariadb

下記コマンドで起動できたかを確認します。

ターミナル
sudo systemctl status mariadb

緑の文字でactive (running)と出ていればOKです。

3.データベースのrootパスワードを設定します。

まずは下記のコマンドを入力します。

ターミナル
sudo /usr/bin/mysql_secure_installation

次からどんどん質問が出てくるので答えていきます。

Enter current password for root (enter for none):→Enterキーを押す。
Set root password? [Y/n]→「Y」を入力してEnterキーを押す。
New password:→ご自身で決めたパスワードを入力する。(画面には表示されないけど入力できています)
Re-enter new password:→もう1度ご自身で決めたパスワードを入力する。
Remove anonymous users? [Y/n]→「Y」を入力してEnterキーを押す。
Disallow root login remotely? [Y/n]→「Y」を入力してEnterキーを押す。
Remove test database and access to it? [Y/n]→「Y」を入力してEnterキーを押す。
Reload privilege tables now? [Y/n]→「Y」を入力してEnterキーを押す。

4.データベースに接続を確認します。

下記コマンドでデータベースに接続できるか確認します。

ターミナル
mysql -u root -p

パスワードを求められるので入力しEnterキーを押します。

ターミナル
MariaDB [(none)]>

上記のように表示されれば接続できています。
抜け出したいときはexitで抜け出せます。

Laravel環境設定

参考記事:AWSにEC2上にdockerを使用したlaravelをデプロイ④(gitクローン〜デプロイ、マイグレーション)

コマンドは全てEC2インスタンス内で行います。

1.下記コマンドでコンテナ内に入ります。

ターミナル
docker-compose exec app bash

2.下記コマンドで.envファイルを作成します。
.envファイルはgitリポジトリにpushされないためです。

ターミナル
cp .env.example .env

3.下記コマンドでcomposerをインストールします。

ターミナル
composer install

4.下記コマンドでAPP_KEYを発行します。

ターミナル
php artisan key:generate

5.下記コマンドで権限を変更します。

ターミナル
chmod 777 storage/logs vendor
chmod 777 storage/framework/views
chmod 777 storage/framework/sessions

6.画像投稿がある場合は下記コマンドも必要みたいです。

ターミナル
php artisan storage:link
chown -R www-data:root .

7.下記コマンドでマイグレーションを実行します。

ターミナル
php artisan migrate
php aritsan db:seed

以上で無事にデプロイ ができました。

ただ、現在S3への画像の保存ができない状態なので解決出来次第修正致します。

4
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
4
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?