Archive for the “WordPress” Tag

Amazon EC2 の t1.microインスタンスでMySQLがよく落ちる

POSTED: Jun 29, 2013, 3:19 pm
TAGS: , ,

EC2 の t1.microインスタンスにてWordPressを複数たててると、まーよくMySQLが落ちます。
しまいには起動もしなくなるので、MySQLのログを見てみます。

130629  5:46:48 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
130629  5:46:48 InnoDB: Completed initialization of buffer pool
130629  5:46:48 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130629  5:46:48 [ERROR] Plugin 'InnoDB' init function returned error.
130629  5:46:48 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130629  5:46:48 [ERROR] Unknown/unsupported storage engine: InnoDB
130629  5:46:48 [ERROR] Aborting

という感じでバッファが足りないと起こられてました。

問題のメモリをfreeで確認してみます。

$ free
             total       used       free     shared    buffers     cached
Mem:        608476     565044      43432          0       1284      53996
-/+ buffers/cache:     509764      98712
Swap:            0          0          0

えっ(;゚д゚) Swapゼロ。
t1.microインスタンスには613MBのメモリしか無い上にSwap領域も無いみたいなのでSwap領域を作ってあげると良いみたいですね。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 32.7992 s, 32.7 MB/s

$ sudo mkswap /swapfile 
mkswap: /swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=219ec0fb-4c67-449b-a7bb-c082971b68d2

$ sudo swapon /swapfile

$ free
             total       used       free     shared    buffers     cached
Mem:        608476     601432       7044          0        824      88752
-/+ buffers/cache:     511856      96620
Swap:      1048572          0    1048572

うむ、これで安心ですね!

CORESERVERで手っ取り早くWordPressをインストール、使いやすくする方法

POSTED: Mar 25, 2013, 12:21 pm
TAGS: ,

ssh接続など細かい設定ができて汎用が効くので良く利用しているCORESERVER
デフォだとバージョンの古いphp、かつセーフモードで動いているのですが、これだと色々と不都合なことが多いですよね。
WordPressのファイル群にある.htaceessに下記の一行を加えてしまいましょう。

AddHandler application/x-httpd-php54cgi .php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

これでプラグインのインストールやテーマのインストール、画像のアップロードなどなど、何も手を加えなくてもスムーズにできるようになるはず。

WP-PageNaviとquery_postsを連携する方法

POSTED: Nov 9, 2012, 1:44 pm
TAGS:

WordPressでスタンダードに使われるページングプラグインWP-PageNavi
WP-PageNaviとquery_postsを併用して、クエリの内容にposts_per_pageなどを入れるとWP-PageNaviが正しく機能しない場合があります。これはWP-PageNaviがquery_postsのクエリを無視し、基本設定を見にいってしまうために起こります。

そこで、WP-PageNaviとquery_postsを連携する方法はないかと。。
調べてみるとwp_pagenavi();にクエリを投げ入れられる引数がありました。

wp_pagenavi(array('query' => $my_query));

このような形式でクエリを入れてやるとページングがクエリ通りに機能するようになります。
具体的な使い方としては、query_postsを使わずに

if(have_posts()):
	$my_query = new WP_Query('cat=13&showposts=15'.'&paged='.$paged);
	while ( $my_query->have_posts() ) : $my_query->the_post();

というようにWP_Queryクラスを使ってクエリオブジェクトを生成しておきます。
そのあとに、ループ外でwp_pagenaviに配列で渡してやります。

wp_pagenavi(array('query' => $my_query));

参考

WordPressの自動プラグインインストールを手早く設定する方法

POSTED: Jan 25, 2012, 8:45 pm
TAGS:

「自動プラグインインストール」と「自動アップグレード」とかの「自動」系。FTP接続でも可能ですが専用サーバーやVPSでコマンドライン使えるとサクサクと簡単に環境を整えることができます。

find . -type f -exec chmod 664 {} \;
find . -type d -exec chmod 775 {} \;
chown apache.apache wp-admin/update.php
chown apache.apache wp-admin/update-core.php
chown apache.apache wp-admin/plugins.php

これでもうFTP接続情報なんたらの画面からおさらば。
インストールもアップグレードもアップデートも削除もペキペキ進みます。

ということで最近専用サーバーやVPSにとにかくWordpressをインストールしまくってます。

WordPressでGDとImageMagick

POSTED: May 18, 2011, 11:29 am

だいぶ前から繰り広げられているGDとImageMagickの比較。GDはPHP4.3からデフォルトで拡張機能として実装されているライブラリで、gif、jpeg、png、wbmpのような形式のファイルを扱うことができます。一方ImageMagickは、100種類以上のファイル形式に対応し、GPL互換の緩いライセンスが適用された今風のソフトウェア。無論、生成された画像の出来栄え見ると断然ImageMagickに軍配があがるわけですが、普通の感覚でWebサイトを見る分には何ら問題がない程度の違いです。むしろリサイズにGDを使っているかImageMagickを使ってているか、その差なんて誰も気づかないでしょう。

ただ最近、RAW撮った写真をApertureで現像して、WordPressにアップしてというフローで、ブログに写真を貼るようになってからGDのクセが気になってしょうがなくなってしまいました。
そもそもWindowsのディスプレイで見てしまえば、色がちっとばかしどうであろうとそんなん関係ねぇ!になるのですが、撮った本人としては、色が飛んだり、リサイズの具合でピンがボケたりすると気になってしまうわけです。(自分しかわからない神経質の世界です)

ということで、そんな無駄に神経質なところを満足させようとWordPressにImageMagickを使ってもらうために試行錯誤してみました。

WordPress2.9の頃からfunction.phpを使った方法があったようですが、現在はImageMagick Engineという便利なプラグインがありました。

もちろん動作にはImageMagickがサーバーにインストールされている必要があるので、インストールします。
ちなみにCentOSの場合、yumでインストールすると古いバージョンがインストールされてしまいます。古いバージョンの場合、対応していないコマンドオプションがいくつかあるようなので、ソースから最新のImageMagickをインストールします。

簡潔にコマンドだけ書くと。

$ sudo yum -y install bzip2-devel lcms-devel libjpeg-devel libX11-devel libXt-devel libtiff-devel ghostscript-devel libXext-devel
$ wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.6.9-9.tar.gz
$ tar xzvf ImageMagick.tar.gz
$ cd ImageMagick--6.6.9-9/
$ ./configure && make
$ sudo make install
$ pecl install imagick

PHPでImageMagickを扱えるようにPECLでimagickもインストールしてます。

さてサーバーへImageMagick、WordPressへImageMagickプラグインをインストール後、プラグインの設定画面でパス(ソースからインストールしたので/usr/local/bin)と生成クオリティを変えられるようになります。
90あたりからファイル容量がガツンと増えますが、このブロードバンド時代にファイル容量どうのこうの言うのもナンセンスなので思いきって95に設定してしまいます。というよりも、90以下に設定するとGDと変わらないじゃん、くらいの差になってしまうので。
ちなみにこのプラグインには、今までアップした画像も一括してImageMagickでリサンプリングしてしまう機能も付いています。ご親切にどうもありがとう!