INSTALL

インストール
============

概要
     PopoWiki(以下Wikiと表示)は、PHPスクリプトであるため、
    PHP(PHP 5.3 - PHP 5.6)が動作するWebサーバーであれば容易に設置でき、
    軽快に動作します。 PHP5.7以降の動作は不明です。
     スクリプトに実行権をつける必要はありません。PHPがCGI起動でないのであれば、
    スクリプトの一行目を修正する必要もありません。

    一般的なUnix環境向けにアクセス権限(パーミッション)を設定した状態でパッ
    ケージが作成されているため、Webサーバー上でパッケージを展開できるのであ
    れば、インストールの際にアクセス権限を修正する必要はありません。
    (※ tar.gz形式 に限る)

インストール手順
    1. PHP (PHP 5.3 以降) が動作するWebサーバーを用意する
    2. 不明であれば、PHPの動作と設定を確認する
        事前に、ごく簡単なPHPスクリプトが動作するか確認して下さい。
         例: _test.php というファイルを用意して、中身を
            <? phpinfo() ?>
         とする
         (動作を確認次第、このファイルは必ず削除して下さい)
    3. Webブラウザからアクセスできる位置にパッケージを展開する
        Unixのコンソールが動作する環境の場合 (pオプションは必須):
            $ tar pzxf popowiki-X.X.X.tar.gz
        Windwos OSの場合: 何らかのツールでtarまたはzipパッケージを展開する
    4. Webブラウザから最低限の動作を確認する
       通常は popowiki-X.X.X(バージョン番号) というディレクトリが作成されて
       おり、 http://example.org/path/to/your/popowiki-X.X.X/ にアクセスするだけで
       Wikiが動作します。
       Webサーバーの設定によっては popowiki-X.X.X/index.php にアクセスする
       必要があります。

何らかの作業がきっかけで動作不能となり、手詰まりとなった場合
    別の場所に新しくWikiを設置し、それが動作するかどうかを確認し、動作
    するならば、二つの間で何が異なるのかを追究して下さい。

    場合によっては、(DATA_DIR などの)データを保存しているディレクトリと設定
    だけを、動作する側へ移植する事により問題を回避する事を検討して下さい。

index.phpにアクセスできたが、何も表示されない(真っ白な画面)場合
     1. Webサーバーの管理者に、Wikiを設置した場所、アクセスした日時をな
        るべく正確に伝え、エラーログに何か記述されていないか、あるならばその
        内容を聞き取ってさい。

     2. index.php の先頭にある以下の行のコメント("//")を外し、再びWebブラウ
        ザからアクセスし、エラーが表示されていないか確認して下さい。
        エラーが解消された後は、必ずこの行を元に戻して下さい。

        この行を
            //error_reporting(E_ALL); // Debug purpose
        このようにする
            error_reporting(E_ALL); // Debug purpose

エラーが表示される場合: Parse error
    "Parse error: parse error, unexpected XXXX in .... on line NNN"

    PHPスクリプトに矛盾がある場合、このようなメッセージが表示されます。指定
    されているファイルの、指定された行の付近をチェックし、問題があれば修正し
    て下さい。複数箇所に矛盾がある場合、一つづつエラーが表示されます。理由と
    しては以下のようなケースが考えられます。

      1. ファイルを編集した結果、行末にあったセミコロン(";")を消してしまった
      2. ファイルを編集した結果、文字列をシングルクォートかダブルクォートで
         囲むはずが、片方を消してしまった / 文字列の中に(文字列を囲んでいる
         のと同じ)シングルクォートやダブルクォートがある
              OK:  $var = "foo's " . 'bar' . " is 'foobar'";
              NG:  $var = "foo's ' . "bar' . " is 'foobar
      3. ファイルを一切編集していないのに Parse error となる場合、ファイル
         が適切に(ファイル名の大文字小文字、文字コード、改行コードなどが変
         更されずに)転送されているか確認して下さい。

エラーが表示される場合: Runtime error
    "Error message : Directory is not found or not writable (xxx_DIR)"

    データを書き込むディレクトリ(やファイル)に書き込み権限が無い場合、このよ
    うなメッセージを表示します。xxx_DIR がどこにあたるかは、設定ファイルで同
    名の定数を定義している部分を参照して下さい。
    Unix上の権限設定については下記の注意点も参照して下さい。

エラーが表示される場合: Server API "CGI"
    phpinfo() が表示する項目のうち "Server API" が "CGI" となっているサーバ
    ーでは、PHPがCGIプログラムとして起動される構成になっています。
    CGI版のPHPが設置されたサーバー(特にsuExecと組み合わされている環境)で動作
    させようとした場合に "Internal Server Error" などと表示される場合がありま
    す。詳しくはサーバー管理者がPHPスクリプト向けに提供している情報を確認して
    下さい。
      1. 実行するPHPスクリプト(PukiWikiの場合 index.php か pukiwiki.php)の
        一行目に、PHPバイナリへのパスを追加する必要があるかもしれません。
        (例: #!/usr/local/bin/php)この値はサーバーにより異なります。
      2. たいていの場合、より厳密なパーミッションが求められます。

エラーが表示される場合: .htaccessファイル
    .htaccess ファイルを添付する様になっていますが、
    Apache Web サーバーの設定によっては "Internal Server Error" の原因とな
    る場合があります。

    具体例:
      Webブラウザに "Internal Server Error" と表示され
      Webサーバーのエラーログには "order not allowed here" というエラーが記
      録される

    これは Wikiを設置したい場所で .htaccess による設定変更が許可されてい
    ない(特に "AllowOverride Limit" でない)のが原因です。

    回避策: .htaccess、および skin/.htaccess を削除する

    解決策：
      Apache設定ファイル(httpd.conf)の、Wikiを設置したいディレクトリに
      関する部分に "AllowOverride Limit" を追加する

エラーが表示される場合: CSSが動作しない (デザインがおかしい)
    skin/popowiki.css.php は単独のPHPプログラムであるため、CGI起動が必要な
    環境であったり、mod_layout による広告挿入回避を行う場合はこのファイルに
    ついても index.php と同様の対応を行う必要があります。

FTPなどでファイルを個別に転送する場合の注意点
    基本的に何の変換も行わず、「そのまま」転送して下さい
      ・ファイル名や、ファイル名の大文字小文字などを変更しないで下さい
      ・FTPの転送モードは「バイナリ(bin)」を使用して下さい

補足: ディレクトリおよびファイルの権限(パーミッション)について(Unixの場合)

    概要
        一般的なUnixシステムでは、ファイル/ディレクトリに対するユーザーのア
        クセス権を三つの単位で設定します。
            User:  所有者に対するもの
            Group: ファイル/ディレクトリが属するグループ(に属するユーザー)
                に対するもの
            Other: それ以外のユーザーに対するもの

       それぞれに与えるアクセス権についても三つの単位で設定します。
            Read:  ファイルの読み取り / ディレクトリ内部の閲覧
            Write: ファイルの書き込み / ディレクトリ内へのファイルの作成、
                ディレクトリ内にあるファイルの削除
            X(Execute): ファイルの実行 / ディレクトリ内への移動

        結果として、 'どのようなユーザーに、何を許可するのか' という指定は
        ファイル/ディレクトリごとに
            3種類のユーザー x 3種類のアクセス権 = 9個の設定
        によって行います。

        アクセス権は、0から7までの数値でも表現することができます。
                    Read   Write Execute
            7(rwx)  許可   許可   許可
            6(rw-)  許可   許可   ----
            5(r-x)  許可   ----   許可
            4(r--)  許可   ----   ----
            3(-wx)  ----   許可   許可
            2(-w-)  ----   許可   ----
            1(--x)  ----   ----   許可
            0(---)  ----   ----   ----

        これを使い、アクセス権を短く表現する事ができます。
            例: 
            777 = "所有者"、"ファイル/ディレクトリが所属するグループ"、"そ
                れ以外の全てのユーザー" について、全ての許可を与える
            644 = 誰でも読みとりが可能、所有者は書き込みも可能

WikiやWebサーバーが要求するパーミッション
    パッケージから展開した直後のファイルは、このように設定されて
    います。

    ディレクトリ パーミッション
      attach         777	添付ファイル格納ディレクトリ
      backup         777	バックアップファイル格納ディレクトリ
      cache          777	キャッシュファイル格納ディレクトリ
      counter        777	カウンタファイル格納ディレクトリ
      diff           777	差分ファイル格納ディレクトリ
      image          755	画像ファイル
      image/face     755 	(画像ファイル)フェイスマーク  
      lib            755	ライブラリ
      plugin         755	プラグイン
      settings       755	設定ファイル格納フォルダ
      skin           755	スキン、CSS、JavaScirptファイル
      wiki           777	データの格納ディレクトリ

    ファイル    パーミッション データの種類(参考)
      .htaccess      644       ASCII
      .htpasswd      644       ASCII
      */.htaccess    644       ASCII

    ファイル    パーミッション データの種類(参考)
      *.php          644       ASCII
      */*.php        644       ASCII
      attach/*       666       BINARY (はじめは存在せず)
      backup/*.gz    666       BINARY (インストール時は存在せず)
      backup/*.txt   666       ASCII  (多くの環境では存在せず)
      cache/*        666       ASCII
        (一部のプラグインはバイナリファイルを保存します)
      counter/*      666       ASCII  (はじめは存在せず)
      diff/*.txt     666       ASCII  (はじめは存在せず)
      wiki/*.txt     666       ASCII
      image/*        644       BINARY
      image/face/*   644       BINARY
      lib/*          644       ASCII
      plugin/*       644       ASCII
      settings/*     644       ASCII
      skin/*         644       ASCII

バックアップとリストア
    ページの最新データを収めているディレクトリ(デフォルトの名前は wiki)以下
    を、また必要に応じて他のデータを収めているディレクトリ以下をバックアップし
    て下さい。(同 attach, backup, cache, counter, diff)

    cacheディレクトリもバックアップすることをお薦めします。
    1. cache/*.rel ファイルと cache/*.ref ファイルは linksプラグイン で再生
       成可能ですが、この処理は非常に重く、環境によっては処理が必ず失敗する
       (中断する)場合があります。
    2. cache/*.rel ファイルが Wikiに全くない時に既存のページを編集すると、
      linksプラグインを実行した状態とほぼ同等の負荷がかかります。
      (詳細:BugTrack2/56)
    3. amazonプラグインはここに画像(のキャッシュ)を保存します。

    データを配置した時は、ファイルのパーミッションが期待されている通りかどう
    か、また実際に動作するかどうかを確認して下さい。(例: 配置したページの更新
    を試みる)

    添付されている dumpプラグイン で、wiki/attach/
    backup ディレクトリのリモートバックアップ(*.tar.gzないし*.tar形式)が可能で
    す。
      起動の例: index.php?plugin=dump

    dumpプラグインにはdumpプラグインで取得したファイルの中身をWikiに展開す
    る機能(リモートリストア)も用意されています。ただしファイルに含まれていない
    データをWikiから削除する機能はありません(常に上書きになります)し、Web
    サーバーやPHPのアップロードファイルサイズ制限を越えるファイルを利用するこ
    とはできません。またこの機能はデフォルトで無効になっています。

    その他、Wikiの更新内容をメールで通知する機能は、既存のデータを失わない
    ための機能としてとらえる事ができるでしょう。
