Amazon LinuxでPHP, Apache/Nginx, MySQLを構築してWordPressをインストール : AWS

Pocket

VPC上に配置したEC2へPHP, Apache/Nignx, MySQLの環境構築をした際の覚書です。
OSはAmazon Linuxを選択しました。最後にWordPressをインストールしました。

VPC上に配置したEC2へPHP, Apache, MySQLインストール

参考記事
AWSへEC-CUBE3をインストール : EC-CUBE3 FindxFine | Web制作に関するメモ
Amazon Linuxで nginx + php7 環境構築 | // sakura note

  1. yum アップデート/Remiリポジトリ追加登録
  2. Apacheインストール/セットアップ
    Apacheをインストールした後でPHPおよび拡張モジュール関連をインストールしてください。
  3. PHP本体/拡張モジュールインストール
  4. MySQLインストール/セットアップ
  5. PHP本体バージョンアップ
  6. WordPressインストール

1. 準備

以降sudoなしで管理者権限で実行可能にします。

$ sudo -i

既存のパッケージを更新します。

# yum update

登録済みリポジトリ確認をします。
(2017.03.09時点のAmazon Linux AMI release 2016.09の例)

# ls /etc/yum.repos.d
// amzn-main.repo  amzn-nosrc.repo  amzn-preview.repo  amzn-updates.repo  epel-testing.repo  epel.repo

Remiリポジトリを登録します。

# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -ivh remi-release-6.rpm

登録済みリポジトリを確認します。

# ls /etc/yum.repos.d
// ...  remi-php54.repo  remi-php70.repo  remi-php71.repo  remi-safe.repo  remi.repo   追加リポジトリ

2 Apacheインストール/セットアップ

# yum install httpd

各ディレクトリで.htaccessを使用可能にします。

/etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
…..
#AllowOverride None  <-- コメントアウト
AllowOverride All    <-- 追加
…..
</Directory>
# service httpd start 
// または
# apachectl start

3 PHP本体/拡張モジュールインストール

remi-php70リポジトリからPHP関連をインストールします。

本体をインストールします。

# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php

必要な拡張モジュールをインストールします。

# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-pdo php-mysqlnd php-mbstring

gdインストール
php-gdをインストール前にlibwebp、gd-lastをインストールします。

# yum --disablerepo=amzn-main --enablerepo=epel install libwebp
# yum install gd-last
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-gd 

PEAR/PECLインストールします。
php-pearをインストールする前にautomake, gccおよびphp-develをインストールします。
PECLはphp-pearのインストールの際に合わせてインストールされます。

# yum install automake
# yum install gcc
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-devel
# yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-pear

XDebugインストール

# pecl install xdebug

php.iniへ下記を追加します。

zend_extension=/usr/lib64/php/modules/xdebug.so

php.iniへ記載する代わりに設定ファイルをScan for additional .ini filesで読み込まれるディレクトリへ作成することもできます。

例) 20-xdebug.ini

zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.dump_globals = 1;
xdebug.dump.SERVER = *;
xdebug.dump.GET = *;

4 MySQLインストール

# yum install mysql-server

MySQLセットアップします。

// MySQLを起動します
# service mysqld start 

セキュリティ関連(rootユーザーのパスワード設定など)を設定します。

# /usr/bin/mysql_secure_installation

MySQL5.7からrootはmysqlクライアントからのみ接続可能です。
php – SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'. Tried everything – Stack Overflow

5 PHP本体バージョンアップ

PHP7.0から7.1へアップデートします。yum updateでremi-repo71が利用可能になっていることが前提です。
既存のPHP本体を削除します。

# yum remove -y php
# yum install -y --enablerepo=remi-php71 --disablerepo=amzn-main php

6 WordPressインストール

# curl -LO http://ja.wordpress.org/latest-ja.tar.gz
# tar xvzf latest-ja.tar.gz
WordPress用データベース作成
// ユーザー作成
// rootでログイン
mysql> GRANT ALL PRIVILEGES ON *.* TO <username> IDENTIFIED BY '<password>';
// rootでログアウトし作成ユーザーでログイン
mysql> CREATE DATABASE <database> DEFAULT CHARACTER SET utf8mb4;

VPC上に配置したEC2へPHP, Nginx, MysQLをインストール

Apacheと同じようにRemiリポジトリを追加します。

参考記事  
YumでNginxセットアップ+PHP-FPM – Qiita

Yumでインストール

# yum install -y httpd   // httpdをインストールしないとNginxが正常にインストールできなかったため
# yum install -y nginx

PHP7, PHP-FPMインストール

# yum --enablerepo=remi-php71 --disablerepo=amzn-main install php php-fpm

設定ファイル変更

設定ファイル パス
Nginx /etc/nginx/nginx.conf
PHP-FPM /etc/php-fpm.d/www.conf

nginx.conf

server {
        .....
        server_name  52.199.2.159;
        .....

        .....

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # これを必ず記載
            # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

       .....
}

www.conf

user nginx
group nginx

PHP-FPM起動

/etc/rc.d/init.d/php-fpm restart

VPC上にEC2(PHP, Apache)とRDSを配置

EC2へMySQLをインストールせずRDSを利用します。

RDSのポイント

  • RDSのインスタンスを作成する前にRDSサブネットグループを作成します。RDSサブネットグループはAvailability Zoneの異なる2つのサブネットを選択する必要があります。
     2つのサブネットは事前に作成しておいてください。
  • RDSのセキュリティグループは送信元のデフォルトはRDSのプライベートアドレスですがEC2のプライベートアドレスへ変更する必要があります。

EC2へmysqlクライアントインストール

# yum install mysql

RDSインスタンスの
作成が完了するとエンドポイントが表示されるのでmysqlの接続でエンドポイント指定します。

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。