これは2017年9月13日に開催したPHPerイベントYYPHP#6のイベントレポートです。
YYPHPは一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催は毎週水曜19:00に高田馬場にて。
今回は5名の方が参加してくれました!参加くださった皆さんありがとうございます。是非次回もお越し下さい〜!
それでは、YYPHPで話題になったことをおさらいしたいと思います。
clean-code-php
PHP: Clean Code (clean-code-php) 蜜柑薬 - Qiitaをちょっと眺めました。
Concrete5+kusanagiのDocker環境を作る
Concrete5+kusanagiのDocker環境を作ることにチャレンジしました。
Kusanagiとは
- KUSANAGI – 超高速WordPress仮想マシン [高速化チューニング済みWordPressサーバ]
- KusanagiでWordPressを動かすと10倍速い。セキュリティも強い。
- Nginx、MariaDB、HHVMやPHP7をチューニングしているVMイメージ(AWSやVMwareなど)なので、WordPressにかぎらずPHPアプリだったらパフォーマンスが上がる。
- Concrete5は激重だが3倍くらい速い。
- Dockerのほうはまだまだ開発中とのことで、本物のKusanagiとは違う。
Docker環境の作り方
- primestrategy/kusanagi-nginx - Docker Hubに載っているdocker-composeのYAMLをそのまま使う。
mkdir kusanagi-concrete5
cd kusanagi-concrete5
touch docker-compose.yml
docker-compose.ymlに下記を書く。
version: '2'
services:
kusanagi-data:
container_name: kusanagi-data
image: busybox
restart: always
stdin_open: true
tty: true
volumes:
- /var/lib/mysql
- /etc/nginx/conf.d
- /etc/httpd/conf.d
- /etc/kusanagi.d
- /home/kusanagi
command: /bin/sh
kusanagi-nginx:
container_name: kusanagi-nginx
image: primestrategy/kusanagi-nginx:1.10.0-1
environment:
PROFILE: kusanagi
FQDN: kusanagi.example.jp
WPLANG: ja
BCACHE: "off"
FCACHE: "off"
volumes_from:
- kusanagi-data
links:
- kusanagi-php7:php
- kusanagi-mariadb:mysql
ports:
- "80:80"
- "443:443"
kusanagi-mariadb:
container_name: kusanagi-mariadb
image: mariadb:10.0.24
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_DATABASE: wordpress
volumes_from:
- kusanagi-data
kusanagi-php7:
container_name: kusanagi-php7
image: primestrategy/kusanagi-php7:7.0.6-1
links:
- kusanagi-mariadb:mysql
volumes_from:
- kusanagi-data
docker-compose up -d
この状態でブラウザhttp://localhost を開く。下記の設定でWordPressは動かせる。
もしタイムアウトのエラーが出たら、
ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
次のようにタイムアウトの設定をする。
COMPOSE_HTTP_TIMEOUT=240 docker-compose up
kusanagi-nginxコンテナの /home/kusanagi/kusanagi/DocumentRoot
がドキュメントルートなので、ここにConcrete5を配置すればいい。
次のコマンドでnginxコンテナに入る。
docker-compose exec kusanagi-nginx bash
コンテナ内で次のコマンドを実行して、WordPressを消し、そこにConcrete5をダウンロード&配置。
rm -rf /home/kusanagi/kusanagi/DocumentRoot &&
yum install -y unzip wget &&
wget https://www.concrete5.org/download_file/-/view/96959/ -O concrete5-8.2.1.zip &&
unzip concrete5-8.2.1.zip &&
mv concrete5-8.2.1 /home/kusanagi/kusanagi/DocumentRoot
cd /home/kusanagi/kusanagi/DocumentRoot
chmod 777 /home/kusanagi/kusanagi/DocumentRoot/application/{files,config}
chmod 777 /home/kusanagi/kusanagi/DocumentRoot/packages
2017-09-13現在、primestrategy/kusanagi-php7:7.0.16-1が最新でこれでないとpdo_mysqlがないのと、GDのいろいろが入ってないのでDockerfileを作ってビルドする。
FROM primestrategy/kusanagi-php7:7.0.16-1
RUN apk add \
--no-cache \
freetype \
libpng \
libjpeg-turbo \
freetype-dev \
libpng-dev \
libjpeg-turbo-dev\
&& docker-php-ext-configure gd \
--with-gd \
--with-freetype-dir=/usr/include/ \
--with-png-dir=/usr/include/ \
--with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd
kusanagi-php7:
container_name: kusanagi-php7
build: . #ここ
links:
- kusanagi-mariadb:mysql
volumes_from:
- kusanagi-data
kusanagi-php7をビルドしなおし、
docker-compose build
コンテナを起動しなおす。
docker-compose up -d
この状態でブラウザhttp://localhost を開き、Concrete5のインストーラ画面が表示されたら成功。
便利テク
YYPHPで話題なった便利テク。PHPとは関係ないもの。
便利テク: シェルの便利なキーバインド
- ターミナルで↑を押すと、一個前のコマンドが保管される。
- 知っている人は当たり前ですが、知らない方は感動してました。
便利テク: iTerm2でCommand+/で焦点を表示できる
プロジェクタでiTerm2を出す時、どこにカーソルがあるか強調するときに便利。
プロジェクタでみるとこんなかんじ。
YYPHPは毎週やってます
PHPについてワイワイ話したい方は、YYPHPのイベント情報をチェックしてみて下さい。
以上、YYPHP#6のレポートでした。次回もワイワイやっていきたいと思います! では、また来週!