===========================
OpenPNE3.8 セットアップ手順
===========================

はじめに
========

このドキュメントは、 OpenPNE バージョン 3.8 を基にして書かれています。

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

動作環境
  Webサーバ
    Apache
      * mod_rewrite を使用可能
  PHP
    PHP 5.2.11 以降 (PHP 5.2.11 未満で動作させる場合は libxml 2.9 以降と一緒に PHP をビルドしてください)
      * PHP の mbstring 拡張モジュールを使用可能
      * PHP の XML 拡張モジュールを使用可能
      * PHP の PCRE 拡張モジュールを使用可能 (UTF-8 サポート)
      * PHP の PDO 拡張モジュールを使用可能 (利用する DBMS のドライバも含む)
      * PHP の JSON 拡張モジュールを使用可能
      * PHP から GD ライブラリを使用可能 (JPEG/GIF/PNG サポート)
      * PHP の exif 拡張モジュールを使用可能
      * PHP の mcrypt 拡張モジュールの使用を推奨
      * PHP の APC (もしくは APCu) 拡張モジュールの使用を推奨
  データベースサーバ
    MySQL 4.1 以降(5.1 以降を推奨)

    PostgreSQL, SQLite は現時点で未サポート(将来的にサポート予定)

推奨環境
  OS
    Debian 8 (jessie)
  Webサーバ
    Apache 2.4.10 以降 (Debian 8 安定版 (stable) ディストリビューションのパッケージ に含まれているバージョン)
      * mod_rewrite を使用可能
  PHP
    PHP 5.6.29 以降 (Debian 8 安定版 (stable) ディストリビューションのパッケージ に含まれているバージョン)
      * PHP の mbstring 拡張モジュールを使用可能
      * PHP の XML 拡張モジュールを使用可能
      * PHP の PCRE 拡張モジュールを使用可能 (UTF-8 サポート)
      * PHP の PDO 拡張モジュールを使用可能 (利用する DBMS のドライバも含む)
      * PHP の JSON 拡張モジュールを使用可能
      * PHP から GD ライブラリを使用可能 (JPEG/GIF/PNG サポート)
      * PHP の exif 拡張モジュールを使用可能
      * PHP の mcrypt 拡張モジュールの使用を推奨
      * PHP の APCu 拡張モジュールの使用を推奨
  データベースサーバ
    MySQL 5.5.53 以降 (Debian 8 安定版 (stable) ディストリビューションのパッケージ に含まれているバージョン)

    PostgreSQL, SQLite は現時点で未サポート(将来的にサポート予定)

OpenPNE3 は以下のような環境での動作をサポートしています。

サポート対象 クライアント
  OS
    Windows
      * Microsoft のサポート期間内であるもの
    Mac OS (もしくは OS X)
      * 最新版とその 2 バージョン前
    Android
      * 最新版とその 2 バージョン前
    iOS
      * 最新版とその 2 バージョン前
  ブラウザ
    Internet Explorer (互換モードは無効の状態)
      * Microsoft のサポート期間内であるもの
    Microsoft Edge
      * Microsoft のサポート期間内であるもの
    Firefox
      * 最新版
    Google Chrome
      * 最新版
    Safari
      * 最新版
サポート対象 サーバー
  OS
    Debian
      * Debian 8

セットアップ
============

OpenPNE3 のソースコードを入手する
---------------------------------

以下の URL に記載されている情報に従って、 OpenPNE 3 のソースコードをダウンロードしてください。

http://www.openpne.jp/pne-downloads/

ファイルの設置
--------------

以下のような構造になるようにサーバ上にファイルを設置してください。

::

  ./
  +-- LICENSE
  +-- NOTICE
  +-- apps/
  +-- config/
  +-- data/
  +-- doc/
  +-- lib/
  +-- log/
  +-- plugins/
  +-- symfony
  +-- test/
  
  (ブラウザから閲覧可能)
  +-- web/  (ディレクトリ名は変更可能)
      +-- index.php
      +-- js/
      +-- mobile_frontend.php
      +-- pc_backend.php
        :

設定ファイルをコピー
--------------------

以下のようにして設定ファイルをコピーしてください。

::

  $ cd OpenPNE3
  $ cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php
  $ cp config/OpenPNE.yml.sample config/OpenPNE.yml

その後、 OpenPNE.yml の設定値を環境に合わせて変更してください。特に base_url と mail_domain はメール投稿、メール配信の際に利用されるので必ず設定をおこなってください。

インストールコマンドの実行
--------------------------

以下のコマンドを実行し、インストール作業をおこなってください。

::

  $ ./symfony openpne:install

このコマンドはデータベースを削除し、作り直します。
※但し、以上のコマンドはバンドルプラグインがダウンロード・インストールされないため、バンドルプラグインをダウンロード・インストールする場合は、以下の --internet オプションを付けてコマンドを実行してください。

::

  $ ./symfony openpne:install --internet

他のシステムとデータベースを共有する場合などで、データベース自体の削除がおこなわれては都合が悪い場合、以下のオプションを付けてコマンドを実行してください。

::

  $ ./symfony openpne:install --non-recreate-db

--non-recreate-db オプションを付けて実行する場合、 OpenPNE はこれから作成しようとしているテーブル名と同名のテーブルを外部キーなどを考慮して適切な順序で削除しようとします。
他システムのテーブルが予期せず削除されてしまったり、 OpenPNE の想定の外で外部キー制約などによりテーブルの削除に失敗したりといった危険を避けるため、OpenPNE.yml の設定で OpenPNEが使用するテーブルにプレフィックスを付けておくことを強く推奨します。

※このプレフィックスは同一 DB に対して複数の OpenPNE をインストールするためのものではなく、DB を共有している他システムとテーブル名がバッティングするのを避けるためのものであることに注意してください。

::

  table_prefix: "op_" 

openpne:install コマンドを実行すると、はじめに、以下の事項の入力を求められます。

* 使用する DBMS (mysql, pgsql, sqlite から選択。ただし mysql
* 以外は未サポート)
* データベース名
* データベースへの接続用ユーザ名
* データベースへの接続用パスワード(未入力可)
* データベースサーバのホスト名(localhost など)
* データベースサーバのポート番号(未入力可)
* (DBMS に MySQL を選択し、サーバホスト名に localhost
* を指定した場合)使用するソケットへのパス(未入力可)

以上の事項について入力をおこなうと、インストール作業が自動でおこなわれます。

また、これらの入力事項をコマンドの引数としてデータベースの設定値を指定してインストールすることも可能です。
以下は使用例ですので、設定値は適宜変更してください。

::

 $ ./symfony openpne:fast-install --dbms=mysql --dbuser=username --dbpassword=password --dbhost=localhost --dbport=10 --dbname=databasename --dbsock=/tmp/mysql.sock

※但し、以上のコマンドはバンドルプラグインがダウンロード・インストールされないため、バンドルプラグインをダウンロード・インストールする場合は、--internet オプションを付けてコマンドを実行してください。

開発環境用ファイルを削除
------------------------

::

  $ ./symfony project:clear-controllers

mod_rewrite の設定
------------------

web/.htaccess の RewriteBase を各自の環境にあわせて編集してください(必要でない場合もあります)。

::

  RewriteBase /                            # もしくは /web など

※RewriteBase には URL の絶対パスを指定してください。

メール配信設定
--------------

メールを配信するための設定をおこないます。メールの配信をおこなわない場合はスキップして構いません。

設定例
++++++

cron ファイルに設定権限を付加します。

::

  $ chmod -R 0755 bin/*.cron

/etc/crontab に以下を記述します。

::

  # 6 時に /path/to/OpenPNE3/bin/send_daily_news.cron というスクリプトを /path/to/php で実行することで /path/to/OpenPNE3 のデイリー・ニュースを配信する
  00   6 * * * root sh /path/to/OpenPNE3/bin/send_daily_news.cron     /path/to/OpenPNE3 /path/to/php
  
  # 6 時に /path/to/OpenPNE3/bin/birthday_mail.cron というスクリプトを /path/to/php で実行することで /path/to/OpenPNE3 の誕生日通知メールを配信する
  00   6 * * * root sh /path/to/OpenPNE3/bin/birthday_mail.cron     /path/to/OpenPNE3 /path/to/php

なお、デイリー・ニュースはデフォルトの状態ではコンテンツがありません。

管理画面のガジェット設定から、デイリー・ニュースに対応したプラグインが提供するコンテンツを選択して使用してください。

メール投稿設定
--------------

メール投稿のための設定をおこないます。メール投稿をおこなわない場合はスキップして構いません。

設定例 (Postfix を使用する場合)
+++++++++++++++++++++++++++++++

/etc/postfix/virtual を以下のように設定します::

  example.com anything
  @example.com openpne_user

/etc/aliases を以下のように設定します::

  openpne_user: "| php /path/to/openpne/symfony openpne:execute-mail-action"

ブラウザからアクセス(PC)
------------------------

(1) http://example.com/index.php にアクセス
(2) ログインフォームに sns@example.com / password と入力し、ログインできるかどうか確認

※メールアドレスとパスワードはログイン後に必ず変更してください

ブラウザからアクセス(管理画面)
------------------------------

(1) http://example.com/pc_backend.php にアクセス
(2) ログインフォームに admin / password と入力し、ログインできるかどうか確認 

※メールアドレスとパスワードはログイン後に必ず変更してください