2008/12/02 (Tue)

OpenPNE インストールまでの設定

Emacs22のインストール

UTF-8用

$ wget ftp://ftp.gnu.org/pub/gnu/emacs/emacs-22.2.tar.gz
$ ./configure --prefix=/usr/local/emacs-22.2
$ make
$ su
# make install

OpenPNEアカウントの作成

# useradd -m -s /bin/bash openpne
# chmod 755 /home/openpne

PHPのインストール

依存関係のあるもの # yum install libxml2-devel.i386 # yum install libmcrypt-devel.i386 # yum install gd-devel

$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
$ ./configure
$ make
# make install
# ln -s /usr/local/lib/libiconv.so.2.4.0 /usr/lib/libiconv.so.2

/usr/local/lib をライブラリの検索対象に追加 $ cat /etc/ld.so.conf include ld.so.conf.d/*.conf /usr/local/lib # /sbin/ldconfig

PHP本体のインストール $ wget http://www.php.net/get/php-5.2.6.tar.gz/from/a/mirror $ tar xzvf php-5.2.6.tar.gz

$./configure \
    --with-mysql \
    --enable-mbstring \
    --with-jpeg-dir=/usr/local/lib \
    --with-gd \
    --with-jpeg-dir=/usr \
    --with-zlib-dir=/usr \
    --with-freetype-dir=/usr \
    --with-mcrypt \
    --with-apxs2=/usr/local/apache2/bin/apxs \
    --enable-zend-multibyte \
    --with-iconv=/usr/local

iconvはディレクトリを指定するとこでエラーが出なくなった。 画像(jpg)関連がOpenPNEでUploadできなかった。 GDのjpeg関連の設定がおかしかったぽいのでオプションを追加した。

$ make
$ make test
# make install

# cp php.ini-dist /usr/local/lib/php.ini

Apache

ハンドラの追加 # vi /usr/local/apache2/conf/httpd.conf AddHandler application/x-httpd-php .php

VirtualHostの設定

# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost 10.1.0.22:80>
    ServerName        xxxx.localnet
    DocumentRoot      "/home/openpne/work/OpenPNE/public_html"
    DirectoryIndex    index.html index.php
    <Directory "/">
      Options Indexes FollowSymLinks
      AllowOverride None
      Order deny,allow
      Allow from all
    </Directory>
</VirtualHost>

Apache2.2のデフォルトはDeny allなので権限ついて変更する

OpenPNE

$ wget http://downloads.sourceforge.net/openpne/OpenPNE-2.12.0.tar.gz
$ work/OpenPNE-2.12.0
$ ln -s OpenPNE-2.12.0 OpenPNE
$ cp config.php.sample config.php
$ chmod -R 0777 var

[openpne@ OpenPNE]$ diff config.php.sample config.php
7c7
< define('OPENPNE_URL', 'http://sns.example.com/');
---
> define('OPENPNE_URL', 'http://xxxx.localnet/');
13c13
<     'username' => '',
---
>     'username' => 'openpne',
16c16
<     'database' => '',
---
>     'database' => 'openpne',
22c22
< define('ENCRYPT_KEY', '');
---
> define('ENCRYPT_KEY', 'xxxxxxxx');
26c26
< define('MAIL_SERVER_DOMAIN', 'mail.example.com');
---
> define('MAIL_SERVER_DOMAIN', 'mail.localnet');

MySQLにテーブル作成

$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'openpne'@'localhost';

$ mysql -u openpne
mysql> create database `openpne` default character set utf8;

$ mysql -u openpne --default-character-set=utf8 openpne < setup/sql/mysql41/install/install-2.12-create_tables.sql 

$ mysql -u openpne --default-character-set=utf8 openpne < setup/sql/mysql41/install/install-2.12-insert_data.sql


mysql> GRANT ALL PRIVILEGES ON *.* TO openpne@"%"
    -> IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO openpne@localhost
    -> IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

2008/07/07 (Mon)

OpenPNE

OpenPNE構成ディレクトリ

.
|-- config.php              設定ファイル
|-- bin/                    Cron、メール処理等コンソールで行うスクリプト
|-- lib/                    OpenPNE外ライブラリの格納場所
|   |-- include/            PEAR等ライブラリの格納場所
|   `-- smarty_plugins/     Smarty用プラグインの格納場所
|-- public_html             Apacheで公開されるドキュメントルート
|   |-- cmd/                小窓用JS格納ディレクトリ
|   |-- flash/              Flash格納用ディレクトリ。フレンドリスト用SWFのみ
|   |-- img/                公開画像ディレクトリ
|   |-- js/                 公開JavaScriptディレクトリ
|   |-- modules/            モジュール別公開ファイル
|   |-- openid/             OpenID用コントローラ
|   |-- skin/               スキン格納ファイル
|   |-- cap.php             キャプチャ作成PHP
|   |-- config.inc.php      初期設定用PHP
|   |-- img.php             画像用フィルタ
|   |-- img_skin.php        スキン用フィルタ
|   |-- index.php           フロントコントローラ
|   `-- xhtml_style.php     カスタムCSS用PHP
|-- setup                   セットアップ用
|   |-- script
|   `-- sql                 セットアップ用SQLファイル
|       |-- mysql40         MySQL4.0用SQL
|       |-- mysql41         MySQL4.1用SQL(大幅に変更があったため)
|       |   |-- install     インストール用SQL、テーブル、初期データ
|       |   |-- option      オプション等(Biz等)SQL
|       |   |-- update      マイナーバージョンアップ用
|       |   `-- upgrade     メジャーバージョンアップ用
|       `-- postgres74      PostgreSQL用
|-- var                     一時ファイル置き場(適時削除してもよい)
|   |-- function_cache      関数キャッシュ用(ランキング等逐次実行の必要のないもの)
|   |-- img_cache           画像キャッシュ用
|   |-- log                 ログ用
|   |-- rss_cache           RSSキャッシュ用(cronから生成)
|   |-- templates_c         Smartyテンプレートコンパイル済みPHP用
|   `-- tmp                 一時ファイル用(ファイルアップロード用)
|-- webapp                  OpenPNEアプリケーション
|   |-- lib/                アプリケーション用ライブラリ(OpenPNE用カスタム等)
|   |-- modules/            モジュールディレクトリ
|   |   |-- admin/          管理画面モジュール
|   |   |   |-- init.inc    初期設定ファイル
|   |   |   |-- do/         処理実行系PHP格納ディレクトリ
|   |   |   |-- lib/        管理画面モジュール用ライブラリ格納ディレクトリ
|   |   |   |-- page/       ページ系PHP格納ディレクトリ
|   |   |   |-- templates/  Smartyテンプレート格納ディレクトリ
|   |   |   `-- validate/   妥当性検証用INIファイルの格納ディレクトリ
|   |   |-- api             API用
|   |   |-- ktai            携帯用
|   |   |-- openid          OpenID用
|   |   |-- pc              PC用
|   |   |-- portal          SNSポータル用
|   |   `-- setup           セットアップ用
|   |-- templates           テンプレート
|   |-- validate            妥当性検証
|   |-- init.inc            初期設定用
|   `-- version.php         バージョン情報
|-- webapp_biz              BIZ機能(予定表、グループウェア、施設管理、ToDo)
`-- webapp_ext              拡張モジュールの格納ディレクトリ

OpenPNEの基本構成

  • public_html/index.php を使用したフロントコントローラパターン
  • テンプレート名とアクション名の規約 /{module}/{type}/{action}.php

    • module モジュール名 例: admin, pc, ktai, api, openid, portal, setup 等 パラメータ: m
    • type アクションタイプ名 例: page, do パラメータ a prefix
    • action アクション名 例: csv_member, delete_c_admin_user 等 パラメータ a suffix
  • webapp_ext による拡張モジュール対応 webapp_ext に置いたファイルは同名のwebappのファイルの代替ファイルとなり 優先的に実行される。

  • Smartyによるテンプレートエンジンの使用 テンプレートファイルにSmartyを仕様。JavaScriptの括弧と競合するため デリミタを変更している {} -> ({})

  • ライブラリの内包 PEARやSmartyのライブラリを内包し環境依存をなくしているため、 OpenPNE外に依存するライブラリがほぼ存在しない。

  • 小窓機能による他サイトAPIとのMashup 小窓機能と呼ばれるURL自動変換スクリプトにより 外部サイトのプレイヤー等をOpenPNE内にマッシュアップ可能となる

アクション

  • OpenPNE_Actionを継承し、execute関数をオーバーライドする。
  • 認証外のアクションを作りたい場合はisSecureがfalseを返すようにする。デフォルトtrue
  • page系 ページ遷移系のアクションの処理を定義する。画面遷移先はファイル名等同名の Smartyテンプレートによって処理される。 Smartyテンプレートで処理するパラメータはexecute($request)関数で作り、 処理に問題がなければ関数は"success"を返すようにする。

  • do系 処理実行系のアクションを定義する。画面遷移先が決まっていないので、 execute関数の最後で、openpne_forwardで遷移先を指定し、 ブラウザにLocationヘッダを返し、クライアントリダイレクトを指示する。

参考URL