SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
<!̶ 美乳 ̶>
美乳と

PHP7 on Docker
第97回PHP勉強会の使い回し

てきとうなさいと。べぇたばん
ぼく、てきめん!
• 「てきとう」「めんどい」の略デス><
• Don t think, feel! and Laziness
• さいと: http://tekitoh-memdhoi.info
• twitter: @youkidearitai
• facebook: youkidearitai.yuya.hamada
• PHP界隈では0x27さい説のある28さいです
• (たぶん)ラジコンの人です
Arduinoでラジコン作った
先頭に「美乳」
• 昔EUC-JPのページで文字化けを防ぐために
Shift_JISにない「0xFD」や「0xFE」が偶然「美
乳」内にあったために生まれた「おまじない」
• Yahoo! Japanでは流石に使いづらかったのか「京」
(0xFEが入ってる)になってた
• 参考
• EUC-JPの文字化け対策に有効な「美乳」
• 2005年あたりのInternet Archive
ではみてみましょう
$ hexdump -C binyu.txt
00000000 c8 fe c6 fd 0a
00000005
$ iconv -f euc-jp -t utf-8 binyu.txt
美乳
美乳のなかにあるしんぴ!
PHP7.0がリリース!
2015ねん12がつ3にち
さっそくつかいたい!

運用したい!
てきとうなさいと。

べぇたばんの構成
• Debian GNU/Linux jessie
• CakePHP 2.7系
• CakePHP1.3系から引き継ぎ引き継ぎ…
• PostgreSQL
• MySQLから移した mysql2postgresql
• さくらのVPS
• DevOps
• Ansible
• Fabric
よっしゃコンパイルじゃ
• 昔のぺちぱー(に限らないか)はコンパイルしてた
• しかし、サーバー上でコンパイルは自殺行為
• バージョン上げられない><
• 自家版debやrpmを作って運用もあった
• やっぱり公式リポジトリだよねヽ(^。^)ノ
Docker
そんな昔の悲劇を繰り返してはならない。

今はコレがある
コンパイルしたPHP7を

OSごとコンテナに

してしまえ
コンテナ内部
• apt-get install apache2 apache2-dev build-essential
autoconf libpq-dev libxml2-dev libicu-dev libdb-dev
libjpeg-dev libpng-dev libgif-dev libgd-dev libreadline-
dev libgd2-xpm-dev libcurl4-openssl-dev pkg-config
• ./configure ̶with-apxs2=/usr/bin/apxs ̶enable-
mbstring ̶enable-intl ̶with-pgsql=/usr/include/
postgresql ̶with-pdo-pgsql ̶with-gd=/usr/include/
̶with-jpeg-dir=/usr/include/ ̶with-png-dir=/usr/
include/ ̶with-readline=/usr/include/ ̶with-xpm-
dir=/usr/include/ ̶with-openssl
Dockerfile
FROM youkidearitai/php7-tmcmaker
EXPOSE 80 80
env APACHE_RUN_USER www-data
env APACHE_RUN_GROUP www-data
env APACHE_PID_FILE /var/run/apache2.pid
env APACHE_RUN_DIR /var/run/apache2
env APACHE_LOCK_DIR /var/lock/apache2
env APACHE_LOG_DIR /var/log/apache2
env LANG C
ENTRYPOINT ["/usr/sbin/apache2", "-D", "FOREGROUND"]
ホスト側
• /etc/systemd/system/php7-tmcmaker.service
• ExecStart=/usr/bin/docker run -p 80:80 -v /home/tekitoh/
htdocs:/var/www/htdocs/ -v /var/log/docker/apache2:/var/
log/apache2 -v /var/log/docker/tmcmaker:/var/www/htdocs/
cake/app/tmp/logs youkidearitai/php7-tmcmaker:php7-
tmcmaker
• ホストに書き出してる
• CakePHPのログ
• Apacheのログ
• 画像
• ソースコード
要は、こういうこと
デプロイ
ソースコード
$ cat fabfile.py
# -*- coding: utf-8 -*-
from fabric.api import local, settings, abort, run, cd, env, hosts
# pushのみ
@hosts("tekitoh.sakura")
def push():
env.use_ssh_config = True
local("git push deploy master")
# 保存先レポジトリからpullするのみ
@hosts("tekitoh.sakura")
def pull():
env.use_ssh_config = True
with cd("htdocs/"):
run("git pull origin master")
# デプロイを行う
@hosts("tekitoh.sakura")
def deploy():
push()
pull()
$ fab deploy # でおしまいヽ(^。^)ノ
PHP7コンテナ側
$ cat fabfile.py # 一部割愛
# -*- coding: utf-8 -*-
# デプロイを行う
@hosts("tekitoh.sakura")
def deploy():
# ssh_configを使えるようにする
env.use_ssh_config = True
# 文字通りcd
with cd("/home/tekitoh/"):
run("sudo docker pull youkidearitai/php7-tmcmaker")
run("sudo docker build -t youkidearitai/php7-tmcmaker:php7-tmcmaker /home/tekitoh/")
run("sudo systemctl stop php7-tmcmaker-docker.service")
run("sudo systemctl start php7-tmcmaker-docker.service")
$ fab deploy # でおしまいヽ(^。^)ノ
PHP5 -> PHP7
CakePHP 2.7系でうごかすと…?
CakePHP 2.7
• CakePHP 2.7.6ではStringというclassが使われて
いるのでつかえなかった
• CakePHP 2.7.7ではCakeTextに変更されてるの
で使えてる
というわけで
PHP7乗っけたぜ
うわ、やっべーわー、X-Powerd-ByヘッダでPHP7だっ
てバレちゃうわー、やっべー、あぶねー
PHP7

まいなーバージョンアップ
個人的に面白かった部分



PHP 7.0.1 2015ねん12がつ17にち
PHP 7.0.2 2016ねん1がつ7にち
PHP 7.0.1


Fixed bug #70944 (try{ } finally{} can create infinite
chains of exceptions).
$ cat test.php
<?php
$e = new Exception("Bar");
try {
throw new Exception("Foo", 0, $e);
} finally {
throw $e;
}
Fixed bug #70944 (try{ } finally{} can create
infinite chains of exceptions).
$ php test.php # PHP 7.0.2
PHP Fatal error: Uncaught Exception: Bar in /tmp/test.php:2
Stack trace:
#0 {main}
thrown in /tmp/test.php on line 2
$ php test.php # PHP 5.5.29
^C
ループし続けてる(๑́•. ̫• `๑)

※ PHP5.6系では1がつ7にちのPHP 5.6.17で修正されました 5.5系はしらん
PHP 7.0.1にした時の記録
http://tekitoh-memdhoi.info/views/707
PHP 7.0.2
Fixed bug #70804 (Unary add on negative zero
produces positive zero).
$ cat test.php
<?php
var_dump(round(-1e-99));
var_dump(+round(-1e-99));
Fixed bug #70804 (Unary add on negative zero
produces positive zero).
# php test.php # PHP 7.0.2
float(-0)
float(-0)
$ php test.php # PHP 5.5.29
float(-0)
float(0)
ぼくはこの時までマイナス0のことを知らなかったのであった
WikipediaにあるIEEE 754のにおける負のゼロ
PHP 7.0.2にした時の記録
http://tekitoh-memdhoi.info/views/718
Fixed bug #66179 (var_export()
exports float as integer).
# php -r var_export(1.0);' # PHP 7.0.2

1.0
$ php -r var_export(1.0);' # PHP 5.5.29

1
PHP5.5以下はもう…
PHP 5.6の話だとしても今年いっぱい
まとめ
(๑́•.̫ • `๑)

Weitere ähnliche Inhalte

Was ist angesagt?

技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったらWataru Terada
 
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明Yuta Hayakawa
 
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm晃 遠山
 
Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由Tao Sasaki
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)7shi
 
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋Masafumi Ohta
 
Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04敦志 金谷
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。Akihiro Kuwano
 
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみるYuta Hayakawa
 
Cake assets plugin in PHP Matsuri 2012
Cake assets plugin in PHP Matsuri 2012Cake assets plugin in PHP Matsuri 2012
Cake assets plugin in PHP Matsuri 2012Hirohide Sano
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
HashicorpツールズUchio Kondo
 
2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...
2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...
2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...Yuta Hayakawa
 
Kotlinでマッチョする話
Kotlinでマッチョする話Kotlinでマッチョする話
Kotlinでマッチョする話Shinobu Okano
 
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよSerf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよMasahito Zembutsu
 
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編Kiwamu Okabe
 

Was ist angesagt? (20)

技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら
 
Vert.x.tari.tari
Vert.x.tari.tariVert.x.tari.tari
Vert.x.tari.tari
 
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
2015/04/11 第4回G-Study発表資料 Risoluto開発に見る車輪の再発明
 
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
 
Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由Espressoじゃなくてcodaを使う理由
Espressoじゃなくてcodaを使う理由
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
 
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
Raspberry Pi 最新情報 at OSC Tokyo 2014 秋
 
Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04Werkzeugを使ってみた #osakapy 2016/04
Werkzeugを使ってみた #osakapy 2016/04
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
 
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
2015/09/12 第9回G-Study発表資料-XdebugでPHP ScriptのProfileしてみる
 
Cake assets plugin in PHP Matsuri 2012
Cake assets plugin in PHP Matsuri 2012Cake assets plugin in PHP Matsuri 2012
Cake assets plugin in PHP Matsuri 2012
 
ChatOps with Hubot
ChatOps with HubotChatOps with Hubot
ChatOps with Hubot
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
H2O and php
H2O and phpH2O and php
H2O and php
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
 
2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...
2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...
2015/02/21 第2回G-Study発表資料 / XperiaなWalkmanアプリにiTunesなライブラリをインポートしたことによって身に...
 
Kotlinでマッチョする話
Kotlinでマッチョする話Kotlinでマッチョする話
Kotlinでマッチョする話
 
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよSerf2Excel - Serf を実運用に活かす話 + Consul もあるよ
Serf2Excel - Serf を実運用に活かす話 + Consul もあるよ
 
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編
組込向けHaskellコンパイラAjhc / POSIX依存から脱出しよう編
 

Ähnlich wie PHP7をDockerで動かしたという話

今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集Wataru NOGUCHI
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワークTakuya Sato
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみようRyo Adachi
 
Smalltalk との比較で深まる Citrine の理解
Smalltalk との比較で深まる Citrine の理解Smalltalk との比較で深まる Citrine の理解
Smalltalk との比較で深まる Citrine の理解TAKANO Mitsuhiro
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室Yusuke Ando
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3ichikaway
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺MITSUNARI Shigeo
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料Junichi Ishida
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Kei IWASAKI
 
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014Yuuki Takezawa
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 
初心者が伝えるDocker超入門
初心者が伝えるDocker超入門初心者が伝えるDocker超入門
初心者が伝えるDocker超入門chichi1091
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020Rui Hirokawa
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについてHiraku Nakano
 

Ähnlich wie PHP7をDockerで動かしたという話 (20)

今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
入門 シェル実装
入門 シェル実装入門 シェル実装
入門 シェル実装
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
 
Smalltalk との比較で深まる Citrine の理解
Smalltalk との比較で深まる Citrine の理解Smalltalk との比較で深まる Citrine の理解
Smalltalk との比較で深まる Citrine の理解
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
 
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 
Open modeler
Open modelerOpen modeler
Open modeler
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
初心者が伝えるDocker超入門
初心者が伝えるDocker超入門初心者が伝えるDocker超入門
初心者が伝えるDocker超入門
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについて
 

PHP7をDockerで動かしたという話