Word press on conoha このべん #3

3,081 views

Published on

WordPress, ConoHa

Published in: Technology

Word press on conoha このべん #3

  1. 1. Nginx, Percona, PHP, WordPress WordPress on ConoHa 14年4月15日火曜日
  2. 2. OKAMOTO Wataru @wokamoto14年4月15日火曜日
  3. 3. 14年4月15日火曜日
  4. 4. WordPress Template 14年4月15日火曜日
  5. 5. * WordPress について * Nginx とは? * Nginx Reverse Proxy Cache の紹介 * MySQL チューニングの勘所 * monit によるプロセス監視 * WordPress Template の紹介 * wp-cli の紹介 * VM Image 作成に使用しているツール Menu for Today 14年4月15日火曜日
  6. 6. WordPress WordPress について 14年4月15日火曜日
  7. 7. WordPress ? * OSS のブログ/CMSプラットフォーム * トラフィック量上位100万サイトでのシェア60% 14年4月15日火曜日
  8. 8. WordPress ? 14年4月15日火曜日
  9. 9. WordPress ? 14年4月15日火曜日
  10. 10. Nginx Nginx とは? 14年4月15日火曜日
  11. 11. Nginx ? * OSS の軽量 HTTP サーバ * スレッドモデルでは無く、イベントループモデルを採用 * トラフィック量上位100万サイトでのシェア20% 14年4月15日火曜日
  12. 12. Nginx ? 14年4月15日火曜日
  13. 13. Nginx ? 14年4月15日火曜日
  14. 14. WordPres.com でも採用 $  wget  -­‐S  -­‐-­‐spider  http://wordpress.com wordpress.com|66.155.11.243|:80  に接続しています...  接続しました。 HTTP  による接続要求を送信しました、応答を待っています...      HTTP/1.1  200  OK    Server:  nginx    Date:  Tue,  15  Apr  2014  05:58:07  GMT    Content-­‐Type:  text/html;  charset=utf-­‐8    Connection:  keep-­‐alive    Vary:  Accept-­‐Encoding    X-­‐Frame-­‐Options:  SAMEORIGIN    Vary:  Cookie    Set-­‐Cookie:  wordpress_homepage=existing;  expires=Wed,  30-­‐Apr-­‐2014   05:58:07  GMT Nginx ? 14年4月15日火曜日
  15. 15. PHP は fast-CGI で Apache の mod_php のように Web サーバと同一プロセ スで php を動作させることはできません。 php-fpm などを使って別プロセスで動作させる必要があり ます。 Nginx ? 14年4月15日火曜日
  16. 16. Nginx + php-fpm 14年4月15日火曜日
  17. 17. nginx.conf の例 server  {    listen            80  default;    server_name  _;    root                /path/to/app;    index              index.php  index.html  index.htm;    charset          utf-­‐8;    location  ~  .php$  {        fastcgi_pass      unix:/var/run/php-­‐fpm.sock;        fastcgi_index    index.php;        fastcgi_param  SCRIPT_FILENAME                                            $document_root Nginx + php-fpm 14年4月15日火曜日
  18. 18. php-fpm.conf の例 [www] listen  =  /var/run/php-­‐fpm.sock listen.owner  =  nginx listen.group  =  nginx listen.mode  =  0666 user  =  nginx group  =  nginx pm  =  dynamic pm.max_children  =  15 pm.start_servers  =  5 Nginx + php-fpm 14年4月15日火曜日
  19. 19. Nginx Performance Nginx Reverse Proxy Cache の紹介 14年4月15日火曜日
  20. 20. Nginx Performance Apache, mod_php, WordPress 14年4月15日火曜日
  21. 21. ab -n 100 -c 10 (WordPress トップページ) * Requests per second: 4.26 [#/sec] * Time per request: 2346.174 [ms] * Connection Times Total: 2309 [ms] Nginx Performance Apache, mod_php, WordPress 14年4月15日火曜日
  22. 22. Nginx Performance Nginx, php-fpm, WordPress 14年4月15日火曜日
  23. 23. ab -n 100 -c 10 (WordPress トップページ) * Requests per second: 5.79 [#/sec] * Time per request: 1726.535 [ms] * Connection Times Total: 1617 [ms] Nginx Performance Nginx, php-fpm, WordPress 14年4月15日火曜日
  24. 24. Nginx Performance Reverse Proxy Cache 14年4月15日火曜日
  25. 25. ab -n 100 -c 10 (WordPress トップページ) * Requests per second: 141.24 [#/sec] * Time per request: 708.007 [ms] * Connection Times Total: 636 [ms] Nginx Performance Nginx Reverse Proxy Cache, WordPress 14年4月15日火曜日
  26. 26. Nginx Reverse Proxy Cache 14年4月15日火曜日
  27. 27. nginx.conf の例 http  {            :    proxy_cache_path    /var/cache/nginx/proxy_cache  levels=1:2                                        keys_zone=czone:32m  max_size=256m  inactive=1440m;    proxy_temp_path      /var/cache/nginx/proxy_temp;    proxy_cache_key      "$scheme://$host$request_uri";    proxy_set_header    Host                              $host;    proxy_set_header    Remote-­‐Addr                $remote_addr;    proxy_set_header    X-­‐Forwarded-­‐Host      $host;    proxy_set_header    X-­‐Forwarded-­‐Server  $host;    proxy_set_header    X-­‐Forwarded-­‐For        $proxy_add_x_forwarded_for;    upstream  backend  {        server  unix:/var/run/nginx-­‐backend.sock;    }            : } Reverse Proxy Cache 14年4月15日火曜日
  28. 28. server  {    listen            80  default;    server_name  _;    root                /path/to/app;    index              index.php  index.html  index.htm;    location  ~*  .(js|css|html?|xml|jpe?g|gif|png|swf|wmv|flv|ico)$  {        expires  365d;    }    location  /  {        set  $do_not_cache  0;        if  ($request_method  =  POST)  {            set  $do_not_cache  1;        }        proxy_no_cache          $do_not_cache;        proxy_cache_bypass  $do_not_cache;        proxy_redirect          off;        proxy_cache                czone;        proxy_cache_key        "$scheme://$host$request_uri";        proxy_cache_valid    200  0m;        proxy_pass  http://backend;    } } 14年4月15日火曜日
  29. 29. server  {    listen            unix:/var/run/nginx-­‐backend.sock;    server_name  _;    root                /path/to/app;    index              index.php  index.html  index.htm;    charset          utf-­‐8;    gzip                            off;    gzip_vary                  off;    location  ~  .php$  {        fastcgi_pass      unix:/var/run/php-­‐fpm.sock;        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-­‐Buffering";        fastcgi_pass_header  "X-­‐Accel-­‐Charset";        fastcgi_pass_header  "X-­‐Accel-­‐Expires";        fastcgi_pass_header  "X-­‐Accel-­‐Limit-­‐Rate";    } } 14年4月15日火曜日
  30. 30. cache 時間を php で制御 <?php header('X-­‐Accel-­‐Expires:  '.  60  *  60  *  24); ?> Reverse Proxy Cache 14年4月15日火曜日
  31. 31. WP Plugin“Nginx Cache Controller” Reverse Proxy Cache 14年4月15日火曜日
  32. 32. WP Plugin“Nginx Mobile Theme” Reverse Proxy Cache 14年4月15日火曜日
  33. 33. MySQL Tuning MySQL チューニングの勘所 14年4月15日火曜日
  34. 34. MySQL Tuning #  curl  -­‐L  mysqltuner.pl  |  perl    %  Total        %  Received  %  Xferd    Average  Speed      Ti                                                                  Dload    Upload      To 100  44790    100  44790        0          0    26346            0    0:00  >>    MySQLTuner  1.3.0  -­‐  Major  Hayden  <major@mhtx.ne  >>    Bug  reports,  feature  requests,  and  downloads  a  >>    Run  with  '-­‐-­‐help'  for  additional  options  and  o [!!]  Successfully  authenticated  with  no  password  -­‐   [OK]  Currently  running  supported  MySQL  version  5.5. [OK]  Operating  on  64-­‐bit  architecture mysqltuner.pl 14年4月15日火曜日
  35. 35. MySQL Tuning -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  Storage  Engine  Statistics  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ [-­‐-­‐]  Status:  +ARCHIVE  +BLACKHOLE  +CSV  -­‐FEDERATED  +I [-­‐-­‐]  Data  in  InnoDB  tables:  496K  (Tables:  12) [-­‐-­‐]  Data  in  PERFORMANCE_SCHEMA  tables:  0B  (Tables: [OK]  Total  fragmented  tables:  0 Storage Engine Statistics 14年4月15日火曜日
  36. 36. MySQL Tuning -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  Security  Recommendations    -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ [!!]  User  '@localhost'  has  no  password  set. [!!]  User  '@v210-­‐172-­‐187-­‐188.z0d1.static.cnode.jp'   [!!]  User  'root@127.0.0.1'  has  no  password  set. [!!]  User  'root@::1'  has  no  password  set. [!!]  User  'root@localhost'  has  no  password  set. [!!]  User  'root@v210-­‐172-­‐187-­‐188.z0d1.static.cnode. Security Recommendations 14年4月15日火曜日
  37. 37. MySQL Tuning -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  Performance  Metrics  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ [-­‐-­‐]  Up  for:  5h  5m  4s  (111  q  [0.006  qps],  8  conn,  T [-­‐-­‐]  Reads  /  Writes:  96%  /  4% [-­‐-­‐]  Total  buffers:  232.0M  global  +  1.5M  per  thread [OK]  Maximum  possible  memory  usage:  424.0M  (2%  of  i [OK]  Slow  queries:  0%  (0/111) [OK]  Highest  usage  of  available  connections:  0%  (1/ [OK]  Key  buffer  size  /  total  MyISAM  indexes:  16.0M/ [OK]  Query  cache  efficiency:  41.3%  (38  cached  /  92   [OK]  Query  cache  prunes  per  day:  0 [OK]  Sorts  requiring  temporary  tables:  0%  (0  temp  s [!!]  Temporary  tables  created  on  disk:  28%  (2  on  di Performance Metrics 14年4月15日火曜日
  38. 38. MySQL Tuning -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐  Recommendations  -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ General  recommendations:        MySQL  started  within  last  24  hours  -­‐  recommenda        Enable  the  slow  query  log  to  troubleshoot  bad  q        When  making  adjustments,  make  tmp_table_size/ma        Reduce  your  SELECT  DISTINCT  queries  without  LIM Variables  to  adjust:        tmp_table_size  (>  64M)        max_heap_table_size  (>  64M) Performance Metrics 14年4月15日火曜日
  39. 39. Monit monit によるプロセス監視 14年4月15日火曜日
  40. 40. Monit 14年4月15日火曜日
  41. 41. Monit #  monit  の監視間隔 set  daemon  30    with  start  delay  5   #  web  ステータスチェック set  httpd  port  2812  and    use  address  localhost    allow  localhost   #  アラートメールの送信先 set  alert  root@localhost set  alert  example@example.com   #  設定ファイルのインクルード include  /etc/monit.d/* /etc/monit.conf の例 14年4月15日火曜日
  42. 42. Monit check  process  mysqld    with  pidfile  /var/run/mysqld/mysqld.pid    start  program  =  "/sbin/service  mysqld  start"    stop  program  =  "/sbin/service  mysqld  stop" /etc/monit.d/mysqld の例 14年4月15日火曜日
  43. 43. Monit check  process  php-­‐fpm    with  pidfile  /var/run/php-­‐fpm/php-­‐fpm.pid    start  program  =  "/sbin/service  php-­‐fpm  start"    stop  program  =  "/sbin/service  php-­‐fpm  stop" check  directory  php_tmp  with  path  "/var/tmp/php"    if  failed  uid  nginx  then  exec  "/bin/chown  -­‐R  nginx:nginx  /var/tmp/php" check  directory  php_session  with  path  "/var/tmp/php/session"    if  failed  uid  nginx  then  exec  "/bin/chown  -­‐R  nginx:nginx  /var/tmp/php/ses check  directory  php_log  with  path  "/var/log/php-­‐fpm"    if  failed  uid  nginx  then  exec  "/bin/chown  -­‐R  nginx:nginx  /var/log/php-­‐fpm /etc/monit.d/php-fpm の例 14年4月15日火曜日
  44. 44. ConoHa WordPress Template WordPress テンプレートの紹介 14年4月15日火曜日
  45. 45. * OS: CentOS 6.5 * Web: Nginx ver.1.4.4 * PHP: php-fpm ver.5.4.23 with APC * DB: Percona MySQL ver. 5.5.35 * System Monitoring: Monit ver.5.5 WordPress template 14年4月15日火曜日
  46. 46. WordPress template Heartbleed? #  rpm  -­‐q  openssl openssl-­‐1.0.1e-­‐el6_5.7.x86_64 上記のパッケージ番号であれば対応済み 上記のパッケージ番号以外の場合は yum でアップデート 後、VPS を再起動してください。 #  yum  update  openssl #  reboot 14年4月15日火曜日
  47. 47. WordPress template 14年4月15日火曜日
  48. 48. WP-CLI wp-cli の紹介 14年4月15日火曜日
  49. 49. WP-CLI 14年4月15日火曜日
  50. 50. * WP-CLI Install WP-CLI $  curl  -­‐L  https://raw.github.com/wp-­‐cli/builds/ gh-­‐pages/phar/wp-­‐cli.phar  >  wp $  chmod  +x  wp 14年4月15日火曜日
  51. 51. WP-CLI $  cd  /path/to/wordpress $  wp  core  download  -­‐-­‐locale=ja $  wp  core  config  -­‐-­‐dbname=wp      -­‐-­‐dbuser=wp_user  -­‐-­‐dbpass=password      -­‐-­‐dbhost=localhost  -­‐-­‐locale=ja $  wp  core  install  -­‐-­‐url=http://example.com      -­‐-­‐title=test  -­‐-­‐admin_name=admin      -­‐-­‐admin_email=admin@example.com      -­‐-­‐admin_password=test * WordPress Install 14年4月15日火曜日
  52. 52. WP-CLI $  wp  plugin  install  hotfix $  wp  plugin  activate  hotfix $  wp  plugin  status 4  installed  plugins:    I  akismet                        2.5.9    I  hello                            1.6    A  hotfix                          1.0    A  wp-­‐multibyte-­‐patch  1.7   * WordPress Plugins Install 14年4月15日火曜日
  53. 53. WP-CLI $  cd  /path/to/wordpress $  wp  core  update $  wp  core  update-­‐db $  wp  core  version  -­‐-­‐extra WordPress  version:  3.7.1 Database  revision:  25824 TinyMCE  version:      3.59  (359-­‐20131026) * WordPress Core Update 14年4月15日火曜日
  54. 54. WP-CLI $  wp  plugin  status 3  installed  plugins:    I  akismet                        2.5.9  UA  nginx-­‐champuru          1.6.0    I  wp-­‐multibyte-­‐patch  1.7 Legend:  A  =  Active,  I  =  Inactive,  U  =  Update $  wp  plugin  update  nginx-­‐champuru $  wp  plugin  update-­‐all * WordPress Plugins Update 14年4月15日火曜日
  55. 55. WP-CLI $  wp  export $  wp  export  -­‐-­‐post_type=post $  wp  export  -­‐-­‐post_status=publish $  wp  import  export.xml $  wp  import  export.xml  -­‐-­‐skip=attachment * WordPress Export & Import 14年4月15日火曜日
  56. 56. WP-CLI $  wp  nginx  flush $  wp  nginx  list array(3291)  {    [0]=>    object(stdClass)#126  (3)  {        ["cache_id"]=>        string(1)  "0"        ["cache_url"]=>      : * Nginx Cache Controlle 14年4月15日火曜日
  57. 57. Chef VM Image 作成に使用しているツール 14年4月15日火曜日
  58. 58. Chef 14年4月15日火曜日
  59. 59. Chef 14年4月15日火曜日
  60. 60. Chef Infrastructure as Code 14年4月15日火曜日
  61. 61. Chef Infrastructure as Code 14年4月15日火曜日
  62. 62. $  curl  -­‐L  https://www.opscode.com/chef/ install.sh  |  sudo  bash Chef * Chef Solo Install 14年4月15日火曜日
  63. 63. * Recipe package "nginx" do ! action :install end service "nginx" do ! action [ :enable , :start ] end Chef 14年4月15日火曜日
  64. 64. * Chef 活用ガイド Chef http://www.amazon.co.jp/dp/4048919857 14年4月15日火曜日
  65. 65. Thanks ! 14年4月15日火曜日

×