Facebookが開発したPHPを超高速で実行する仮想マシン HipHop VM | A-Listers
を読んで、おぉ、、そんな事になってるのね、なんて思った次第です。
思い返せば、何年前か忘れましたが、@yandoがアレンジしてくれて、
APC開発者のFacebookのエンジニアが会社に遊びにきてくれたのでした。
あの頃は英語なんて全然話せなかったから、聞きたい事あったのに切ない思いをしました。
#隣で@hyoshiokがガツガツ質問してて、俺も、、なんて思ったものです。
んま、そんな前振りはどうでもイイのですが、PHPでVM?へぇー的な感じで、
Getting WordPress running on HHVM | HipHop for PHPでなんていうブログ記事があったもので、
それじゃ、まぁ、やってみますかねぇ的な。いつものようにVirtualBox上のUbuntuで。
#PHP勉強してWordPressのプラグインの1つや2つ作ってやろうと思い始めて
#軽く4年くらい経ってる気がするって話もあったりして。。
■ HipHop VMのインストール
/etc/apt/sources.list に deb http://dl.hiphop-php.com/ubuntu precise main を追加して
# apt-get update # apt-get install hiphop-php Reading package lists... Done Building dependency tree Reading state information... Done ~略~ Setting up hiphop-php (1.201212.0) ... Processing triggers for libc-bin ... ldconfig deferred processing now taking place
■ WordPressインストール
# cd /var/www/ # wget 'http://wordpress.org/latest.tar.gz' --2013-01-16 11:54:57-- http://wordpress.org/latest.tar.gz ~略~ 2013-01-16 11:55:01 (1.70 MB/s) - `latest.tar.gz' saved [5009441] # tar -zxf latest.tar.gz # mv wordpress wp # cd wp/ # ls -l -rw-r--r-- 1 www-data www-data 395 Jan 9 2012 index.php -rw-r--r-- 1 www-data www-data 19929 May 6 2012 license.txt -rw-r--r-- 1 www-data www-data 9175 Nov 30 09:57 readme.html -rw-r--r-- 1 www-data www-data 4663 Nov 18 00:11 wp-activate.php ~略~
でもって、
case-insensitive constants are simply not supported by HipHop
ケースセンシティブじゃない定数はHipHopではサポートされないので、、、
ってのでwp-includes/wp-db.phpを↓こうしなさいと。
20 #define( 'OBJECT', 'OBJECT', true ); 21 define( 'OBJECT', 'OBJECT' ); 22 define( 'Object', 'OBJECT' ); 23 define( 'object', 'OBJECT' );
他にもチョイチョイあったみたいなのですが、いつくか更新かかってTweakしなくて
良くなったみたいな感じです。
■ HipHop用の設定
ココ、前提知識が全く無い人的な観点だとイキナリ何スカ?って感じですが、、
Facebook’s HipHop Also a PHP Webserver – Slashdotによると、
It’s also not just a runtime, it’s also a new webserver
あー、そうなんすねっていう。んでもって設定はマルっとコピペしましたが、
↓この辺の設定がはいっちょります。
・Webサーバーのポートの設定
・Just In Timeなコンパイルだぜ
・ロギング
・ApacheみたいにVirtualHostでRewriteルールが~とか
・静的ファイルの~とか
Server { Port = 80 SourceRoot = /var/www/ } Eval { Jit = true } Log { Level = Error UseLogFile = true File = /var/log/hhvm/error.log Access { * { File = /var/log/hhvm/access.log Format = %h %l %u %t "%r" %>s %b } } } VirtualHost { * { Pattern = .* RewriteRules { dirindex { pattern = ^/(.*)/$ to = $1/index.php qsa = true } } } } StaticFile { FilesMatch { * { pattern = .*.(dll|exe) headers { * = Content-Disposition: attachment } } } Extensions { css = text/css gif = image/gif html = text/html jpe = image/jpeg jpeg = image/jpeg jpg = image/jpeg png = image/png tif = image/tiff tiff = image/tiff txt = text/plain } }
■ HHVMのプロセスを起動
極度のめんどくさがり屋な為、ユーザーがrootとかになってますが、、
何かログファイルが開けないぜ的に怒られたので、、
(プロセスは上がっちゃってたのでKillしましたが…)
# /usr/bin/hhvm --mode daemon --user root --config /etc/hhvm.hdf Cannot open log file: /var/log/hhvm/error.log
ディレクトリ作ってもっかい起動すると、
# /usr/bin/hhvm --mode daemon --user root --config /etc/hhvm.hdf # ps -ef | grep hhvm | grep -v grep root 22831 1 0 12:26 ? 00:00:00 /usr/bin/hhvm --mode daemon --user root --config /etc/hhvm.hdf
起動出来たみたいッス!
■ WordPressの設定
データベースの設定を入れて、
# mv wp-config-sample.php wp-config.php # vim wp-config.php 17 // ** MySQL settings - You can get this info from your web host ** // 18 /** The name of the database for WordPress */ 19 define('DB_NAME', 'wp'); 20 21 /** MySQL database username */ 22 define('DB_USER', 'root'); 23 24 /** MySQL database password */ 25 define('DB_PASSWORD', 'pass');
データベース作っておきます。
# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 1564 Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu) ~略~ mysql> create database wp; Query OK, 1 row affected (0.00 sec)
画面から設定する感じで、
それっぽく表示出来てるみたいです。
HipHop VMのaccess.logログもきてる感じです。
# tail -f /var/log/hhvm/access.log 127.0.0.1 - - [16/Jan/2013:13:42:53 +0900] "GET /wp/wp-admin/load-styles.php?c=0&dir=ltr&load=wp-admin,buttons,customize-controls,wp-color-picker&ver=3.5 HTTP/1.1" 200 31294 127.0.0.1 - - [16/Jan/2013:13:42:53 +0900] "GET /wp/wp-admin/load-scripts.php?c=0&load[]=customize-base,customize-controls,underscore,backbone,media-models,wp-plupload,jquery-ui-core,jquery-ui-widget,jquery-ui-mouse,j&load[]=query-ui-draggable,jquery-ui-slider,jquery-touch-punch,iris,wp-color-picker&ver=3.5 HTTP/1.1" 200 44792 127.0.0.1 - - [16/Jan/2013:13:42:53 +0900] "GET /wp/wp-admin/load-scripts.php?c=0&load[]=jquery,json2,plupload,plupload-html5,plupload-flash,plupload-silverlight,plupload-html4&ver=3.5 HTTP/1.1" 200 53777 127.0.0.1 - - [16/Jan/2013:13:42:54 +0900] "POST /wp/ HTTP/1.1" 200 3040 127.0.0.1 - - [16/Jan/2013:13:42:54 +0900] "GET /wp/wp-content/themes/twentytwelve/style.css?ver=3.5 HTTP/1.1" 200 35292 127.0.0.1 - - [16/Jan/2013:13:42:54 +0900] "GET /wp/wp-includes/js/json2.min.js?ver=2011-02-23 HTTP/1.1" 200 3377 127.0.0.1 - - [16/Jan/2013:13:42:54 +0900] "GET /wp/wp-includes/js/customize-base.min.js?ver=3.5 HTTP/1.1" 200 6852 127.0.0.1 - - [16/Jan/2013:13:42:54 +0900] "GET /wp/wp-includes/js/customize-preview.min.js?ver=3.5 HTTP/1.1" 200 1947 127.0.0.1 - - [16/Jan/2013:13:42:54 +0900] "GET /wp/wp-content/themes/twentytwelve/js/theme-customizer.js?ver=20120827 HTTP/1.1" 200 1002 127.0.0.1 - - [16/Jan/2013:13:42:54 +0900] "GET /wp/wp-content/themes/twentytwelve/js/navigation.js?ver=1.0 HTTP/1.1" 200 863 127.0.0.1 - - [16/Jan/2013:13:46:03 +0900] "GET /wp/wp-admin/customize.php HTTP/1.1" 200 4280 127.0.0.1 - - [16/Jan/2013:13:46:03 +0900] "POST /wp/ HTTP/1.1" 200 3040
めでたしめでたし。
■ んで、、、
ちょ、おま、コレのベンチマークとらないでどーすんねん?って話かと思いますが、
昼休みの時間が終わってしまったため、本日はココまで…mm
技術評論社
売り上げランキング: 9,655
コメント
[…] HHVM(HipHop Virtual Machine)を試してみる | shinodogg.com […]
[…] HHVM(HipHop Virtual Machine)を試してみる | shinodogg.com […]