38
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Amazon Linux 2でサーバ作成 (Apache2.4+PHP7.2+MariaDB)

概要

EC2インスタンスを起動して、Apache2.4とPHP7.2とMariaDBをインストールしてみたのでメモしておく。

インスタンス起動

学習用の起動なので、スタンドアロンで起動してすべてインストールするので、インスタンスを1つ起動。

EC2 -> インスタンス -> インスタンスの作成
step01.png
※ Amazon Linux 2 AMIを選択
※ セキュリティグループは、80ポートと22ポートを解放する。
(22ポートは不要だが学習用なので簡略化のため設定)

サーバへ接続する

ターミナルを使って起動したEC2インスタンスに接続する。
※ IAMユーザーにてssh接続。
※ アカウントは、多要素認証 (MFA) を設定し、利用しない。

ターミナル
$ ssh aws

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
Run "sudo yum update" to apply all updates.

とりあえず、yumを更新しておく。

ターミナル
$ sudo yum update -y

Amazon Linux Extras リポジトリ

そのままインストールするとPHP5.x系のため、「amazon-linux-extras」を使うことにします。
「amazon-linux-extras」でインストールできる内容を確認する。

ターミナル
$ amazon-linux-extras list
 ...
 15  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11 ]
 ...
 17  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11 ]
 ...

インストールされる内容を確認してみる。

ターミナル
# PHP7
$ amazon-linux-extras info php7.2
php7.2 recommends php-cli                      # yum install php-cli
php7.2 recommends php-pdo                      # yum install php-pdo
php7.2 recommends php-fpm                      # yum install php-fpm
php7.2 recommends php-json                     # yum install php-json
php7.2 recommends php-mysqlnd                  # yum install php-mysqlnd

# PHP拡張モジュール(mariadb)
$ amazon-linux-extras info lamp-mariadb10.2-php7.2
lamp-mariadb10.2-php7.2 recommends php-cli     # yum install php-cli
lamp-mariadb10.2-php7.2 recommends php-pdo     # yum install php-pdo
lamp-mariadb10.2-php7.2 recommends php-fpm     # yum install php-fpm
lamp-mariadb10.2-php7.2 recommends php-json    # yum install php-json
lamp-mariadb10.2-php7.2 recommends php-mysqlnd # yum install php-mysqlnd
lamp-mariadb10.2-php7.2 recommends mariadb     # yum install mariadb

PHP7.2.0 + 拡張モジュール

PHPをインストールしてみる。

ターミナル
$ sudo amazon-linux-extras install -y \
  lamp-mariadb10.2-php7.2=10.2.10_7.2.0 \
  php7.2=7.2.0

インストール状況を確認。

ターミナル
# PHP7
$ php -v
PHP 7.2.0 (cli) (built: Dec 13 2017 00:38:30) ( NTS )

# 拡張モジュール(mariadb)
$ yum list installed mariadb* | grep amzn2extra-lamp-mariadb10.2-php7.2
mariadb.x86_64        3:10.2.10-2.amzn2.0.1  @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-common.x86_64 3:10.2.10-2.amzn2.0.1  @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-config.x86_64 3:10.2.10-2.amzn2.0.1  @amzn2extra-lamp-mariadb10.2-php7.2
mariadb-libs.x86_64   3:10.2.10-2.amzn2.0.1  @amzn2extra-lamp-mariadb10.2-php7.2

MariaDB (10.2.10)

yumコマンドでインストールする。

ターミナル
# インストール
$ sudo yum install -y mariadb-server

# 起動
$ sudo systemctl start mariadb

# 有効化
$ sudo systemctl enable mariadb
$ sudo systemctl is-enabled mariadb

# セキュリティ設定
$ sudo mysql_secure_installation
Set root password? [Y/n]
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n] n
Reload privilege tables now? [Y/n]
 ...
Thanks for using MariaDB!

# バージョン確認
$ mysql -u root -e 'status' -p
mysql  Ver 15.1 Distrib 10.2.10-MariaDB, for Linux (x86_64) using ...

Apache 2.4

yumコマンドでインストールする。

ターミナル
# インストール
$ sudo yum install -y httpd

# 環境設定
$ sudo vi /etc/httpd/conf/httpd.conf
--------------------------------------------------------
-「Forbidden」ページからOS,IP,Apacheなどの情報を非表示にする
ServerTokens Prod
ServerSignature Off

<Directory "/var/www/html">
  - ディレクトリ構造を表示しない
  Options -Indexes FollowSymLinks

  - htaccessを有効にする
  AllowOverride All
</Directory>
--------------------------------------------------------

# 環境設定ファイルのチェック
$ sudo httpd -t

# 起動
$ sudo systemctl start httpd

# 有効化
$ sudo systemctl enable httpd
$ sudo systemctl is-enabled httpd
enabled

# バージョン確認
$ httpd -v
Server version: Apache/2.4.34

ec2-userにapacheグループを追加する。

ターミナル
# グループ追加
$ sudo usermod -a -G apache ec2-user

# ssh再接続して、所属グループを確認
$ exit
$ ssh aws
$ groups
ec2-user adm wheel apache systemd-journal

所有権の変更。

ターミナル
$ sudo chown -R ec2-user:apache /var/www
$ sudo chmod 2775 /var/www
$ ls -la /var/
drwxrwsr-x  4 ec2-user apache   33 12月 12 13:46 www

パーミッションの変更。

ターミナル
$ find /var/www -type d -exec sudo chmod 2775 {} \;
$ find /var/www -type f -exec sudo chmod 0664 {} \;
$ ls -la /var/www
drwxrwsr-x  2 ec2-user apache   6  9月  1 05:32 cgi-bin
drwxrwsr-x  2 ec2-user apache   6  9月  1 05:32 html

index.phpファイルを配置

/var/www/html/index.php
<html>
<body>
Hello World.<br>
<?php echo 'hoge'; ?>
</body>
</html>

テスト

起動したインスタンスの「パブリック DNS (IPv4)」に記載されているIPアドレスにアクセスしてみる。
※ 今回のIPアドレス: IPv4 パブリック IP 54.92.29.7
test.png

AMI作成

再利用できるようAMI(Amazon Machine Image)を作成しておく。

対象のインスタンスを停止しておき、アクション->イメージ->イメージの作成を実行。
ami1.png

イメージ名と説明を入力して「イメージの作成」ボタンを押し、AMIを作成する。
ami2.png

AMIからEC2インスタンス作成

EC2 -> インスタンス -> インスタンスの作成 -> マイ AMI から今回作成した「AmazonLinux2-httpd2.4-php7.2-mariadb10.2」を選択してインスタンスを作成する。
my-ami.png

以上です。

参考サイト

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
38
Help us understand the problem. What are the problem?