Word press on conoha このべん #3

  • 2,052 views
Uploaded on

WordPress, ConoHa

WordPress, ConoHa

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,052
On Slideshare
0
From Embeds
0
Number of Embeds
6

Actions

Shares
Downloads
9
Comments
0
Likes
9

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Nginx, Percona, PHP, WordPress WordPress on ConoHa 14年4月15日火曜日
  • 2. OKAMOTO Wataru @wokamoto14年4月15日火曜日
  • 3. 14年4月15日火曜日
  • 4. WordPress Template 14年4月15日火曜日
  • 5. * WordPress について * Nginx とは? * Nginx Reverse Proxy Cache の紹介 * MySQL チューニングの勘所 * monit によるプロセス監視 * WordPress Template の紹介 * wp-cli の紹介 * VM Image 作成に使用しているツール Menu for Today 14年4月15日火曜日
  • 6. WordPress WordPress について 14年4月15日火曜日
  • 7. WordPress ? * OSS のブログ/CMSプラットフォーム * トラフィック量上位100万サイトでのシェア60% 14年4月15日火曜日
  • 8. WordPress ? 14年4月15日火曜日
  • 9. WordPress ? 14年4月15日火曜日
  • 10. Nginx Nginx とは? 14年4月15日火曜日
  • 11. Nginx ? * OSS の軽量 HTTP サーバ * スレッドモデルでは無く、イベントループモデルを採用 * トラフィック量上位100万サイトでのシェア20% 14年4月15日火曜日
  • 12. Nginx ? 14年4月15日火曜日
  • 13. Nginx ? 14年4月15日火曜日
  • 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. PHP は fast-CGI で Apache の mod_php のように Web サーバと同一プロセ スで php を動作させることはできません。 php-fpm などを使って別プロセスで動作させる必要があり ます。 Nginx ? 14年4月15日火曜日
  • 16. Nginx + php-fpm 14年4月15日火曜日
  • 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. 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. Nginx Performance Nginx Reverse Proxy Cache の紹介 14年4月15日火曜日
  • 20. Nginx Performance Apache, mod_php, WordPress 14年4月15日火曜日
  • 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. Nginx Performance Nginx, php-fpm, WordPress 14年4月15日火曜日
  • 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. Nginx Performance Reverse Proxy Cache 14年4月15日火曜日
  • 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. Nginx Reverse Proxy Cache 14年4月15日火曜日
  • 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. 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. 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. cache 時間を php で制御 <?php header('X-­‐Accel-­‐Expires:  '.  60  *  60  *  24); ?> Reverse Proxy Cache 14年4月15日火曜日
  • 31. WP Plugin“Nginx Cache Controller” Reverse Proxy Cache 14年4月15日火曜日
  • 32. WP Plugin“Nginx Mobile Theme” Reverse Proxy Cache 14年4月15日火曜日
  • 33. MySQL Tuning MySQL チューニングの勘所 14年4月15日火曜日
  • 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. 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. 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. 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. 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. Monit monit によるプロセス監視 14年4月15日火曜日
  • 40. Monit 14年4月15日火曜日
  • 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. 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. 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. ConoHa WordPress Template WordPress テンプレートの紹介 14年4月15日火曜日
  • 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. 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. WordPress template 14年4月15日火曜日
  • 48. WP-CLI wp-cli の紹介 14年4月15日火曜日
  • 49. WP-CLI 14年4月15日火曜日
  • 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. 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. 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. 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. 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. 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. 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. Chef VM Image 作成に使用しているツール 14年4月15日火曜日
  • 58. Chef 14年4月15日火曜日
  • 59. Chef 14年4月15日火曜日
  • 60. Chef Infrastructure as Code 14年4月15日火曜日
  • 61. Chef Infrastructure as Code 14年4月15日火曜日
  • 62. $  curl  -­‐L  https://www.opscode.com/chef/ install.sh  |  sudo  bash Chef * Chef Solo Install 14年4月15日火曜日
  • 63. * Recipe package "nginx" do ! action :install end service "nginx" do ! action [ :enable , :start ] end Chef 14年4月15日火曜日
  • 64. * Chef 活用ガイド Chef http://www.amazon.co.jp/dp/4048919857 14年4月15日火曜日
  • 65. Thanks ! 14年4月15日火曜日