OpenPNE作業 のバックアップ(No.5)

※※このサイトは2012年頃より更新を停止しています。※※

OpenPNE作業

オープンソースのSNSツール。
導入/利用の自分用殴り書きメモ。

2.2.8→2.4.2へのアップグレード

参考
bizの機能は、とりあえず俺のサイトでは要らない。

  1. アーカイブをリモートサーバ上で展開
  2. ローカルPCでアーカイブを展開
  3. ローカルPCでテンプレートを編集してリモートサーバ上で展開した方に上書き
  4. 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);
  5. public_html/config.inc.phpを編集
    自サイトのディレクトリ構成に合致するように、下記のrealpathを調整してリモートサーバ上で展開した方に上書き。
    • //define('OPENPNE_DIR', realpath('../'));
  6. public_html/index.phpを編集
    ローカルPCでpublic_html/index.phpを編集して自分スクリプトをincludeするようにコードを加える。
    そしてリモートサーバ上で展開した方に上書き。
  7. 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になってりゃ問題ないんちゃうん?ぐらい安易な考え。
  8. リモートサーバ上で展開した方のpublic_htmlをターゲットのドキュメントディレクトリと完全入れ替え。
  9. アップグレード作業完了
    暗号化周りで不具合(管理画面からのメールアドレスの参照時文字化けとか)があったら、
    ここを見ておくとよいかも。
    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/
      • c_bbs.tpl
      • h_home.tpl

スキンの修正

  • ログイントップページ
    • 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とかを割り出してる。
  • 受信メールを処理するプログラムに食わせるにあたり
    • 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"
      といった具合に、「|」の次に半角スペースを入れてあげないと動作しないので要注意。

参考
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