# OpenPNE セットアップガイド

最終更新日: 2009/08/10

## 目次

- 0. はじめに
- 1. ファイルの設置
- 2. 設定ファイルの変更
- 3. データベースの設定
  - 3-1. PostgreSQL 7.4.x (8.0.x, 8.1.x 含む) の場合
- 4. サーバ設定
  - 4-1. Apacheの設定
  - 4-2. メールサーバの設定
  - 4-3. cronの設定
- 5. セットアップモジュールの実行
- 6. 管理画面の設定
  - 6-1. 管理画面へのアクセス
  - 6-2. 管理画面のモジュール名を変更
  - 6-3. 管理画面を別ドメインで運用

## 0. はじめに

この文書は、OpenPNE バージョン2.14 を基にして書かれています。

OpenPNE は以下のようなサーバ環境で動作させることを想定しています。

Webサーバ
  Apache を推奨
PHP
  PHP 4.3.3 以降 / 5.0.x / 5.1.x
  - PHP の mbstring 拡張モジュールを使用可能
  - PHP の XML 拡張モジュールを使用可能
  - PHP の PCRE 拡張モジュールを使用可能 (UTF-8 サポート)
  - PHP から GD ライブラリを使用可能 (JPEG/GIF/PNG サポート)
    - ImageMagick を使う場合でも必要となります
  - PHP の mcrypt 拡張モジュールの使用を推奨
データベースサーバ
  PostgreSQL 7.4.x / 8.0.x / 8.1.x (※8.2.x 以降は未対応です)
メールサーバ (携帯からメール投稿する場合)
  Postfix 2.1.x 以降を推奨 (Postfix 以外のメールサーバでも動作報告あり)

## 1. ファイルの設置

OpenPNE に含まれるディレクトリ、ファイルを以下のようにWebサーバ上に設置してください。

    - OPENPNE_DIR
      ├ bin
      ├ lib          <--- OPENPNE_LIB_DIR
      ├ var          <--- OPENPNE_VAR_DIR
      │ ├ function_cache [777]
      │ ├ img_cache
      │ │ ├ gif [777]
      │ │ │ ├ w_h [777]
      │ │ │ ├ w_h_raw [777]
      │ │ │ ├ w76_h76 [777]
      │ │ │ ├ w120_h120 [777]
      │ │ │ ├ w180_h180 [777]
      │ │ │ ├ w240_h320 [777]
      │ │ │ └ w600_h600 [777]
      │ │ ├ jpg [777]
      │ │ │ ├ w_h [777]
      │ │ │    ... [777]
      │ │ └ png [777]
      │ │    ├ w_h [777]
      │ │       ... [777]
      │ ├ log [777]
      │ ├ rss_cache [777]
      │ ├ templates_c [777]
      │ └ tmp [777]
      ├ webapp       <--- OPENPNE_WEBAPP_DIR
      ├ webapp_biz   <--- OPENPNE_WEBAPP_BIZ_DIR
      └ webapp_ext   <--- OPENPNE_WEBAPP_EXT_DIR

    (ブラウザから閲覧可能)
    - public_html (ディレクトリ名は変更可能)
      ├ config.inc.php (OPENPNE_DIR ディレクトリを指定)
      ├ index.php
         ...

    ※[777]は例です。環境に合わせて適切な値に読み替えてください。

public_html のパスとディレクトリ名は変更することができます。

public_html のパスを OPENPNE_DIR ディレクトリの直下(デフォルト配置)以外に変更した場合は、 public_html 直下にある config.inc.php の内容を書き換えてください。

public_html のディレクトリ名を変更した場合は、後の「2. 設定ファイルの変更」で、 OPENPNE_PUBLIC_HTML_DIR の内容を書き換えてください。

また、OPENPNE_DIR/var 以下の全ディレクトリにウェブサーバからの書き込み権限(例えば 777)を与えてください。

    $ chmod -R 0777 var/*

OpenPNE 2.2 からは画像のキャッシュディレクトリを public_html 以下に置き、Apache から直接読み込みを行うようにすることもできます。 (OpenPNE の設定ファイル config.php で、OPENPNE_IMG_CACHE_PUBLIC を true にしてください)

この機能を有効にする場合、Apache の設定で mod_rewrite を有効にし、.htaccess を使用可能にするかもしくは同様の内容を httpd.conf に記述する必要があります。

    - OPENPNE_DIR
      ├ bin
      ├ lib          <--- OPENPNE_LIB_DIR
      ├ var          <--- OPENPNE_VAR_DIR
      │ ├ log [777]
      │ ├ rss_cache [777]
      │ ├ templates_c [777]
      │ └ tmp [777]
      ├ webapp       <--- OPENPNE_WEBAPP_DIR
      ├ webapp_biz   <--- OPENPNE_WEBAPP_BIZ_DIR
      └ webapp_ext   <--- OPENPNE_WEBAPP_EXT_DIR

    (ブラウザから閲覧可能)
    - public_html (ディレクトリ名は変更可能)
      ├ config.inc.php (OPENPNE_DIR ディレクトリを指定)
      ├ index.php
      ├ img
      │ ├ .htaccess
      │ ├ index.php
      │ ├ gif [777]
      │ │ ├ w_h [777]
      │ │ ├ w_h_raw [777]
      │ │ ├ w76_h76 [777]
      │ │ ├ w120_h120 [777]
      │ │ ├ w180_h180 [777]
      │ │ ├ w240_h320 [777]
      │ │ └ w600_h600 [777]
      │ ├ jpg [777]
      │ │ ├ w_h [777]
      │ │    ... [777]
      │ └ png [777]
      │    ├ w_h [777]
      │       ... [777]
         ...

    ※[777]は例です。環境に合わせて適切な値に読み替えてください。

## 2. 設定ファイルの変更

OPENPNE_DIR/config.php.sample を OPENPNE_DIR/config.php にコピーして config.php の方を環境に合わせて編集します。

OPENPNE_URL
  ベースURL(絶対パス)
DSN
  (PostgreSQLの)データベースへ接続するための情報です。
  使用データベース、接続用ユーザー名、パスワード、サーバホスト名、データベース名を設定します。
  config.php

      // 使用するデータベースにPostgreSQLを指定。
      'phptype'  => 'pgsql'

ENCRYPT_KEY
  メンバーのログイン情報を暗号化する際に使用するキー(56バイト以内のASCII文字)
  他人に推測されにくい文字列にしてください。
MAIL_SERVER_DOMAIN
  メールサーバのドメイン名(携帯版でメール投稿をする場合に使います)
AMAZON_ACCESS_KEY_ID
  Amazon Web Service 公開アクセスキー(レビューの投稿に使用します)
  詳細はこちらをご覧下さい。 Amazon Product Advertising API https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html
AMAZON_SECRET_ACCESS_KEY
  Amazon Web Service 秘密キー(レビューの投稿に使用します)
  詳細はこちらをご覧下さい。 Amazon Product Advertising API https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html

必要に応じて、その他の設定も書き換えてください。 デバッグモードの設定(OPENPNE_DEBUGGING)は、本番運用に移行する際には 0 にしておくことをおすすめします。

public_html のディレクトリ名を変更した場合は、 OPENPNE_PUBLIC_HTML_DIR を変更したディレクトリ名に書き換えてください。

PHPの設定でセーフモードが有効な場合は、MAIL_SET_ENVFROM を false に設定してください。

## 3. データベースの設定

### 3-1. PostgreSQL 7.4.x (8.0.x, 8.1.x 含む) の場合

新しくデータベースを作成する場合、以下のようなコマンドを実行してデータベースを作成します。 (※レンタルサーバ等で既にデータベースが用意されている場合は実行する必要はありません)

    $ createdb -U username DBNAME -E 'UTF-8'

準備したデータベース(例:DBNAME)上で、以下のSQL文を順番に実行します。

1. OPENPNE_DIR/setup/sql/postgres74/install/install-2.14-create_tables.sql
2. OPENPNE_DIR/setup/sql/postgres74/install/install-2.14-insert_data.sql

PNEBIZを使用する場合は上記に加えて、以下のSQL文を実行してください。

- OPENPNE_DIR/setup/sql/postgres74/option/pnebiz-header.sql

[実行例]

    (1) データベース作成 (省略可)
        $ createdb -U username DBNAME -E 'UTF-8'

    (2) OpenPNEセットアップ用SQL実行
        $ cd setup/sql/postgres74/install/
        $ psql DBNAME -U username -f install-2.14-create_tables.sql
        $ psql DBNAME -U username -f install-2.14-insert_data.sql

    (3) PNEBIZ用SQL実行 (オプション)
        $ cd ../option
        $ psql DBNAME -U username -f pnebiz-header.sql

## 4. サーバ設定

レンタルサーバ等で設定済みの場合は読み飛ばしてください。

### 4-1. Apacheの設定

httpd.confを修正し、

- DirectoryIndex に index.php を追加します。
- public_html にアクセスできるようにドキュメントパスを通します。

[設定例]

バーチャルホストを使ったhttpd.confの設定例

    <VirtualHost *:80>
        ServerName        openpne.example.com
        DocumentRoot      /home/username/OpenPNE/public_html/
        DirectoryIndex    index.html index.php
    </VirtualHost>

httpd.confを修正したら、Apacheを再起動してください。

### 4-2. メールサーバの設定

携帯版を使用しない場合は以下の設定は不要です。

MAIL_SERVER_DOMAIN に届くメールで、以下のメールアドレスはシステムで利用されます。

項目 | 新形式 | 旧形式
--- | --- | ---
新規登録 / ログインURL取得 | get@MAIL_SERVER_DOMAIN | get@MAIL_SERVER_DOMAIN
プロフィール写真変更 | pXXX-YYY@MAIL_SERVER_DOMAIN | pXXX@MAIL_SERVER_DOMAIN
コミュニティ掲示板メール投稿 | tXXX-YYY@MAIL_SERVER_DOMAIN | tXXX@MAIL_SERVER_DOMAIN
日記メール投稿 | bXXX-YYY@MAIL_SERVER_DOMAIN | blog@MAIL_SERVER_DOMAIN
日記写真変更 | biXXX-YYY@MAIL_SERVER_DOMAIN | biXXX@MAIL_SERVER_DOMAIN
コミュニティ写真変更 | ciXXX-YYY@MAIL_SERVER_DOMAIN | ciXXX@MAIL_SERVER_DOMAIN
トピック・イベント写真変更 | tiXXX-YYY@MAIL_SERVER_DOMAIN | tiXXX@MAIL_SERVER_DOMAIN
日記コメントメール投稿 | bcXXX-YYY@MAIL_SERVER_DOMAIN | bcXXX@MAIL_SERVER_DOMAIN
アルバム投稿 | aXXX-YYY@MAIL_SERVER_DOMAIN | album@MAIL_SERVER_DOMAIN
アルバム画像投稿 | aiXXX-YYY@MAIL_SERVER_DOMAIN | aiXXX@MAIL_SERVER_DOMAIN
アルバム表紙投稿 | acXXX-YYY@MAIL_SERVER_DOMAIN | acXXX@MAIL_SERVER_DOMAIN

- XXX には数字。
- YYY には12バイトの英数字([0-9a-f]{12})。

新形式、旧形式のどちらのメールアドレスで受け付けるかは config.phpの設定(MAIL_ADDRESS_HASHED)によって切り替えることができます。

新形式はメール投稿の際のFromメールアドレス偽装へのセキュリティ対策のために導入されたものです。 From偽装対策を(IP制限等により)メールサーバ側で行っている場合には旧形式での運用も問題ありません。

メールサーバの転送設定を利用して、これらのメールアドレスへのメールが、以下のコマンドにわたるように設定します。

    "|/usr/bin/php OPENPNE_DIR/bin/mail.php"

### 4-3. cronの設定

[設定例]

cronファイルに実行権限の付加。

    $ chmod 0755 bin/*.cron

/etc/crontab に以下を記述。

    # 6時にメールを送信＆20分毎にRSS更新＆5時にvacuum処理
    00   6 * * * root sh OPENPNE_DIR/bin/tool_send_daily_news.cron     OPENPNE_DIR/bin/ [bin_path]/php
    00   6 * * * root sh OPENPNE_DIR/bin/tool_send_birthday_mail.cron  OPENPNE_DIR/bin/ [bin_path]/php
    00   6 * * * root sh OPENPNE_DIR/bin/tool_send_schedule_mail.cron  OPENPNE_DIR/bin/ [bin_path]/php
    */20 * * * * root sh OPENPNE_DIR/bin/tool_rss_cache.cron           OPENPNE_DIR/bin/ [bin_path]/php
    00   5 * * * root sh OPENPNE_DIR/bin/tool_vacuum_exec.cron         OPENPNE_DIR/bin/ [bin_path]/php

[bin_path]は、PHP の実行ファイルがインストールされているディレクトリ(例えば、/usr/bin)です。

また、デイリーニュース送信用スクリプトは、デイリーニュース送信結果通知ログを出力します。/etc/crontabを以下のように記述し、メールで受け取れるようにすると便利です。

    00   6 * * * root sh OPENPNE_DIR/bin/tool_send_daily_news.cron  OPENPNE_DIR/bin/ [bin_path]/php | mail -s "daily news log" example@example.com

## 5. セットアップモジュールの実行

ブラウザから以下のURLへアクセスしてください。(セットアップ完了後はアクセスすることができません)

    OPENPNE_URL?m=setup
    (例) http://openpne.example.com/?m=setup

ここでSNS名、初期メンバー、管理用アカウントを設定します。

## 6. 管理画面へのアクセス

### 6-1. 管理画面へのアクセス

以下のURLへアクセスし、セットアップモジュールで設定した管理用アカウント名、パスワードを入力してログインしてください。ログイン後、管理メニューの「SNS設定」からSNSの基本情報の設定をすることができます。

    OPENPNE_URL?m=admin
    (例) http://openpne.example.com/?m=admin

また、管理メニューの「管理画面設定 ＞ ページ名ランダム生成」でランダム生成を実行すると管理画面内のページ名を変更することができるので、セキュリティ向上のためセットアップ後に必ず実行しておくことをおすすめします。

### 6-2. 管理画面のモジュール名を変更する (オプション)

管理画面のURLを変更する場合は、設定ファイル config.php 内にある ADMIN_MODULE_NAME の値を変更してください。

例えば、abcde に変更した場合、

    OPENPNE_URL?m=abcde
    (例) http://openpne.example.com/?m=abcde

というURLから管理画面へアクセスすることができます。

### 6-3. 管理画面を別ドメインで運用する (オプション)

管理画面を通常とは別のドメインで運用したい場合やBasic認証を使用してアクセス制限したい場合など、 Webサーバから読み込まれる公開ディレクトリを分けて運用したい場合があります。

OpenPNEでは、public_html 以下のファイルを管理画面用の公開ディレクトリにコピーし、config.inc.php の内容を書き換えることによりこれを実現することができます。

ディレクトリ構成

    - OPENPNE_DIR
      ├ bin
      ├ lib
      ├ var
      ├ webapp
      ├ webapp_ext
      ├ webapp_biz
      └ config.php

    [http://sns.example.com/]
    - public_html (ディレクトリ名は変更可能)
      ├ config.inc.php
      ├ index.php
         ...
        ↓コピー

    [http://admin.example.com/]
    - admin_public_html (ディレクトリ名は変更可能)
      ├ config.inc.php (←このファイルを書き換える)
      ├ index.php
         ...

config.inc.php (強調部分の2項目を追加します)

    <?php
    /**
     * @copyright 2005-2008 OpenPNE Project
     * @license   http://www.php.net/license/3_01.txt PHP License 3.01
     */

    define('OPENPNE_DIR', realpath('../'));
    require_once OPENPNE_DIR . '/config.php';

    // 管理画面のベースURL設定
    define('OPENPNE_ADMIN_URL', 'http://admin.example.com/');

    // 無効にするモジュール
    $GLOBALS['_OPENPNE_DISABLE_MODULES'] = array('pc', 'ktai');
    ?>

以上で、管理画面用のURL(例：http://admin.example.com/) でアクセスするための設定は完了です。

一方、通常のURL(例：http://sns.example.com/?m=admin) では管理画面へのアクセスができないようにするために、 config.php で以下の設定をしておきます。

config.php

    // 無効にするモジュール
    $GLOBALS['_OPENPNE_DISABLE_MODULES'] = array('admin', 'setup');

これでセットアップは完了です。友達を招待してみたり、日記を書いたり、あなただけのSNSを作り上げてください！