このサイトをPHP 7で動かしました。ついでにDockerコンテナにしました。
TOP > てきとうにこらむ > このサイトについて。 > このサイトをPHP 7で動かしました。ついでにDockerコンテナにしました。
PHP7 on Docker on tekitoh-memdhoi.info!
Hello world!
このサイトはPHP7でできております。
PHP7で動かしてます。このサイトのOSはDebian GNU/Linuxなので、別にdebパッケージを自分で作るのもありだったのかもしれませんが、Dockerを使ってアプリケーションサーバーをコンテナにしてしまって、そのコンテナ内でPHP7にしておいたほうが、自作CMS、PHPそのもののバージョンアップもできるメリットを享受できると思いましたのでDockerにしました。
構成
PostgreSQLといったデータベース、画像ファイルに関してはホスト側にもたせてます。その理由としては当然、「コンテナ内で内容が変更されるといちいち困るから」です。なぜ困るかというと…コンテナそのものとしてつがいのガチョウをコンテナにぶち込んだら子どものガチョウができてましたとか、死んでましたとか困るからです。この喩えわかりづらいかもですが、そういうことです。
起動方法
Apache httpd serverのapache2コマンドでFOREGROUNDオプションをつけてるので、コンテナ内のアクセスが結構むずいです。ココらへんも課題ですが、書きだすもんホストに書き出したら消滅するだろうと思われる課題です。
起動方法としては、systemdに登録しました。オープンソースカンファレンスでDebian GNU/Linuxの最新動向を聞いた時に「ユーザーランドでは意識する必要が無い」と言われてましたが、ぼくはめっちゃ影響受けました。まあ、当然ですね。その騒動のド真ん中にあるDockerを使ってるわけですから。
systemdは以下の様な感じ。
Dockerfileはこんな感じ。(Dockerhubのプライベートリポジトリ使ってますごめんね。)
超難題!!
管理画面に入れなくなった!!しかもログ読めん!!コマッタ!!開発環境の設定を本番環境と同じにして、ようやく理由がわかりました。PHP7の下記オプションが抜けてました。
--with-openssl
--with-opensslは、困ったことにでは以下の様なエラーになってしまいます。
$ configure --with-openssl=/usr/include/openssl ...
...
configure: error: Cannot find OpenSSL's <evp.h>
で、https://github.com/kasparsd/php-7-debian/blob/master/build.shからオプションパクりました。ありがとうございました。
課題
課題としては、ログが抜けてましたので、fluentdに任せようと思います。いや、ホント必要だと思ったわ。これから頑張ろう。
参考にさせてもらいました
各位、ありがとうございます。
- http://qiita.com/74th/items/e8dc1ac1295140413dc8
- http://inokara.hateblo.jp/entry/2013/12/28/121828
- https://github.com/kasparsd/php-7-debian