簡単なWordPress高速化

ググればいくらでも出てきたので敢えて俺が書く必要もあるまいて。自分用健忘録。

WordPress を高速化する5つの方法

MySQLのキャッシュ有効化。

$ sudoedit /etc/mysql/my.cnf
# in section [mysqld]
> query_cache_size=24M
$ sudo rc-config restart mysql

PHP拡張APC(中間コードキャッシュ)。

$ sudo emerge pecl-apc
$ sudo rc-config reload apache2

終わり。うっわ簡単。これだけでおよそ描画開始までの遅延が半分にw

鯖の状態を視覚化するツールmunin

グラフィカルな鯖缶ツールはあった方がいいなと思って探したらMuninってのが良さ気。正味使えりゃ何でも良かった。他に何があるかは知らない。

gentooでの記録なので違う方は適所読み替えればおk。emergeはyumとかaptみたいなもん。

$ sudo emerge munin
$ munin-check
  #各ファイルの権限とかをチェックしてくれる
$ sudo chown munin:munin /var/lib/munin/crontab
  #これだけで済んだ
$ /usr/sbin/munin-node-configure --shell --families auto,manual,contrib
  #使えるプラグイン一覧
$ sudoedit /etc/munin/munin-node.conf
#変更箇所
< user root
< group root
---
> user munin
> group munin
$ sudo crontab -u munin /var/lib/munin/crontab
$ sudo rc-config start munin-node
$ sudo rc-config add munin-node default
$ sudo htpasswd -c /etc/munin/munin-htpasswd sulume
  #デフォルトでBasic認証掛かる、不要なら.htaccess弄る

mysqlには皆rootばっかり使ってるけど、それは変だろう、ってことで、mysqlに監視用ユーザ作った。MySQLリファレンスのGRANTより権限はsuperだけでよさげ。

mysql> create user 'munin'@'localhost' identified by 'password';
mysql> grant super on *.* to 'munin'@'localhost';
#/etc/munin/plugin-conf.d/munin-node
[mysql*]
env.mysqlopts -u munin -ppassword

デフォのhtml生成先が/var/www/localhost/htdocs/munin/だったので適当に表示される様に調整。これで表示され・・・グラフ画像に文字が表示されない( ゚д゚)□だらけwwwそういえばフォントが必要なのか。読めればいいので適当にフォントを選んだ。念のため日本語対応のX用じゃない奴にした。

$ qsearch media-fonts
  #フォントっぽいパッケージ一覧、qsearchが無かったらemerge -s fontとかでも
$ sudo emerge fs-fonts

画像の更新を待ったらちゃんと文字が表示された。温度とファン回転数が見れたので、ついでにfancontrolの値を調整しといた。画像はこんな感じ。

munin image

samba doesn’t dereference symlinks

sambaを更新(前回の記事)したらシンボリックリンクを辿らなくなった。

logの’IPC$’の部分は共有名でコロコロ変わります。

[2010/06/04 01:23:24,  0] param/loadparm.c:9791(widelinks_warning)
  Share 'IPC$' has wide links and unix extensions enabled. These parameters are incompatible. Wide links will be disabled for this share.

調べたところこんな問題があるんだと、
http://www.samba.org/samba/news/symlink_attack.html

故にセキュリティ上wide linksとunix extensionsを共存させられないからwide linksを無効にするんだと。いやー、この場合unix extensionsの方が問題アリだろwなんでそっち優先すんのw

解決法は[global]セクションにこの二行を追加(もちろん既にある時は変更)。wide linksはデフォでyesらしいけど、消したら動かなかったから一応明記した。

wide links = yes
unix extensions = no

emerge samba blocking

$ emrege -puD world
...
[ebuild  N    ] sys-libs/tdb-1.2.1  USE="python -static-libs -tdbtest -tools"
[ebuild  N    ] sys-libs/talloc-2.0.1-r1  USE="-compat -doc -static-libs -swig"
[ebuild     U ] net-fs/samba-3.4.6 [3.0.37] USE="client%* netapi%* server%* smbclient%* -addns% -aio% -avahi% -cluster% -ldb% -quota% -smbsharemodes%"
[blocks b     ] <net-fs/samba-3.3 ("<net-fs/samba-3.3" is blocking sys-libs/tdb-1.2.1, sys-libs/talloc-2.0.1-r1)

またか、以前mktempとかe2fsprogsとかでもあったけど、バージョンアップ前のブロッキングなので消してやる。もう慣れただけど最初ぶつかった時は困ったなあw

$ sudo emerge -C samba
...
$ emerge -puD samba
...
[ebuild  N    ] dev-libs/iniparser-3.0b-r1
[ebuild  N    ] app-text/build-docbook-catalog-1.4
[ebuild  N    ] app-text/docbook-xsl-stylesheets-1.75.2
[ebuild  N    ] sys-libs/talloc-2.0.1-r1  USE="-compat -doc -static-libs -swig"
[ebuild  N    ] dev-libs/libgpg-error-1.7  USE="nls -common-lisp"
[ebuild  N    ] dev-libs/libgcrypt-1.4.5
[ebuild  N    ] dev-libs/libxslt-1.1.26  USE="crypt python -debug"
[ebuild  N    ] sys-libs/tdb-1.2.1  USE="python -static-libs -tdbtest -tools"
[ebuild  N    ] net-fs/samba-3.4.6  USE="acl client ldap netapi pam readline server smbclient -addns -ads -aio -avahi -caps -cluster -cups -debug -doc -examples -fam -ldb -quota -smbsharemodes -swat -syslog -winbind"
$ sudo emerge -uD samba
...

そんなことより昨日/homeのファイルシステムが壊れるどころかオールゼロ化されてた、原因はメモリ不良で以前兆候があったかから割とすぐ特定できた。このブログはDB上にデータがあるらしく無事やったけど、ユーザー設定が全部消えたorzバックアップって大事だね!

Visual Studioでビルド時のファイルオープンエラー

対象はVista以上。俺はWindows Server 2008 R2で発症。

症状はVisual Studioのあらゆるバージョンで、F5とかで実行後にビルドしようとすると以下のようなエラーが発生。そのexeのプロセスが残ってるわけでもなく、ファイルロックはシステムプロセス(pid=4)のみ、explorerから削除は出来たりする。

error LNK1104: ファイル '[ターゲット].exe' を開くことができません。

解決法は”Application Experience”サービスを有効(手動でおk)にしろ、とのこと。

原因他詳細は以下(英語)。
Can’t delete EXE files in Vista / Windows 7 (SOLVED)

経緯は以下。
Visual Studio フォーラム > ビルド時の不明なファイルオープンエラー

そもそもそのサービスを無効にしてしまったのは鯖OSの都合で、別の問題(ファイル共有が有効にならない)を解決するためにセキュリティの構成を作り直したからだと思う。

それにしても初めてMSDNフォーラム使ったw人が多いだけあって、反応も早かった。詳細書いたらちゃんと誘導してくれるし。案外便利だな、なんで今まで使わなかったんやろ?

ブログソフト

ブログソフトWordPressを採用。重くてリッチなMySQL+PHP。

余計な時間を割きたくなかったので最もポピュラーな部類から選ぼうと思って、これとMovable Typeの二者択一。取り敢えず両方動かしてみようと思ったらMovable TypeがDL出来なかったのであっさりWordPressに決定。うちの鯖が王道LAMP構成なので動作に問題はない。

サイトの”インストール”に従ってそのまま問題なく設定、動かしてみると案外使い勝手が良い。ただやっぱり動作は重い。適当にググったらWP Super Cacheとか言う奴の説明があったからそのままreadmeに従ってインストール。面倒だったがこれで速く、なったのか分からない。

次に必須要件のコードハイライト、ググったら『ソースコードをハイライトしてくれるWordPressのプラグイン』って記事発見。コードハイライトプラグインの比較があるので参考にして、そこと同様にSyntaxHighlighter Evolvedに落ち着いた。C++,C#,bash辺りが対応してたらよろしい。それに割かし見た目も良いしコピーできて便利だ。

因みにGoogle ~ってのはGoogle codeにホスティングされてるsyntaxhighlighterを使ってるってだけっぽい。確かに名前がややこしいな。

最後にサンプル。n番目の素数を求める(prime(0)=2)。ちゃんと<iostream>とか出てるねw

#include <iostream>

typedef unsigned long long type;

int main()
{
	type n, p;
	std::cin >> n;

	if(!n--)
		p = 2;
	else
		for(type i = 3; ; i += 2)
		{
			for(type j = 3; j * j <= i; j += 2)
				if(i % j == 0)
					goto noprime;
			if(!n--)
			{
				p = i;
				break;
			}
			noprime:;
		}

	std::cout << p << std::endl;

	return 0;
}

念願のブログ開設

前々から所謂blogという奴を作ろうと思ってたので作ってみた。

プライベートな内容じゃなくって、技術的な事をベースに書くのが目的で、ブログサービスって結構あちこちあるんだけど要件に合うものが無かった。例えばコード貼っつけたりなんかは特によくある話で、コードハイライトなんかは必須の機能だったりする。プラグイン式に機能拡張出来るって理由で結局設置型に落ち着いた。かなり前から開設しようと思いながら行動を起こすのに時間がかかったのは忙しいからという理由だけじゃなくて、個人的に「ブログ」という言葉が嫌いだったからってのもある。敢えて日記っていう名前で事を書いてた時もあったけど、どうしてもそれはプライベート方向な感じ。しかも最近はそういうのはコミュニティサービスに書くのが流行りらしい。世の流れに逆らうのは良くない。仕方がないからブログを開設した。つまるところは諦めたんです。

デフォでコードハイライト出来るとか言うとはてなダイアリーなんかがあるけど(プログラマーなんかははてなユーザ多いよね)、なんといっても俺は未だにはてなアカウントを作ってない。はてなの存在を知らなかったわけじゃない。理由はsulumeって名前が既に取られてたから。ハンドルネーム変えたいとかは割と思ってたりするし、他の名前取りゃいいんだろうけど、何か癪だ。そんなワケで俺は改名するまではてなは使わない。そんな馬鹿なジンクスを決め込んでる自称プログラマー、そしてこのブログをよろしくお願いします。