More Related Content
Similar to 8時間耐久 PHP構築の教室
Similar to 8時間耐久 PHP構築の教室 (20)
More from Yusuke Ando (20)
8時間耐久 PHP構築の教室
- 4. 本日の対象者
PHPを使っている
環境構築が苦手
真っ白になると固まる
実行委員長
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 6. 本日のメニュー
PHPの動く仕組み
ビルドのイロハ
設定と拡張
最適化への道
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 9. HTMLを表示する流れ
公開ディレクトリ
Webサーバ
httpd.conf
公開ディレクトリ
どのディレクトリを公開す
るか等が設定されている
ファイルを探して返すのみ
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 10. PHPが動作する流れ
Webサーバ
自分で書くのは大抵これ
PHP
PHP
スクリプト
拡張モジュール
複数のプログラムが連携
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 12. 自動インストール
# yum install php
# apt-get install php
# port install php5
何が起きたか理解している? 訳も分からずコピペしてない?
トラブルの原因がわかる? 設定の方法は?
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 13. 根源的な
知識
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 15. 注意
運用環境を1から構築するの
は時代遅れ
付け焼刃の手動構築はかえっ
て手間になる
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 16. 補足
今回はVirtualBoxに
CentOS6.0のイメージを入れ
て使います
CentOs 6.0 base x86_64
http://virtualboxes.org/images/centos/
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 22. gcc入ってる?
# which gcc
•入ってない
/usr/bin/which: no gcc in ....
•入ってる
/usr/bin/gcc
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 30. PHPのtar ball
$ curl -L -O http://jp2.php.net/get/php-5.4.4.tar.gz/
from/this/mirror
$ mv mirror php.tar.gz
$ tar zxf php.tar.gz
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 31. PHPのソース
•大量のCのソース群
$ find ./ -type f | grep ".c" | wc
905 905 27290
•大まかなレイアウトを知っておくとト
ラブル解決に役立つ
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 35. そういう事か
$ php -r "var_dump(date('Y-m-d',mktime(0,0,0,12,24,70)));"
string(10) "1970-12-24"
$ php -r "var_dump(date('Y-m-d',mktime(0,0,0,12,24,69)));"
string(10) "2069-12-24"
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 39. ./configure してみたが?
libxml2が無いらしい...
(libxml2-devel も入れよう)
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 41. make
時間がかかる
(ファンも回る)
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 42. 数分後...
バイナリが出来た!
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 44. 動作確認
$ ./sapi/cli/php -v
PHP 5.4.4 (cli) (built: Jul 8 2012 04:15:27)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend
Technologies
$ ./sapi/cli/php -r 'echo "Hello Wolrdn";'
Hello Wolrd
なんか動きそう?
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 45. よろしい
一応インストール完了
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 46. 甘ぇよ...
MySQLが無い
mbstringが無い
gdが無い
etc..
WordPressとか
動かない
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 47. 動かすだけなら...
$ php -S 192.168.225.15:8000
PHP 5.4.4 Development Server started at Sun Jul 8 04:50:57 2012
Listening on 192.168.225.15:8000
Document root is /home/yando/docs
Press Ctrl-C to quit.
[Sun Jul 8 04:51:00 2012] 192.168.225.5:57229 [200]: /index.php
PHP5.4からの新機能
(PHPだけで開発サーバになる)
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 49. 練習: phpをmake
•curl -L -O {url from php.net}
•mv mirror php.tar.gz
•tar zxf php.tar.gz
•yum install make
•cd php-5.4.4
•./configure
•make
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 52. PHP拡張
MySQLやmbstringは
拡張
PHP自体はセットアップできた
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 55. mbstring
•文字コードの変換などに使う
•日本では事実上、必須の拡張
$ configure --enable-mbstring
$ make
# make install
有効にするのは簡単
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 57. もう一つの方法
•共有ライブラリ
•拡張部分が別のバイナリになる
•有効にするには php.ini の変更も必要
$ configure --enable-mbstring=shared
$ make
# make install
extension=mbstring.so
一見面倒に見える
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 58. 静的リンクと動的リンク
静的リンク 動的リンク
PHP
PHP
mbstring mbstring
静的リンクはPHP本体のバイナリに
拡張が組み込まれる
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 60. mysql / PDO_MySQL
•MySQLに接続する機能
•PHP5.3以前は要MySQL
$ configure --with-mysql --with-pdo-mysql
$ make
# make install
最近はビルドが簡単に
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 62. png.h
libpng-devel が必要
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 63. 入りました
# yum install libpng-devel
$ configure --enable-gd
$ make
# make install
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 65. オプションは残る
自分のPHPがどのようなオプ
ションでコンパイルされたか
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 71. 練習: 実用的なビルド
$ ./configure --enable-mbstring=shared
--with-mysql=shared
--with-pdo-mysql=shared
--with-gd=shared
•make
•make install
•php.ini-developmentをコピー
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 74. mod_php
•ApacheからPHPを動作させる
•PHPのソースとApacheが必要
# yum install httpd httpd-devel
$ configure --with-apxs2
$ make
# make install
出来上がったmod_phpはapacheから
有効にする
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 77. APC
•PHPスクリプトの解析結果を保存
•解析抜きでZendEngineが稼働
•WordPressなら4倍くらい速く
•スクリプトが多い複雑なコードに効く
•Key-Value Storeとしても使える
# pecl install apc
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 79. php-fpm
•スーパー高速なnginxで稼働させる
•実はPHPにはほとんど効果がない
•SAPIの一種
$ configure --enable-fpm
$ make
# make install
nginxは画像やCSSに効く
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 81. apache + mod_php
apache 公開ディレクトリ
mod_php
PHPが不要な時もphpのバ
イナリ込みのapacheが動作
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 82. nginx + php-fpm
公開ディレクトリ
nginx
php-fpm
.php
PHPに専念
ファイルを探して返すのみ
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 84. /etc/nginx/conf.d/default.conf
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
# cp -f /usr/local/etc/php-fpm.conf.default /usr/local/
etc/php-fpm.conf
# cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod 755 /etc/init.d/php-fpm
# mkdir /var/log/php-fpm
# chown -R nginx:nginx /var/log/php-fpm
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 86. 練習: WordPressを導入
•yum install mysql-server
•service mysqld start
•/usr/share/nginx/html の下が公開
•/etc/nginx/conf.d/default.conf の
index に index.php を足す
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)