こんなリプライをいただいたんですが、140文字じゃ収まりきらないので、ブログに書いてみます。
@polidog お伺いしたくぶしつけで失礼なのですが、実際に導入する際ってどういう感じを想定されています? stackoverflowで質問したらタコ殴りになっているのでまだベストプラクティスがわかんないのです http://t.co/6qpjNyWMVD
— CL (@CLCLCL) October 19, 2015
僕はインフラな人じゃないし、ただのPHPerだから、ベストプラクティスはわからないんです。
このリプライから考えた事を記載しておきます。
そもそもPHPのインストールってどういうパターンがあるのか?
実際問題そんなにパターンは多くないかなぁーと思います。
- ソースコードからコンパイルする
- ディストリビューションのパッケージからインストールする
- phpenv+php-buildをつかう
っていったところでしょうか? 他にパッと思いつきません。
ソースコードからコンパイルする
最新版を使いたいとか、そういうのなら使う事が多い気がします。
ちなみに僕がPHPを触り始めた9年前とかは、この方法オンリーではないけれど、どの記事も大体コンパイルしろって記事が多かった気がします。
実際僕もパッケージ使ったら負け的な感じで頑張っていましたw
ディストリビューションのパッケージからインストールする
ぶっちゃけ便利ですよね。 yumだとphp5.3が長い間はいっていたりとか、あったけど・・・
phpenv+php-buildをつかう
2010年ぐらいはよく使っていたような気もします。
その後vagrantとか出てきて、バージョン切り替える必要が皆無になったので、今となっては懐かしいなぁーぐらいです。
プロダクション環境をどう構築するか?
個人的な見解としては、自分が作りたい環境にあったものを選べばいいんじゃない?って思ってしいまします。
それよりも、想定した通りに構築できているかって事の方が重要だと思います。
そしてそれが常に再現できる事が重要なんだと思うんですよね。
chefやansibleが流行る理由もそこにある気がします。 個人的にはchefを応援しています。
僕は、chefでphp入れてます。
開発環境の場合はvagrantつかっているので、chef-zeroでさっくりプロビジョニングできるし、便利です。
chef-cookbooks/phpならパッケージでもソースコードからでもインストールできるしね!
パッケージのセキュリティの対応が遅かったら、ソースコードからコンパイルすればいいと思います。
で、古いインスタンスやら、コンテナを削除して、新しいインスタンスやらコンテナを作る方向でいけばいいんですよ。
クラウドの時代なんだから、クラウド環境使えばいいんですよ。
まとめ
- 好きに環境つくればいい
- できればchefとかAnsibleだのでプロビジョニングする
- テストは書いた方がいい
って事だと思います。 環境構築に正解はないので、自分がこれだと思うものを使えばいいんですよ。
気が向いたらそのうちchefのrepoを公開しますよ。
※ほとんどプロダクション環境を構築しないので、適当な意見です。