Wednesday, May 29, 2013

【WordPress】 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT

by:OiMax

WordPressのデータを扱っているMySQLのエラーログを確認していたら見慣れないWarningがありました。
# tail -f /var/lib/mysql/*err
130529 12:22:26 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE  on a table with more than one UNIQUE KEY is unsafe Statement: INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_feed_mod_57bc725ad6568758915363af670fd8bc', '1369797746', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
130529 12:22:26 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE  on a table with more than one UNIQUE KEY is unsafe Statement: INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_timeout_dash_de3249c4736ad3bd2cd29147c4a0d43e', '1369840946', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
130529 12:22:26 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE  on a table with more than one UNIQUE KEY is unsafe Statement: INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_dash_de3249c4736ad3bd2cd29147c4a0d43e', '<h4>人気上位</h4>\n<h5><a href=\'http://wordpress.org/plugins/facebook/\'>Facebook</a></h5>&nbsp;<span>(<a href=\'plugin-install.php?tab=plugin-information&amp;plugin=facebook&amp;_wpnonce=0c777d14e5&amp;TB_iframe=true&amp;width=600&amp;height=800\' class=\'thickbox\' title=\'Facebook\'>インストール</a>)</span>\n<p>Add Facebook social plugins and the ability to publish new posts to a Facebook Timeline or Facebook Page. Official Facebook plugin.</p>\n<h4>最新のプラグイン</h4>\n<h5><a href=\'http://wordpress.org/plugins/ppm-testimonial/\'>PPM Testimonial</a></h5>&nbsp;<span>(<a href=\'plugin-install.php?tab=plugin-information&amp;plugin=ppm-testimonial&amp;_wpnonce=93cd144
こんな感じでわーっと出てますね。
MySQLのBINLOG_FORMATが良くないのかな?

現在のフォーマットを確認します。
mysql> SHOW GLOBAL VARIABLES like 'binlog_format';                                                                             
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.00 sec)

STATEMENTですね。
これを、MIXEDにしてみました。
mysql> SET GLOBAL binlog_format = 'MIXED';
# vi /etc/my.cnf
binlog_format=mixed
これでしばらく様子見です。

追伸:MySQLのWarning出なくなりました。

Wednesday, May 22, 2013

PHP5.5 + nginx1.4 + php-fpm + Zend OPcacheを立ち上げてみよう

Conway L.

PHP5.5 + nginx1.4 + php-fpm + Zend OPcacheのインストールメモです
OSはCentOS6です

# cat /etc/redhat-release                                                              
CentOS release 6.4 (Final)


PHPの最新版をインストール

※ここでインストールしているのはPHP 5.5.0RC1で、リリース候補版です
プロダクション環境では安定版のほうが、たぶん良いでしょう

# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum --enablerepo=remi-test install php php-common php-mbstring php-pdo php-cli php-devel php-fpm
# php --version
PHP 5.5.0RC1 (cli) (built: May  8 2013 21:08:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies


nginxの最新版をインストール

# wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
# yum install nginx
# nginx -v
nginx version: nginx/1.4.1


サーバ立ち上げ時に、PHP-FPMが自動起動するようにchkconfigを設定しておく

# /sbin/chkconfig php-fpm on
# /sbin/chkconfig --list


nginxの設定を編集

# cp -r /etc/nginx /etc/nginx.org
# emacs /etc/nginx/conf.d/default.conf

ルートディレクトリの箇所を編集

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }


    root   /usr/share/nginx/html;
    index  index.php index.html;


PHP-FPM向けの設定を追記

    location ~ \.php$ {
      fastcgi_pass unix:/tmp/php.socket;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
      fastcgi_pass_header "X-Accel-Redirect";
      fastcgi_pass_header "X-Accel-Expires";
    }


nginxをリスタート
# /etc/init.d/nginx restart



PHP-FPMの設定を編集

# cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
# emacs /etc/php-fpm.d/www.conf

php.socketとの通信を有効にする

#listen = 127.0.0.1:9000
listen = /tmp/php.socket

ユーザをnginxにする

; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache



; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx


タイムゾーンを東京にする

php_admin_value[date.timezone]= 'Asia/Tokyo'

PHP-FPMをリスタート

# /etc/init.d/php-fpm restart

phpinfoを出すphpファイルを設置

# emacs /usr/share/nginx/html/index.php
<?php phpinfo(); ?>

ブラウザで確認してみましょう



Zend OPcacheをインストールしてみる

Zend OPcacheは、PHP 5.5 のコードキャッシュです
このスライドが参考になります


# yum --enablerepo=remi-test install php-opcache
# php -v
PHP 5.5.0RC1 (cli) (built: May  8 2013 21:08:03)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.2-dev, Copyright (c) 1999-2013, by Zend Technologies

Zend OPcacheと出ました


Opcache Control Panel



Zend OPcacheの状況が見れるスクリプトが公開されています
これを設置しておくと良いでしょう

OCP – Opcache Control Panel
https://gist.github.com/ck-on/4959032


# cd /usr/share/nginx/html/
# wget https://gist.github.com/ck-on/4959032/raw/0b871b345fd6cfcd6d2be030c1f33d1ad6a475cb/ocp.php

※便宜パスワードなど掛けておきましょう


Monday, May 20, 2013

進撃の巨人 タペストリー

進撃の巨人のポスターはまだないみたいですが、、、タペストリーがあるみたいですね。
これは、かなりカッコイイ。

この商品の発売予定日は2013年6月15日です。

だそうです。
品切れになる前に予約しておくといいかも。









Friday, May 17, 2013

Wordpress Popular Postsが重い。。。


著作者:Karns234


Wordpress Popular Postsを外したらblogが軽くなりました
サムネが/wp-content/plugins/wordpress-popular-posts/timthumb.php
を叩きまくっていたみたいで、、、
php-fpmがひぃひぃ言っていたみたいです
(いや、そんなに辛くはないですが。。。そこそこマシに)
ここを何とかしたら良くなりそうですね

サーバのload averageが常時1~2くらいだったのが、0.5に下がりました

Wordpress Popular Postsが、MySQLにクエリ送りまくっていたってのもあるみたいです
MySQLも軽くなりました

イイ感じです

代わりに、Simple GA Rankingというモノがあるらしいので、いろいろ試してみたりしようかなと。

ヒマがあったら自分でプラグイン、書いてみようかな?
むしろ、プラグインよりも、BlogにXML-RPCでPostするようなバッチプログラムならば楽かも。