知人が Ubuntu モデルの Dell Inspiron Mini 12 を買って、ちょっと使わせてもらったときに気づいたことをメモ。
動画の音が出ない
参考:デジタルギア-奮戦記: Ubuntu音声問題の発生
「/etc/modprobe.d/alsa-base」の「options snd-usb-caiaq index=-2」の下に「options snd-hda-intel model=dell」を追加。
無線LANが認識されなくなった
参考:[ubuntu] Broadcom Corporation BCM4312 802.11b/g funny problem – Ubuntu Forums
echo wl | sudo tee -a /etc/modules
無線LANに接続するとフリーズ(5/5 追加)
参考:Ubuntu日本語フォーラム / 無線LANフリーズします
無線LANの共有キーが長すぎるとドライバのバグでシステムがフリーズしてしまう。キーを短くするとOK。
その他
Inspiron Mini は光学ドライブがないのでOS再インストール時に外付け光学ドライブを持ってないと厄介なわけだが、実はOS再インストール用のDVDのなかにUSBメモリ用のイメージも入っている。
DVDルートにある「belmont-ym-stable-install-usb-20081121-0.img」がそれ。
これを使えばUSBメモリで再インストールできる。
実は Firefox3 にアップグレードしてから Java が含まれているページを開くと、フリーズしたりタブが閉じられなくなったりといった問題が起きていたんですが、FirefoxがJAVA実行できない – 覚え書きに解決法がありました。
about:config を開いてplugin.scan.SunJRE という名前で文字列形の設定を作り、値を 1.3 にします。後は再起動。
コメント欄を見ると結構同じような問題に出くわしている人多いのかも。
自分用もあって忘れないために WordPress.org へプラグインの公開の仕方をメモ。プラグインの作り方ではなく公開の仕方限定。
必要な知識
- PHP – WordPress 自体が PHP なのでこれは必須
- WordPress – WordPress のプラグインを書くためには WordPress の内部構造などを知っていないと難しい
- Subversion – WordPress.org は各種プラグインを SVN で管理している
プラグイン作った。次は?
- WordPress.org のアカウントを持っていなければ取得
- WordPress › Requests にて、プラグインの名前と説明と任意でプラグインのアドレスを書いてリクエスト送信
- リクエストが承認されると Subversion のアドレスが送られてくるので、そのリポジトリにプラグインをインポート
- 適切な readme.txt を作り、プラグインの本体ファイルに適切なコメントをつける(後述)
- リリースバーションごとに readme.txt などを編集し、SVN のタグ付けをする(後述)
- WordPress.org が15分毎に巡回してくれて、正しくコメントが付けられていればプラグインディレクトリーに掲載される
readme.txt とコメントとは?
WordPress.org はプラグインの更新のチェックに trunk/readme.txt と本体ファイルのコメントを使用する。
readme.txt は書式が決まっていて、readme.txt の例を参照。WordPress/BBPress Plugin readme.txt Validator を使用すればバリデートできる。
本体ファイルのコメントは、PHPファイルの先頭に次のようなコメントを書く。
/*
Plugin Name: Example Plugin
Plugin URI: http://example.com/foo
Description: This plugin is an example.
Version: 1.0
Author: Bar
Author URI: http://example.com
*/
他のプラグインを参考にすれば大体OK。
プラグインをリリースしたい
プラグインのリリースは SVN のタグ付けを使う。
readme.txt と 本体ファイルのコメントのそれぞれ Stable tag と Version の項目をリリースするバージョンにあわせる。
必要なファイルを編集したら SVN でタグ付け。タグ名は数字とピリオドのみを使ったほうが良いと公式のドキュメントには書いてある(1.2.3はOK、ver1.2RC1などはNG← 実際は可能)。
あとは巡回で更新が認識されればプラグインディレクトリーに載る。
参考になるドキュメント
SVNのログでチケットの操作ができるとっても便利なtrac-post-commit-hookですが、DreamHostで使うには難がありました。
最大の難点は post-commit が dhapacheというユーザーで実行されるということで、これが数々の問題を引き起こします。
色々と実験して解決策を見つけたのでポストします。
なお、解決策は SQLite を使っている場合と MySQL を使っている場合で異なります。
SQLite と MySQL の共通 post-commit
コミット後にスクリプトを実行するため、/home/***/svn/projectid/hooks に post-commit という名前のファイルを作成します。
このファイルがコミット後に実行されるわけですが、dhapache によって実行されるため環境変数の再設定が必要になります。
それなので、.bash_profile などから必要な変数をコピーします。
そして、trac のソースの contrib ディレクトリから trac-post-commit-hook を post-commit と同じディレクトリにコピーします。
さらにsvn_commit_jp.mdから svnlog2utf8 を取得してパスの通るところに置いて実行権を与えます。
post-commitの例(パスなどは適宜変えてください):
#!/bin/sh
HOME=‘/home/***’
export PYTHONPATH="$HOME/local/lib/python: $HOME/local/lib/python/site-packages"
export LD_LIBRARY_PATH="$HOME/local/lib"
export PYTHON_EGG_CACHE="$HOME/tmp"
export PATH="$HOME/local/bin:$PATH"
REPOS="$1"
REV="$2"
LOG=`svnlook log -r $REV $REPOS | svnlog2utf8`
AUTHOR=`svnlook author -r $REV $REPOS | svnlog2utf8`
TRAC_ENV="$HOME/trac_sites/projectid/"
TRAC_URL="http://trac.example.com/projectid/"
python $REPOS/hooks/trac-post-commit-hook \
-p "$TRAC_ENV" \
-r "$REV" \
-u "$AUTHOR" \
-m "$LOG" \
-s "$TRAC_URL"
SQLiteの場合
SQLiteの場合は dhapache が trac のディレクトリの /db/trac.db(デフォルト) へアクセスする権限を持っていないため、エラーになります。
この場合は trac.db に「chmod o+rw」するしか方法がないと思います。書き込み権限を与えるのはやだなと思うときはMySQLの移行も考えてください(MySQLへのパスワードも dhapache が読み取れる必要があるので同じっていえば同じですが)。
MySQLの場合
MySQLの場合は、上で設定した「PYTHON_EGG_CACHE」の値が dhapache が書き込みできるディレクトリを指定していて、trac.ini を読み込めればOKです。
SQLite から MySQLへの移行
SQLite から MySQLへの移行は SqliteToPgScript を使うと便利です。
SqliteToPgScript でMySQLインポートしたら、trac.ini の database の指定を「mysql://user:password@host/database」のようにすればOKです。
普段動画の再生にはffdshow+MediaPlayerClassicを利用しているのですが、新しいPCでDVDを見たらインターレースかかりまくりで酷かったのでデインターレースしようと思ったのですが、予想外に苦戦したのでメモしておきます。
まずはビデオデコーダーの設定画面を出します。そしてCodecsのmpeg2の項目のコーデックをlibmpeg2へ変更。追記:下のDVD decodingにチェックを入れないとDVDを処理してくれないみたいです。
そしてDeinterlacingの設定画面に移動してDeinterlacingにチェックを入れます。ここで手こずったのですが、Methodを「ffmpeg deinterlacer」にしておきます。コレにしたらうまくいきました。
前のPCじゃ特別いじってないのにデインターレースされていたのは何でだろう?
さて、4ポスト目でやっとWordPressの引越しです(WordPressのエンコードはUTF-8を想定しています)。
まずはWordPressの本体ファイルの移動です。これは元ディレクトリを圧縮してDreamHost側で展開しました。新しくDreamHostの方でインストールしたものに上書きしてもよかったのですが、コアファイルに色々と手を加えていて面倒くさいので元のデータをそのまま送っちゃいました。
次は、データベース。これが厄介で苦労しました。まず、コントロールパネルでデータベースを作成します。そうしたら、phpMyAdminかMySQLクライアントを使い、作成したデータベースに以下のSQLを発行します。
ALTER DATABASE database_name CHARACTER SET utf8;
database_nameは置き換えてください。そして、元のWordPressのデータベースをダンプします。その後、ダンプしたSQLファイルの先頭に次の分を追加します。コレ重要。
set names utf8;
この文を入れないと復元した時に文字化けを起こします。修正したSQLを新しいデータベースに適応します。
次にphpMyAdminを使って復元したデータベースのwp_optionsテーブルのoption_nameカラムのsiteurlとhome(option_idは1と40)のoption_valueを新しいURLにセットします。
最後にwp-config.phpのデータベースの設定を新しいものに書き換えれば終了です。これでWordPressの管理画面にアクセスできます。
私の場合はこの作業だけで正常に動いたため、問題ありませんでしたが、プラグインが問題を起こす場合もあるので、そのときはプラグインをはずして1つずつ調べていく必要があるかもしれません。
また、プラグインや外部サービスの設定で前のURLを引きずっているものがある場合は新しいURLにセットしなおす必要があります。私が修正したものを挙げておきます。
- XML Sitemap Generatorの設定変更
- WP-SlimStat-ExのGeo SlimStat(APIキー変更)
- FeedBurnerのURL変更
- ImageManagerのパス変更
- ダウンロード系プラグイン
- QRコード
その他、前の環境の設定のままのものは変更しておきます。これでWordPressの引越しは完了です。
今回はPHP5 FastCGI & PHP.ini のための設定です。WikiではCustom PHP.iniとPHP FastCGIに分かれていますが一緒にやっちゃいます。もちろん、パネルでFastCGIをオンにしておきます。
最初にPHPのコピーを置くフォルダを作ります。WikiのCustom PHP.ini ではドメインのディレクトリの下に置いてますが、複数サイトで共有しようとおもうのでホームに作ります。
mkdir $HOME/cgi-bin
そして関連ファイルをコピーします。
cp /dh/cgi-system/php5.cgi $HOME/cgi-bin/php5.cgi
cp /etc/php5/cgi/php.ini $HOME/cgi-bin/php.ini
コピーした先のphp.iniを編集します。編集内容はお好みで。そして、ファイルの最後の方にでも「date.timezone=”Asia/Tokyo”」の記述を入れます。これでPHPがタイムゾーンを日本と認識してくれます。
ここからFastCGIの設定です。まずはFastCGIのラッパーを作ります。php5-wrapper.fcgiという名前でドメインのディレクトリごとに配置します。Wikiではdispatch.fcgiにするとメモリーを多く使ってもkillされなくなると書いてあります(このWordPessはphp5-wrapper.fcgiでもkillされません。よほどのことがないとkillされない模様。)。中身は以下のようにします。
#!/bin/sh
export PHP_FCGI_CHILDREN=2
exec /home/username/cgi-bin/php5.cgi
usernameは置き換えてください。作成したら実行権を与えます。
chmod u+x php5-wrapper.fcgi
そしてドメインのディレクトリのルートに以下の.htaccessを用意します。
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php5-fastcgi .php
Action php5-fastcgi /php5-wrapper.fcgi
これでPHP5&FastCGIで動くようになります。
最後にPHPのバイナリをアップデートするcronを回します。適当な場所にphp-copy.shとでもして以下のファイルを作成します。
#!/bin/sh
CGIFILE="$HOME/cgi-bin/php5.cgi"
rsync -a /dh/cgi-system/php5.cgi "$CGIFILE"
あとは crontab -e で「@weekly /home/username/php-copy.sh」などとしておきます。
これでPHPに関する設定は完了です。次はWordPressの引越しをメモします。
Recent Comments