OpenPNE作業 のバックアップ(No.5)
※※このサイトは2012年頃より更新を停止しています。※※
OpenPNE作業
オープンソースのSNSツール。
導入/利用の自分用殴り書きメモ。
2.2.8→2.4.2へのアップグレード
参考
bizの機能は、とりあえず俺のサイトでは要らない。
- アーカイブをリモートサーバ上で展開
- ローカルPCでアーカイブを展開
- ローカルPCでテンプレートを編集してリモートサーバ上で展開した方に上書き
- config.phpを編集
2.2.8の頃よりも設定項目が増えているらしい。
下記の項目を自分サイト用に変更して、リモートサーバ上で展開した方にアップロード- //define('OPENPNE_URL', 'http://sns.example.com/');
- //$GLOBALS['_OPENPNE_DSN_LIST']['main'] = array
- //define('ENCRYPT_KEY', '');
- //define('MAIL_SERVER_DOMAIN', 'mail.example.com');
- //define('OPENPNE_DEBUGGING', 1);
- //define('OPENPNE_IMG_CACHE_DIR', OPENPNE_DIR . '/public_html/img');
- //define('MAIL_ADDRESS_HASHED', true);
- //define('MAIL_DEBUG_LOG', true);
- public_html/config.inc.phpを編集
自サイトのディレクトリ構成に合致するように、下記のrealpathを調整してリモートサーバ上で展開した方に上書き。- //define('OPENPNE_DIR', realpath('../'));
- public_html/index.phpを編集
ローカルPCでpublic_html/index.phpを編集して自分スクリプトをincludeするようにコードを加える。
そしてリモートサーバ上で展開した方に上書き。 - upgrade-2.2to2.4-mysql40.sqlをMySQL側で実行する。
MySQLは、マルチバイト環境にとって4.0と4.1とで大きな変更がある。
そこで4.0以前のMySQLを使ってる場合はupgrade-2.2to2.4-mysql40.sqlを使えってことだろう、と解釈した。
SQLを実行する時は--default-character-set=utf8を付けるのを忘れないようにした方がいいらしい。phpMyAdmin上ではどうすんだ?
つーか、俺の使ってるサーバでコマンドラインから上記を付加して実行したらこんなことゆわれた。mysql: Character set 'utf8' is not a compiled character set and is not specified in the '/usr/local/share/mysql/charsets/Index' file
お前もか!!(どこと比べてるんだか
しゃーないからdefault-character-setを指定しないで実行した。
まぁその後文字化けは特に発生してないようなので、だいじょぶそう。
次のアップグレードの時はphpMyAdminからSQL文を直接実行しよう。
phpMyAdminの画面表示文字コードがutf-8になってりゃ問題ないんちゃうん?ぐらい安易な考え。 - リモートサーバ上で展開した方のpublic_htmlをターゲットのドキュメントディレクトリと完全入れ替え。
- アップグレード作業完了
暗号化周りで不具合(管理画面からのメールアドレスの参照時文字化けとか)があったら、
ここを見ておくとよいかも。
config.phpの
define('OPENPNE_USE_OLD_CRYPT_BLOWFISH', false);
ってところをtrueにすることで回避できる場合があるらしい。
アップグレード時に再設定するHTMLテンプレート
- 携帯からの登録画面
利用規約とかプライバシーポリシーは後回し。- OpenPNE/webapp/modules/ktai/templates/
- o_regist_pre.tpl
- OpenPNE/webapp/modules/ktai/templates/
- 携帯メール投稿の暫定回避策
バーチャルドメイン環境に設置してるもんだから、メールアカウントの流動に対応できない。
そのため下記のファイルからメール投稿のアンカーをコメントアウト- OpenPNE/webapp/modules/ktai/templates/
- c_bbs.tpl
- h_home.tpl
- OpenPNE/webapp/modules/ktai/templates/
スキンの修正
- ログイントップページ
- skin_login.jpg
- skin_login_open.jpg
- ナビゲーションバーの文字列を変更したい。
- skin_navi_c.jpg
- skin_navi_c_2.jpg
- skin_navi_f.jpg
- skin_navi_f_2.jpg
- skin_navi_h.jpg
- skin_navi_h_2.jpg
受信メールの処理
- プログラムの構成
- 初期includeする構成ファイル
OpenPNE_DIR/bin/mail.php
OpenPNE_DIR/bin/config.inc.php
OpenPNE_DIR/config.php
OpenPNE_DIR/webapp/init.inc
OpenPNE_DIR/lib/PNE/KtaiMail.php
OpenPNE_DIR/webapp/lib/mail/sns.php - ミソ
sns.phpで下記のようにして宛先アドレスの分解をしている。list($to_user, $to_host) = explode('@', $this->to, 2);
その後to_userを解析してmatchesでユーザIDとかトピックIDとかを割り出してる。
- 初期includeする構成ファイル
- 受信メールを処理するプログラムに食わせるにあたり
- catch all
「catch all」って、ドメイン宛のメールを、アカウントの有無に関わらず受信処理するってことっぽいね?これができれば完全に機能が使いきれるはず。これができるメール環境から転送ってのも手。 - catch all できない環境の場合
http://tejimaya.org/openpne/docs/2_2/OpenPNE_Setup.html#section3-2
バーチャルドメイン配下では上記URLで求められているような新形式の設定ができない。
旧形式の方も固定アドレスであるgetとblogだけしか設定できない。
sendmail環境の場合は.forwardでプログラムに食わすとかなんとか情報があるけど、.fowardはアカウントごとの処理。
バーチャルドメイン配下だと配送までの間にmaildropも挟まってる可能性あり。
maildropの環境における設定のミソは.mailfilter。
該当アカウントのMailディレクトリ(Maildir形式)に.mailfilterを置く。
コマンドの記述はto "| /usr/local/bin/php OPENPNE_DIR/bin/bin/mail.php"
といった具合に、「|」の次に半角スペースを入れてあげないと動作しないので要注意。
- catch all
参考
http://sky.ap.teacup.com/webpg/
http://www.is.titech.ac.jp/~yanagis0/text/maildrop.html
http://faq.sakura.ne.jp/wiki/backup/A5E1A1BCA5EB.txt
http://q.hatena.ne.jp/1128498655
登録したメールアドレスの保存されているテーブル
c_member_secure
ここにバイナリデータとして保存されている。
削除するにはどうしたらいいんだ?
ID1のユーザの携帯のアドレスを削除できなくて困った。
http://docs.openpne.jp/?TROUBLE%2F195
にて解決。SQL文を下記のように直接打ちゃいい。
UPDATE c_member_secure SET ktai_address = '' WHERE c_member_id = 1;
ちょいメモ
参考リンク
- 外部ブログRSS取り込みについて
OpenPNEドキュメントサイトのFAQ/9より。
http://dot9music.blog.shinobi.jp/Entry/6/ - NEKOGET_PNESKIN
OpenPNEのスキンテーマを自動生成する。
http://pneskin2.nekoget.com/