Edited at

YYPHP#6イベントレポート「clean-code-php、Concrete5をKusanagiのDockerコンテナで動かす」

More than 1 year has passed since last update.

YYPHP-ロゴ.png

これは2017年9月13日に開催したPHPerイベントYYPHP#6のイベントレポートです。

YYPHPは一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催は毎週水曜19:00に高田馬場にて。

貼り付けた画像_2017_09_13_23_23.png

今回は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環境の作り方

mkdir kusanagi-concrete5

cd kusanagi-concrete5
touch docker-compose.yml

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を作ってビルドする。


Dockefile

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-2017-09-13-00013.jpg


YYPHPは毎週やってます

PHPについてワイワイ話したい方は、YYPHPのイベント情報をチェックしてみて下さい。

以上、YYPHP#6のレポートでした。次回もワイワイやっていきたいと思います! では、また来週!