OpenPNEの最近のブログ記事

まあ、うちは正確には qmail+vpopmail ですが、qmail だけでもやることは一緒。


1.SNS 用のメールドメインを設定

# cd ~vpopmail
# bin/vadddomain yukai.exsample.com
Please enter password for postmaster:<パスワード>
enter password again:<パスワード>
# ls -la domains/yukai.exsample.com
total 28
drwx------  3 vpopmail vchkpw 4096 Feb 16 16:27 .
drwx------  6 vpopmail vchkpw 4096 Feb 16 16:27 ..
-rw-------  1 vpopmail vchkpw   34 Feb 16 16:27 .dir-control
-rw-------  1 vpopmail vchkpw   55 Feb 16 16:27 .qmail-default
-rw-------  1 vpopmail vchkpw    0 Feb 16 16:27 .vpasswd.lock
drwx------  3 vpopmail vchkpw 4096 Feb 16 16:27 postmaster
-rw-------  1 vpopmail vchkpw  122 Feb 16 16:27 vpasswd
-rw-------  1 vpopmail vchkpw 2192 Feb 16 16:27 vpasswd.cdb


2.メール投稿用アドレス設定

qmail の場合、存在しないユーザ宛のメールの受信設定は .qmail-default に書くので、ここに投稿メール処理用プログラムへのパイプ設定を記述する。

# cat > domains/yukai.exsample.com/.qmail-default
|/usr/bin/php /home/www/yukai.exsample.com/OpenPNE/bin/mail.php

これで、メール投稿用のアドレスの

pXXX-YYY@yukai.exsample.com
tXXX-YYY@yukai.exsample.com
bXXX-YYY@yukai.exsample.com
biXXX-YYY@yukai.exsample.com
ciXXX-YYY@yukai.exsample.com
tiXXX-YYY@yukai.exsample.com
bcXXX-YYY@yukai.exsample.com

これら宛のメールが全て mail.php に渡される。


OpenPNE のために、わざわざ Postfix なんか入れなくても大丈夫。

googlemaps1.gifなるほど。
今時の OpenPNE は本当に簡単に Google Maps の地図が日記に貼れるのね。

Google Maps API - Sign Up ページで Google Maps API キーを作成し、その値を、config.php で定数 GOOGLE_MAPS_API_KEY の値として以下のように設定。

define('GOOGLE_MAPS_API_KEY', 'ABQIAAAAkr8K-5FzRvdm61VoAdZ-wBSYnJ-nSRXvPTCupEuZTOub29ZCrUWTUihCAxNo3q6u6DNo2X9M2GlrWQ');

これだけで、日記本文に(Google Maps のページでリンクをクリックして表示される)地図の URL を書き込むだけで、日記に地図が貼り付けられる。

例えば、

http://maps.google.com/maps?f=q&source=s_q&hl=ja&geocode=&q=%E5%B1%B1%E5%8F%A3%E7%9C%8C%E5%B2%A9%E5%9B%BD%E5%B8%82&mrt=all&sll=25.324167,-158.642578&sspn=48.006933,64.335938&ie=UTF8&ll=34.166931,132.219659&spn=0.175837,0.251312&z=12

という URL を貼り付ければ、この画像のような地図が表示されるわけだ。
簡単だねえ。

config.php を直接編集ではなく、管理画面に設定項目があったほうが、すぐに「あ、Google Maps が使えるんだ」とわかっていいような気がするけど、まあ、一回設定したらそれっきりの項目だからなあ・・・

ちなみに、「OpenPNE Google Maps」のようなキーワードで検索をかけると、俺が昔 OpenPNE 2.0.7.4 を Google Maps を使えるようにカスタマイズした時のことを書いたブログ(www3.netandfield.com/mitaki/180)が引っかかるが、今はこのページは公開してないので(使ってたブログシステムがセキュリティ上やばい品だったので止めたの)あしからず。
ま、最新の OpenPNE 使ってりゃ、そんなカスタマイズも必要無いしね。

うーむ・・・
OpenPNE を新しいサーバに移したのだが、一般画面にログインできない。
(正しいメールアドレスと PW を入力しているのだが・・・)

管理画面には入れたので、試しに某ユーザのパスワードを、他の某ユーザと同じパスワードに変えてみると、c_member_secure の hashed_password の値は両者で同じだった。
つまり、ハッシュ化は新旧サーバで同じように行われているということ。
また、管理ユーザのパスワードだってハッシュ化されているので、そこのところは問題ないんだろう。

うーむ・・・わからん。
メールアドレスの問題かなあ。アドレスに含まれる '@' のエスケープがうまくいってないとか???

どうにも原因がわからないので、OpenPNE公式SNS の「質問全般」コミュに質問を上げてみた。何か有効な回答が得られればよいのだが・・・

<サーバ環境>

■旧サーバ

OS      : FreeBSD 6.0-RELEASE
OpenPNE : OpenPNE_2.0.7.4
MySQL   : mysql-5.0.18
PHP     : php-4.4.2
HTTPD   : Apache 2.0.55

■新サーバ

OS      : CentOS 4.7(x86_64)
OpenPNE : OpenPNE_2.0.7.4
MySQL   : mysql-5.1.25-rc
PHP     : php-5.2.5
HTTPD   : Apache 2.2.8

OpenPNE の DB を移行するため、旧サーバで

mysqldump -u hoge -phogehoge pne_db > pne_db_backup_20081230

で吸い上げたデータを、新サーバで

mysql -u hoge -phogehoge pne_db < pne_db_backup_20081230

したら、

ERROR at line 415: Unknown command '\'.

とエラーに。
ああ・・・新しいサーバの MySQL の default-character-set は utf8 だった。
つーことで、明示的に、

mysql -u hoge -phogehoge --default-character-set=sjis pne_db < pne_db_backup_20081230

と default-character-set を指定してやればOK。

ああ、そういえば昔、別の仕事で同じようなエラーが出た時は、エラーになった行の \ を、\\ と全部エスケープして登録したな。
今時は、UTF-8 をディフォルトの文字コードに指定していることが多いだろう。
Shift_JIS で作ってる DB を移行するときは、--default-character-set=sjis を忘れるなということだな。

iPhone でも携帯用画面を出してほしいという話があるんだが、やっぱ毎回 ID/PW を入れるんでは使いづらいじゃろうなあ。

iPhone は端末識別IDはつけられるんかなあ。
Web屋のネタ帳で「で、iPhoneって契約者固有IDは出力されるの?」というエントリーがあったのだが、そこについたコメントによると出さないようですが。

http://neta.ywcafe.net/000871.html

確かに User-Agent には含まれてないけど、携帯電話のようにメニューから識別IDを出力すると設定すれば出るようになる可能性もあるのかなと思ってたんですけど、セキュリティの問題云々もあって絶対出さない的コメントもあり、へぇ、そうなん?という感じ。
そもそも、User-Agent につけた ID を課金情報につかう運用の方が問題だと思うんだがなあ。ほんと、そんなことしてるん?SoftBank が。(あ、話がずれた(^^;)

ちなみに、↓iPhone の User-Agent はこれ。

Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.20

Safari が出す User-Agent に端末識別IDつけてくれる Safari の wrapper ソフトを作ればいい?(でも、App Store に置かせてはくれんよねえ。(笑))

080802_223329.JPGPSP で OpenPNE で構築したSNS(当社で運営)にアクセスすると、微妙に画面からはみ出て鬱陶しいので、PSPからのアクセスの場合は携帯用画面を出すよう修正した。

PSP の User-Agent は以下のとおり。

Mozilla/4.0 (PSP (PlayStation Portable); 2.00)

なので、OpenPNE の lib/PNE/KtaiUA.php に、

    / PSP (PlayStation Portable)
    // 2008/08/02 by SHINODA
    elseif (strpos($ua, 'PlayStation Portable') !== false) {
        $this-&gt;is_ktai = true;
    }

という記述を追加する。

これで PSP からのアクセスに対して携帯用画面が返るようになって操作性向上。
何せ、他人の日記やコミュニティの書込を確認するのが PSP で SNS にアクセスするほとんどの要件だと思うので、操作がシンプルなほうが PSP 的に良いと思うんだけど・・・

今気づいたが、PSP では端末識別IDを User-Agent に含めることが出来ないので簡単ログイン機能が使えず、毎回 ID/PW を手打ちしてログインせんといかんですな・・・面倒くさ(^^;

うーん・・・どうしよ。元に戻すかなあ。