wordpress構築時のメモ

構成

web

ミドル

項目 備考
php PHP 7.0.32
nginx nginx/1.12.1
wordpress 4.9.8

構築時の履歴

Install package

$ sudo yum update -y
$ sudo yum install -y php70 php70-fpm php70-gd php70-mbstring php70-mcrypt php70-mysqlnd php70-zip nginx mysql56 php70-opcache

www.confのバックアップおよび設定

$ sudo cp /etc/php-fpm-7.0.d/www.conf /etc/php-fpm-7.0.d/www.conf.org
$ sudo vim /etc/php-fpm-7.0.d/www.conf
user = nginx
group = nginx


$ sudo vim /etc/php-7.0.ini
date.timezone = "Asia/Tokyo"

php-fpmを起動

$ sudo /etc/init.d/php-fpm-7.0 restart

自動起動設定

$ sudo chkconfig php-fpm-7.0 on
$ sudo chkconfig nginx on

権限をnginxに変更

$ sudo chown -R nginx:nginx /var/lib/php/7.0/session

nginx起動

sudo service nginx start

nginx.confの編集

$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org
$ sudo vim /etc/nginx/nginx.conf

index index.html index.htm index.php;
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name localhost;
        root /mnt/efs/www/html;
        client_max_body_size 3M;

        include /etc/nginx/default.d/*.conf;

        # wordpressパーマリンク対応
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
        
        location ~* /wp-config.php {
            deny all;
        }

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_script_name;
            include fastcgi_params;
        }
    }

efs マウント

$ sudo yum install -y amazon-efs-utils
$ sudo mkdir /mnt/efs
$ sudo mount -t efs fs-XXXXXX:/ /mnt/efs

efs IDは任意に変更

sudo vim /etc/fstab

追記
fs-XXXXX:/ /mnt/efs efs defaults,_netdev 0 0

フォルダ作る

$ sudo mkdir -p /mnt/efs/www
$ sudo mkdir -p /mnt/efs/www/html

nginxを再起動

sudo /etc/init.d/nginx restart

mysqlに入ったらパスワードを変更する

$ mysql -u admin001 -p -h XXXXXX.ap-northeast-1.rds.amazonaws.com

dkagwqalka


mysql> CREATE USER 'wp'@'%' IDENTIFIED BY  'XXXXXX';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'wp'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> select host,user from mysql.user;
mysql> CREATE DATABASE `wordpress`;
mysql> FLUSH PRIVILEGES;
mysql> exit

Install Wordpress

$ cd /mnt/efs/www/html
$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz
$ sudo tar xzvf latest-ja.tar.gz
$ cd wordpress
$ sudo cp wp-config-sample.php wp-config.php
$ sudo vim wp-config.php

define('DB_NAME', 'wordpress');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'wp');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'XXXXXX');
/** MySQL のホスト名 */
define('DB_HOST', 'XXXXXXXX.ap-northeast-1.rds.amazonaws.com');
/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

# https対応
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
       $_SERVER['HTTPS']='on';
}
define('FS_METHOD','direct');
define('WP_AUTO_UPDATE_CORE',true);

wordpressフォルダを削除

$ sudo mv * /mnt/efs/www/html/
$ cd /mnt/efs/www/html/
$ sudo rm -r wordpress/

権限をnginxに変更

$ sudo usermod -a -G nginx ec2-user
$ sudo chown -R ec2-user:nginx /mnt/efs/www/
$ sudo chmod 2775 /mnt/efs/www/
$ find /mnt/efs/www/ -type d -exec sudo chmod 2775 {} \;
$ find /mnt/efs/www/ -type f -exec sudo chmod 0664 {} \;

backup

efsのバックアップ

基本的にefsは可用性を備えており、backupは不要とされているが、オペレーションミスなどがあるので念の為backupをしておく

今回は、簡易backupですのでData Pipelineを使いs3におく

backupスケジュール 1週間に1度
保存期間 1週間に1度の場合は、削除なし
バケット
logs

作業手順

  * awsのコンソールから[Data pipeline]を選択 * [create new pipeline]を選択

  • Source を build using a template のRun AWS CLI commandを選択
  • Parameters に下記を入力 `` aws s3 sync /mnt/ s3://XXXXXX/date "+%Y%m%d_%H%M"`/ --exact-timestamps --delete
* Schedule
週一回backupを取得する事とする

* loggingの設定

s3://XXXXXXX/


* Runs onの設定

(sudo yum -y update aws-cli) && (sudo yum -y install amazon-efs-utils) && (sudo mount -t efs fs-XXXXX.efs.ap-northeast-1.amazonaws.com:/ /mnt) && (#{myAWSCLICmd})

efsのDNSを登録する


* Ec2instance


|  | | |
|---|---|---|
|Instance Type| t2.medium ||
|Key Pair | |
|Security Group Ids | |
|Security Group Ids | |