53ningen.com

@gomi_ningen's Website

WordPress を PHP-FPM, NGINX, MariaDB の Docker イメージ上で動かす

53ningen.com は色々言われている WordPress で動いています。現在の足元は EC2 + ALB + RDS ですが ECS Fargate を使った構成に変更したいなと思う昨今。

移行の準備としてまず、新規の WordPress アプリケーションを php-fpm, nginx, mariadb の Docker イメージを利用して動く状態にすることで作業のイメージやつまづきどころをあらかじめ理解しておこうという流れをメモっておきます。

そもそもなんで WordPress なんて運用してるのと思う方も多いかと思います。流行りのヘッドレス CMS などにすれば軽くて安くて安全に運用にブログを運用できるのであたりまえですよね。

ただ、お金を払ってでも PHP, NGINX, MariaDB など複数のミドルウェアを扱う実践的かつ、自分も使うアプリケーションを手元で運用しつづけておきたいなという気持ちで WordPress を運用し続けてます。

手元で 10 年〜20 年単位のスパンで保守・運用し続けておく何かがあるとまあ良さそうですが、そのアプリケーションとして...

Read More

Wordpress のメディアに画像をアップロードする際にサムネイルや中・大サイズが生成されない問題

Wordpress のメディアに画像をアップロードすると自動的に中・大サイズの画像やサムネイルを生成してくれます。

しかし php をソースコードからビルドしてインストールするように運用を変えたあとから、これらの画像が生成されなくなっていたので修正しました。この画像変換には php の拡張モジュール GD を利用しているようなので、php の configure オプションに --with-gd を追加しました。

./configure --enable-fpm --enable-mbstring --enable-zip \
    --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
    --with-mysql=mysqlnd --with-zlib --with-openssl --with-curl  --with-gd

すると png のリサイズはかかるようになりましたが、jpeg のリサイズは相変わらずされずという状況。 php_info を見てみると以下のような具合。

gd
...
Read More

php 7.x の configure オプション

ただコマンドをうっただけ(自分用メモ)

$ ./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
   ...
Read More

Protocol Buffers を PHP から使う

Protocol Buffers とは

JSON, XML などは人間の目に比較的優しい形 [要出典] でデータを表現することができます。その反面、データが大きくなったり、データ解析が複雑だったりします。

Protocol Buffers は、通信や永続化などを目的に、データサイズの小ささやパース時のパフォーマンスなどを追及したシリアライズフォーマットです。データ構造はあらかじめプロトコル定義ファイル(.proto)に定義をしておき、Google が配布している protoc プログラムによって、各プラットフォーム上でのシリアライザ・デシリアライザを含めた関連コードが自動的に生成できるようになっています。

したがって利用する際の基本的な手順は大雑把に次のようになります

  1. データ構造を IDL で定義した proto ファイルを作成する
  2. proto ファイルから Protocol Buffers の利用に必要なコード(シリアライザ・デシリアライザなどが含まれる)を生成する
  3. 生成されたコードを利用したコードを書く

データ構造をはじめに定義し、その...

Read More

PHPのアレコレ

たまにしか PHP を触らないので色々問題が発生する

# pear で入れたものが入るパス
pear config-set php_dir

# pear で入れたものリスト
pear list

# php.ini の場所を探す
php -i | grep php.ini

Java, Scala のお仕事依頼お待ちしております → @gomi_ningen ...

Read More

PHPの private なメソッドを無理やりテストする方法

Java の package プライベートとかほんと素晴らしい仕組みだと思うのですが、他言語はなかなかないですね...。最近だと Swift2 でようやく @testable import などという形で、モジュールプライベート的なメソッドをテストできるようになっていますが、まだまだ Java に比べると柔軟ではない感じはあります。そもそも、Swift1 系はアクセス修飾子の設計普通にミスってるんじゃないかと思いますが、まあ言語を作っている方々は自分よりもはるかに知識がある方々だと思うので、いろいろあったのかな...という感想。自分はコードを読み書きするときにアクセス修飾子を基準にどこから読み進めるかとか、このメソッドは重要だなとかを判断するので、やっぱりこのあたりの機能が柔軟な言語のほうが好き。

本題。PHP の private メソッドを無理やりテストする方法。まあリフレクションしかないですよね。ということで、以下のような具合(自分のための備忘録)。

        $model = テスト対象のインスタンス;
        $method = new Refl...
Read More

PHPのスコープについて

自分用メモ。PHP の block はスコープの単位とならない。この特徴を示す単純なコードは以下のようなもの。

try {
    $a = "a";
} catch(Exception $e) {
    // do something
}

echo $a;

つまり以下のようなコードは冗長だということになる(ただ、個人的には上のコードわかりづらいと思う...)。

$a;
try {
    $a = "a"
} catch (Exception $e) {
    // do something
}
echo $a;

他言語を書きながら、ふと PHP を書くと混乱するのでメモ。 ...

Read More

AWS SDK for PHP を用いた Amazon SNS の操作

AWS Lambda, SQS, HTTP/S, Email, SMS, モバイルデバイスなどに対して PUSH 通知を送ることができる Amazon SNS を PHP の SDK から操作する方法についてざっくりと見ていきます。

SNS クライアントのインスタンス化

Amazon SNS の操作をするためのクライアントクラスは、以下のように直感的にインスタンス化できます。

require_once('./vendor/autoload.php');
use Aws\Sns\SnsClient;

$client = new SnsClient([
    'version' => 'latest',
    'region' => 'us-east-1', # 各自の利用しているregionを指定
    'profile' => 'default',  # ~/.aws/credentials 下に credential を置く
]);

デバイストークンの登録

APNS や GCM などから発行されたデバイストークンは [`SnsCli...

Read More

Copyright © 53ningen.com