35

美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

  • Upload
    -

  • View
    679

  • Download
    6

Embed Size (px)

Citation preview

Page 1: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
Page 2: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

<!̶ 美乳 ̶>

Page 3: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

美乳とPHP7 on Docker

てきとうなさいと。べぇたばん

Page 4: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

ぼく、てきめん!• 「てきとう」「めんどい」の略デス><

• “Don’t think, feel!” and “Laziness”

• さいと: http://tekitoh-memdhoi.info

• twitter: @youkidearitai

• facebook: youkidearitai.yuya.hamada

• PHP界隈では0x27さい説のある27さいです

• ラジコンの人です

Page 5: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

先頭に「美乳」• 昔EUC-JPのページで文字化けを防ぐためにShift_JISにない「0xFD」や「0xFE」が偶然「美乳」内にあったために生まれた「おまじない」

• Yahoo! Japanでは流石に使いづらかったのか「京」(0xFEが入ってる)になってた

• 参考 • EUC-JPの文字化け対策に有効な「美乳」 • 2005年あたりのInternet Archive

Page 6: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

ではみてみましょう

$ hexdump -C binyu.txt 00000000 c8 fe c6 fd 0a 00000005

$ iconv -f euc-jp -t utf-8 binyu.txt 美乳

美乳のなかにあるしんぴ!

Page 7: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

それはそうと

Page 8: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

PHP7.0がリリース!12がつ3にち

Page 9: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

さっそくつかいたい!運用したい!

Page 10: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

PHP7.0をうごかす• ぼくのてきとうなさいと。べぇたばんはDebian GNU/Linux Jessieで動いてます

• 公式のPHPは5.6.9ベース • ということは、deb(リポジトリ)を

• つくる • さがす

• ソースコードをコンパイル

Page 11: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

PHP7.0をうごかす• ぼくのてきとうなさいと。べぇたばんはDebian GNU/Linux Jessieで動いてます

• 公式のPHPは5.6.9ベース • ということは、deb(リポジトリ)を

• つくる • さがす

• ソースコードをコンパイル

Page 12: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

よっしゃコンパイルじゃ• 昔のぺちぱー(に限らないか)はコンパイルしてた

• しかし、サーバー上でコンパイルは自殺行為

• バージョン上げられない><

• 自家版debやrpmを作って運用もあった

• やっぱり公式リポジトリだよねヽ(^。^)ノ

Page 13: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

Dockerそんな昔の悲劇を繰り返してはならない。

今はコレがある

Page 14: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

コンパイルしたPHP7をOSごとコンテナに

してしまえ

Page 15: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

コンテナ内部• 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

Page 16: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

DockerfileFROM youkidearitai/php7-tmcmaker

RUN cd /var/www/htdocs/ && git pull origin master

VOLUME /home/vagrant/media_webroot /var/www/htdocs/cake/app/media_webroot/ 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"]

Page 17: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

ホスト側• /etc/systemd/system/php7-tmcmaker.service

• ExecStart=/usr/bin/docker run -p 80:80 -v /home/tekitoh/htdocs/cake/app/media_webroot:/var/www/htdocs/cake/app/media_webroot -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

• 画像のアップロードとapache2・CakePHPのログをホストに書き出してるのである。

Page 18: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

要は、こういうこと

Page 19: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
Page 20: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

というわけで

Page 21: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

PHP7乗っけたぜうわ、やっべーわー、X-Powerd-ByヘッダでPHP7だっ

てバレちゃうわー、やっべー、あぶねー

Page 22: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

奮闘の記録http://tekitoh-memdhoi.info/views/706

Page 23: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

デプロイ

Page 24: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

デプロイの方法$ 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 ̶no-cache -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 # でおしまいヽ(^。^)ノ

Page 25: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

PHP7で四苦八苦

Page 26: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

継承したメソッドの引数が違うとE_WARNING

root@c182b8ea1b57:/tmp# cat hoge.php <?php

abstract class Hoge { public function getHuga($huga) { } }

class Huga extends Hoge { public function getHuga() { return "Hello Huga"; } }

$hoge = new Huga(); var_dump($hoge->getHuga()); root@c182b8ea1b57:/tmp# php hoge.php

Warning: Declaration of Huga::getHuga() should be compatible with Hoge::getHuga($huga) in /tmp/hoge.php on line 12 string(10) "Hello Huga"

Page 27: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

そういうプラグインはプルリク送った

Page 28: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

Docker運用して気がついたこと

Page 29: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

• ひとつのコンテナにひとつのプログラムが走る

• そのコンテナに異常があっても中に入るのは困難

• 画像やデータベースをDocker運用にしたらデータが消えたりして多分死ぬ

• そのためのManage data in containers

• ログも書き出して置くべき

• build-essentialもぶち込んだので2GB位ある

Page 30: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

ロードアベレージなんか減った…Dockerがごまかしてる?

Page 31: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

ぶっちゃけ使う必要あるん?• boycott dockerなんてページもあるくらい

• HackerNewsでtopに出るぞとかツイッターのフォローたくさん来るぞとか

• ぼくのように「Docker使いましたイエー」とか

• PHP7を使いたいから使うんであって、Dockerを使いたいから使うのではない><

• アプリケーションサーバーをコンテナにする意義はある。ソレ以外はおすすめしない

Page 32: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

PHP 7.0.112月17日

Page 33: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

もちろん対応しましたうわ、やっべーわ、PHP7.0.1ってバレちゃうわー

Page 34: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

まとめ

Page 35: 美乳とPHP7 on Docker - てきとうなさいと。べぇたばん

• PHP7を使うならばこういうのもあるよ!!

• UbuntuやDebian、CentOSの公式パッケージを待とうというのもあるよ!!

• Docker・PHP7の今後の進化を期待してます!

• このLTに対して不快に思われた方はごめんなさいなんでもしますから • やとってください