AMIMOTO で PHP 7.2 を利用する

AMIMOTO で PHP 7.2 を利用するには、以下のコマンドを実行してください。

Chef レシピを最新のものに更新する

$ sudo git -C /opt/local/chef-repo/cookbooks/amimoto/ pull origin 2016.01
remote: Counting objects: 31, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 31 (delta 24), reused 26 (delta 24), pack-reused 4
Unpacking objects: 100% (31/31), done.
From git://github.com/Launch-with-1-Click/lw1-amimoto
 * branch            2016.01    -> FETCH_HEAD
   3ce41b9..af15013  2016.01    -> origin/2016.01
Updating 3ce41b9..af15013
Fast-forward
 attributes/03_php.rb                | 17 +++++++++++++++++
 attributes/yum_repo.rb              |  3 +++
 recipes/php.rb                      |  7 +++++++
 recipes/redis.rb                    | 11 ++++++++---
 recipes/repos.rb                    |  2 +-
 templates/amazon/yum/remi.repo.erb  | 29 +++++++++++++++++++++++++++++
 templates/default/yum/remi.repo.erb | 29 +++++++++++++++++++++++++++++
 7 files changed, 94 insertions(+), 4 deletions(-)

Chef レシピに与えるパラメータを保存している /opt/local/amimoto.json を編集する

$ TMP_JSON=$(mktemp)
$ jq -s '.[1] * .[0]' <(echo '{"phpfpm":{"version":"72"}}') <(sudo cat /opt/local/amimoto.json) > ${TMP_JSON}
$ sudo mv -f ${TMP_JSON} /opt/local/amimoto.json

※ 7.2 以外(5.6, 7.0, 7.1)が使用したい場合は、2行目の “version”:”72″ を変更してください。

最後に以下のコマンドを実行します。

$ sudo /opt/local/provision
$ sudo service php-fpm restart

確認

$ php -v
PHP 7.2.1 (cli) (built: Jan  3 2018 09:08:32) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.2.1, Copyright (c) 1999-2017, by Zend Technologies

AMIMOTO で redis object cache を使用する

AMIMOTO で redis object cache を使用するには、以下の3ステップの作業が必要となります。

  1. redis をインストールする
  2. WordPress プラグイン Redis Object Cache をインストールして有効化する
  3. Redis Object Cache に関する不具合を修復するプラグインをインストールする

では、順番にやり方を説明しましょう。

redis をインストールする

これは、それほど難しくありません。

まず、SSH接続してから /opt/local/amimoto.json を編集してください。

以下のコマンドで対応可能です。

$ TMP_JSON=$(mktemp)
$ jq -s '.[1] * .[0]' <(echo '{"redis":true}') <(sudo cat /opt/local/amimoto.json) > ${TMP_JSON}
$ sudo mv -f ${TMP_JSON} /opt/local/amimoto.json

次に以下のコマンドを実行します。

$ sudo /opt/local/provision

 
Redis が起動しているかどうかは、以下のコマンドで確認できます。

$ sudo service redis status

Redis Object Cache をインストールして有効化する

まず、wp-config.php に以下のコードを追加しておきます。

/** Redis Cache Settings **/
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_MAXTTL', 3600);
define('WP_CACHE_KEY_SALT', DB_NAME);

設定する各定数の意味は、プラグインの説明読んでください。

プラグインのインストールを wp-cli 使ってやるなら、以下の通り

$ wp plugin install --activate redis-cache
$ wp redis enable
$ wp redis sttus
Status: Connected
Client: PECL Extension (v3.1.6)

Redis Object Cache に関する不具合を修復するプラグインをインストールする

ファイル redis-cache-fix.php を取ってきて、wp-content/mu-plugins/ ディレクトリに保存してください。
ターミナルでやるなら以下の通り

$ wget https://gist.githubusercontent.com/wokamoto/5c0c8a19a6dbd08e4121aa05d238543c/raw/464d418bcc7f9686852cdc3c0db6d6316278d6ed/redis-cache-fix.php
$ mkdir /path/to/wordpress/wp-content/mu-plugins
$ mv redis-cache-fix.php /path/to/wordpress/wp-content/mu-plugins/

こんな感じで良いかなと

[AWS] AWS Certificate Manager が Tokyo リージョンにやってきた!

AWS Certificate Manager が Tokyo リージョンでも使えるようになりました。
AWS Certificate Manager now available in more regions

以前、SES を使って ACM の承認メール受信する方法を書いてますので、それ参考にしてくださいねー。

S3 で SES 受信するためのバケットポリシーサンプル

[AWS] mailq を監視して CloudWatch のカスタムメトリクスに送信

Web サーバにバックドア仕掛けられて spam 送信の踏み台にされていないかを確認するために mailq の値をカスタムメトリクスに定期的に送信してCloudWatch で検出しておくと、ある日突然 AWS から「Your Amazon EC2 Abuse Report」ってメールが来ることが無くなると思うよ。

#!/bin/sh
# EC2 のインスタンス ID を取得
instanceid=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)

# region を取得
az=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
_length=$(echo $((${#az} - 1)))
region=$(echo ${az} | cut -c 1-${_length})

namespace="System/Linux"

# mailq
mailq=$(mailq | grep 'Total requests' | awk '{print $3}')
aws cloudwatch put-metric-data \
 --region ${region} \
 --namespace ${namespace} \
 --dimensions InstanceId=${instanceid} \
 --unit Count \
 --metric-name "MailQueu" \
 --value "$mailq"

[Nginx] nginx: [emerg] could not build the server_names_hash…

Nginx でどんどこバーチャルホストを追加していると、以下の様なエラーが表示されて設定ファイルの再読み込みができなくなることがあります。

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 64

まぁ、言ってるとおりですね。
server_names_hash_bucket が足りなくなってるので増やせよっつってるので、/etc/nginx/nginx.conf に以下を追加しましょう。
網元使ってる場合は /etc/nginx/nginx.conf が再起動時に元に戻ってしまうので /etc/nginx/conf.d/00_server_name_hash_settings.conf という名前で、以下の内容のファイルを作ってやってください。