EC2にミドルウェアを導入する(Apache 2.4, PHP 7.4, MySQL 8(mysql_clientのみ))

Amazon Linux2のEC2に以下の対象ミドルウェアとCodeDeploy Agentを導入する手順を記載する。

【導入するミドルウェア
Apache 2.4
PHP 7.4
MySQL 8(mysql_clientのみ)※DB自体はRDSを使用しMySQL8を設定する

【その他インストール】
・CodeDeploy Agent

それではコマンド表示結果とともに記載していきます。

作業手順

対象サーバ(EC2)に対して以下設定を施す

1.ミドルウェアインストール

1-1. Apache 2.4インストール

インストールバージョンの確認

$ sudo yum info httpd
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
利用可能なパッケージ
名前                : httpd
アーキテクチャー    : x86_64
バージョン          : 2.4.41
リリース            : 1.amzn2.0.1
容量                : 1.3 M
リポジトリー        : amzn2-core/2/x86_64
要約                : Apache HTTP Server
URL                 : https://httpd.apache.org/
ライセンス          : ASL 2.0
説明                : The Apache HTTP Server is a powerful, efficient, and extensible
                    : web server.

インストールを実施

# yum -y install httpd
(略)
インストール:
  httpd.x86_64 0:2.4.41-1.amzn2.0.1                                                                                       

依存性関連をインストールしました:
  apr.x86_64 0:1.6.3-5.amzn2.0.2                               apr-util.x86_64 0:1.6.1-5.amzn2.0.2                        
  apr-util-bdb.x86_64 0:1.6.1-5.amzn2.0.2                      generic-logos-httpd.noarch 0:18.0.0-4.amzn2                
  httpd-filesystem.noarch 0:2.4.41-1.amzn2.0.1                 httpd-tools.x86_64 0:2.4.41-1.amzn2.0.1                    
  mailcap.noarch 0:2.1.41-2.amzn2                              mod_http2.x86_64 0:1.15.3-2.amzn2                          

完了しました!

パッケージがインストールされていることを確認

# yum list installed | grep httpd
generic-logos-httpd.noarch            18.0.0-4.amzn2                 @amzn2-core
httpd.x86_64                          2.4.41-1.amzn2.0.1             @amzn2-core
httpd-filesystem.noarch               2.4.41-1.amzn2.0.1             @amzn2-core
httpd-tools.x86_64                    2.4.41-1.amzn2.0.1             @amzn2-core

バージョン確認

# httpd -version
Server version: Apache/2.4.41 ()
Server built:   Oct 22 2019 22:59:04

自動起動の設定をONにする

# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# systemctl is-enabled httpd
Enabled

Apache httpd を起動

# systemctl start httpd.service

Apache httpd の状態確認

# systemctl status httpd.service

一時的にオフィスからのhttpアクセスを許可しブラウザにて対象サーバのGrobalIP(EIP)での接続確認
http://GrobalIPアドレス

1-2. PHP 7.4インストール

Extras Libraryで利用可能なトピック、php7.4のトピック情報の確認

$ amazon-linux-extras
(略)
42  php7.4                   available    [ =stable ]
$ amazon-linux-extras info php7.4
NOTE: The livepatch extra is in public preview, not meant for production use

php7.4 recommends php-cli                    # yum install php-cli
php7.4 recommends php-pdo                    # yum install php-pdo
php7.4 recommends php-fpm                    # yum install php-fpm
php7.4 recommends php-json                   # yum install php-json
php7.4 recommends php-mysqlnd                # yum install php-mysqlnd

php7.4のトピックをインストール

$ sudo amazon-linux-extras install php7.4

php7.4がインストールされたかを確認
→ こんな風にenabledに変わっていればOK

$ amazon-linux-extras
(略)
42  php7.4=latest            enabled      [ =stable ]

PHPのバージョン確認

$ php -v
PHP 7.4.4 (cli) (built: Mar 27 2020 18:05:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

拡張モジュールの確認 → @マークがついているものがインストールされている拡張モジュール

$ sudo yum list php* | grep amzn2extra-php7.4
php-cli.x86_64                           7.4.4-1.amzn2                 @amzn2extra-php7.4
php-common.x86_64                        7.4.4-1.amzn2                 @amzn2extra-php7.4
php-fpm.x86_64                           7.4.4-1.amzn2                 @amzn2extra-php7.4
php-json.x86_64                          7.4.4-1.amzn2                 @amzn2extra-php7.4
php-mysqlnd.x86_64                       7.4.4-1.amzn2                 @amzn2extra-php7.4
php-pdo.x86_64                           7.4.4-1.amzn2                 @amzn2extra-php7.4
php.x86_64                               7.4.4-1.amzn2                 amzn2extra-php7.4

必要なものをインストール

拡張モジュール一覧は以下
https://www.php.net/manual/en/extensions.alphabetical.php

$ sudo yum install -y php-bcmath php-xml php-gd php-intl php-opcache php-mbstring

(略)
インストール:
  php-bcmath.x86_64 0:7.4.4-1.amzn2         php-gd.x86_64 0:7.4.4-1.amzn2         php-intl.x86_64 0:7.4.4-1.amzn2       
  php-opcache.x86_64 0:7.4.4-1.amzn2        php-xml.x86_64 0:7.4.4-1.amzn2       php-mbstring.x86_64 0:7.4.4-1.amzn2                                                                                 

依存性関連をインストールしました:
  libxslt.x86_64 0:1.1.28-5.amzn2.0.2
  oniguruma.x86_64 0:5.9.6-1.amzn2.0.3                                                                                    

完了しました!

インストール確認
→ @マークがついているものがインストールできた拡張モジュール

$ sudo yum list php* | grep amzn2extra-php7.4
php-bcmath.x86_64                        7.4.4-1.amzn2                 @amzn2extra-php7.4
php-cli.x86_64                           7.4.4-1.amzn2                 @amzn2extra-php7.4
php-common.x86_64                        7.4.4-1.amzn2                 @amzn2extra-php7.4
php-fpm.x86_64                           7.4.4-1.amzn2                 @amzn2extra-php7.4
php-gd.x86_64                            7.4.4-1.amzn2                 @amzn2extra-php7.4
php-intl.x86_64                          7.4.4-1.amzn2                 @amzn2extra-php7.4
php-json.x86_64                          7.4.4-1.amzn2                 @amzn2extra-php7.4
php-mbstring.x86_64                      7.4.4-1.amzn2                 @amzn2extra-php7.4
php-mysqlnd.x86_64                       7.4.4-1.amzn2                 @amzn2extra-php7.4
php-opcache.x86_64                       7.4.4-1.amzn2                 @amzn2extra-php7.4
php-pdo.x86_64                           7.4.4-1.amzn2                 @amzn2extra-php7.4
php-xml.x86_64                           7.4.4-1.amzn2                 @amzn2extra-php7.4
php.x86_64                               7.4.4-1.amzn2                 amzn2extra-php7.4

Larabelの必須モジュールがインストールされているか確認
→ 以下の通り初めからLaravelのインストールに必要な拡張モジュールは入っている模様

▼参考サイト www.ritolab.com

$ sudo php -m | grep -e openssl -e PDO -e mbstring -e tokenizer -e ^xml$ -e ctype -e json -e bcmath
bcmath
ctype
json
mbstring
openssl
PDO
tokenizer
xml

1-3. MySQL 8(mysql_client)インストール

mysql8.0リポジトリの追加

$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
mysql80-community-release-el7-1.noarch.rpm                                                         |  25 kB  00:00:00     
/var/tmp/yum-root-KF26hS/mysql80-community-release-el7-1.noarch.rpm を調べています: mysql80-community-release-el7-1.noarch
/var/tmp/yum-root-KF26hS/mysql80-community-release-el7-1.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql80-community-release.noarch 0:el7-1 を インストール
--> 依存性解決を終了しました。
amzn2-core/2/x86_64                                                                                | 2.4 kB  00:00:00     
amzn2extra-docker/2/x86_64                                                                         | 1.8 kB  00:00:00     

依存性を解決しました

==========================================================================================================================
 Package                            アーキテクチャー
                                                    バージョン     リポジトリー                                      容量
==========================================================================================================================
インストール中:
 mysql80-community-release          noarch          el7-1          /mysql80-community-release-el7-1.noarch           31 k

トランザクションの要約
==========================================================================================================================
インストール  1 パッケージ

合計容量: 31 k
インストール容量: 31 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : mysql80-community-release-el7-1.noarch                                                    1/1 
  検証中                  : mysql80-community-release-el7-1.noarch                                                    1/1 

インストール:
  mysql80-community-release.noarch 0:el7-1                                                                                

完了しました!

インストール

$ sudo yum install -y mysql 
(略)
インストール:
  mysql-community-client.x86_64 0:8.0.20-1.el7                    mysql-community-libs.x86_64 0:8.0.20-1.el7              
  mysql-community-libs-compat.x86_64 0:8.0.20-1.el7              

依存性関連をインストールしました:
  mysql-community-common.x86_64 0:8.0.20-1.el7            ncurses-compat-libs.x86_64 0:6.0-8.20170212.amzn2.1.3           

置換:
  mariadb-libs.x86_64 1:5.5.64-1.amzn2                                                                                    

完了しました!

インストール確認

$ yum list installed | grep mysql
mysql-community-client.x86_64         8.0.20-1.el7                   @mysql80-community
mysql-community-common.x86_64         8.0.20-1.el7                   @mysql80-community
mysql-community-libs.x86_64           8.0.20-1.el7                   @mysql80-community
mysql-community-libs-compat.x86_64    8.0.20-1.el7                   @mysql80-community
mysql80-community-release.noarch      el7-1                          installed  

RDSへの接続確認

$ mysql -h <RDSのエンドポイント> -P 3306 -u dbuser -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 345
Server version: 8.0.17 Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
mysql> quit;

2. CodeDeploy Agentインストール

以下の通り実行しAgentをインストールする

$ sudo yum install ruby
$ sudo yum install wget
$ cd /home/ec2-user
$ wget https://aws-codedeploy-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto
$ sudo service codedeploy-agent status
The AWS CodeDeploy agent is running as PID XXXX

公式サイト https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html