More Related Content
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!― PPTX
開発環境構築からはじめるPython VisualStudio Codeとpipenvで始めるpython PDF
XML-RPC : Pythonが「電池付属」と呼ばれる理由 KEY
PDF
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情 PPTX
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも) KEY
Windowsにpythonをインストールしてみよう What's hot
PDF
Pyconjp2014_implementations PDF
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |... PDF
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール PDF
PDF
PDF
PDF
あなたの安心を高速に守る Container-based CI PDF
PDF
PDF
PhpStormで始める快適なWebアプリケーション開発 #phpcon2013 PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj PDF
PDF
PDF
PDF
PDF
wxPython入門(大阪Pythonユーザの集まり2014/03) PDF
PyCon JP 2014 plone terada PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。 PDF
PDF
Viewers also liked
PDF
PDF
PDF
PDF
PPTX
PDF
PDF
超初心者向け!Php勉強法とプログラミングの基礎の基礎 PDF
PDF
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト PDF
PPTX
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作 PDF
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編) PDF
PDF
PHP初心者に贈る、まちがえないPHPの始め方・学び方 PDF
今、最もイケてるPHPフレームワークLaravel4 PDF
PDF
PDF
PPTX
PSR-1 と PSR-2 を5分でざっくり理解する PPTX
Similar to 8時間耐久 PHP構築の教室
PDF
PHP Source Code Search with PHP PDF
PPTX
PDF
PHP で実行中のスクリプトの動作を下から覗き見る PDF
PDF
PDF
PDF
PDF
PHP7を実際に動かしてみた@第96回PHP勉強会 #phpstudy PDF
Modern PHP Programming @ PFI Seminar PPTX
PPT
PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜 PDF
PDF
PDF
anyenv + phpenv + php-build が便利すぎる件 PDF
PDF
PDF
PDF
PHP-FPMとuWSGI——mod_php以外の選択肢を探る More from Yusuke Ando
PDF
PDF
DevOpsを実現する為のChef実践テクニック Chef12対応版 PDF
Testing your app with Selenium on Travis CI PDF
Travis CIで実現するPHPアプリの自動テスト PDF
Shimokita.Unity Detonatorで爆発 PDF
Shimokita.Unity RigidbodyとColliderで衝突 PDF
Travis CIですぐに始める継続的インテグレーション PDF
PDF
PDF
Shimokita.Unity パリの街をユニティちゃんが駆ける PDF
PDF
PDF
PDF
Engine Yardで作る NetCommons3のクラウド環境 PDF
PDF
最近のCandyCane - PHP版Redmineでタスク管理を始めよう PDF
PDF
PDF
PDF
Zend四十八手シリーズ Zend_Cache Zend_Paginator 8時間耐久 PHP構築の教室
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
本日のメニュー
PHPの動く仕組み
ビルドのイロハ
設定と拡張
最適化への道
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 7.
- 8.
- 9.
HTMLを表示する流れ
公開ディレクトリ
Webサーバ
httpd.conf
公開ディレクトリ
どのディレクトリを公開す
るか等が設定されている
ファイルを探して返すのみ
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 10.
PHPが動作する流れ
Webサーバ
自分で書くのは大抵これ
PHP
PHP
スクリプト
拡張モジュール
複数のプログラムが連携
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 11.
- 12.
自動インストール
# yuminstall php
# apt-get install php
# port install php5
何が起きたか理解している? 訳も分からずコピペしてない?
トラブルの原因がわかる? 設定の方法は?
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 13.
根源的な
知識
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 14.
- 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)
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
gcc入ってる?
# whichgcc
•入ってない
/usr/bin/which: no gcc in ....
•入ってる
/usr/bin/gcc
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 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)
- 32.
- 33.
- 34.
- 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)
- 36.
- 37.
- 38.
- 39.
./configure してみたが?
libxml2が無いらしい...
(libxml2-devel も入れよう)
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 40.
- 41.
make
時間がかかる
(ファンも回る)
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 42.
数分後...
バイナリが出来た!
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 43.
- 44.
動作確認
$ ./sapi/cli/php -v
PHP5.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 -S192.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)
- 48.
- 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)
- 50.
- 51.
- 52.
PHP拡張
MySQLやmbstringは
拡張
PHP自体はセットアップできた
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 53.
- 54.
- 55.
mbstring
•文字コードの変換などに使う
•日本では事実上、必須の拡張
$ configure --enable-mbstring
$ make
# make install
有効にするのは簡単
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 56.
- 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)
- 59.
- 60.
mysql / PDO_MySQL
•MySQLに接続する機能
•PHP5.3以前は要MySQL
$ configure --with-mysql --with-pdo-mysql
$ make
# make install
最近はビルドが簡単に
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 61.
- 62.
png.h
libpng-devel が必要
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 63.
入りました
# yum installlibpng-devel
$ configure --enable-gd
$ make
# make install
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 64.
- 65.
オプションは残る
自分のPHPがどのようなオプ
ションでコンパイルされたか
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 66.
- 67.
- 68.
- 69.
- 70.
- 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)
- 72.
- 73.
- 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)
- 75.
- 76.
- 77.
APC
•PHPスクリプトの解析結果を保存
•解析抜きでZendEngineが稼働
•WordPressなら4倍くらい速く
•スクリプトが多い複雑なコードに効く
•Key-Value Storeとしても使える
# pecl install apc
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 78.
- 79.
php-fpm
•スーパー高速なnginxで稼働させる
•実はPHPにはほとんど効果がない
•SAPIの一種
$ configure --enable-fpm
$ make
# make install
nginxは画像やCSSに効く
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 80.
- 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)
- 83.
- 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)
- 85.
- 86.
練習: WordPressを導入
•yum installmysql-server
•service mysqld start
•/usr/share/nginx/html の下が公開
•/etc/nginx/conf.d/default.conf の
index に index.php を足す
8時間耐久PHP構築の教室 / Yusuke Ando (@yando)
- 87.
- 88.
- 89.