原発の方はさらに危ない状況になっているようですが、私には間違いなくどうにもならないので自分の仕事に専念することにしています。
それはさておき、OpenPNEというSNSサイトを構築できるパッケージのインストール日記です。
オフィシャルにあるOpenPNE3 をさくらのレンタルサーバにインストールしてみましたやOpenPNE3.4 セットアップ手順や
さらにはいくつかのサイトを見ながらインストールしたのですが・・・。とんでもないものに自分がはまってしまったのでそれも踏まえてちょっと解説です
1.まずはさくらのレンタルサーバーにSSH経由でログインする
これができないと話になりません。PuTTYをもってくるなりUTF-8 TeraTermをもってくるなりするのは自由ですが、とりあえずはログインしてください。
以降はシェル上での作業になりますのでUnix系のコマンドについては理解していることが前提ですね。
2.パッケージをwgetでダウンロードして解凍
オフィシャルのサイトの「zip版ダウンロード」のボタンのURLをコピーしてwgetの引数に貼り付ければ完了です。つまり、
$ wget "http://github.com/openpne/OpenPNE3/zipball/OpenPNE-3.4.11.1"
で取得します。取得できたパッケージはunzipコマンドで解凍します。解凍できればOpenPNEのディレクトリが作成されます。わかりやすく名前を変えておくのがいいと思います。
3.設定ファイルをコピーしてOpenPNE.ymlを環境に合わせる
この辺の作業はシェル上で行ってもかまいませんし、いったんFTPソフトでダウンロード=>リネーム=>編集=>アップロードの流れで行ってもかまいません。
が、このとき編集でメモ帳などのテキストエディタを使う場合のみ要注意です。
メモ帳などでOpenPNE.ymlを編集したとき、ファイルの先頭にUTF-8を示すBOMがつくことがあり、これは必ず除去した上でアップロードしなければなりません。(私がはまった項目です)
BOMについては適当に検索を行えば何かわかると思います。これの除去は、たとえばNextFTPを使っている場合なら[漢字コード変換]=>[UTF-8N]の処理によって行うことができます。
また、バイナリエディタを通す場合は先頭に[EF BB BF]という3byteがあると思いますので、それを取り除いて保存してください。
これがうまくいかないと、次の動作が正常に動作しません。もちろんFTP転送時にASCIIモードとBINARYモードを勘違いしてファイル処理をしないでくださいね。
4.symfonyでインストール処理
さくらの場合は、phpをCGIモードで動かしているため、インストールの処理は
$ php symfony openpne:install
と入力します。ちなみに、前の項目でUTF-8のBOMが残ったままになると、この処理がうんともすんとも言わない状態(実行しようとしても即座に処理が戻ってくる)になります。
この辺はymlを読み込むモジュール側にも物申したいところですが、それはおいておきます。
うまく動作すればDBの状態を聞いてくるようになりますので、その辺はオフィシャルの解説通りに進んでください。
ちなみに、最新版の3.4.11.1であればArchiveTarに関する問題が解決しているのですが、それ以前のバージョンであればArchiveTarに関する問題が残ったままになっています。
これについてはオフィシャルの【緊急リリース補足】PHP 5.3.4 以降で OpenPNE プラグインが導入できない問題についてを参考に解決してください。
5. .htaccessの設定とシンボリックリンクの設定
.htaccessとシンボリックリンクの設定についてはオフィシャルの参考サイトそのままですのでそれを参考にしてください。
よくわからないのは、どうやら[sns]という名前を使うとあまりよくない、というところでしょうか。
6. さくらのレンタルサーバーで動作させるphpをcgi-fcgiではなくcgiのものを選択する
これがさらに要注意点。現在のさくらのレンタルサーバーではphpのバージョンがいくつか動かせますが、ちょっとOpenPNEと相性が悪いコンパイルの仕方をしたphpモジュールがあります。
私がこれを記述している段階では、php5.2系は大丈夫なのですが、php5.3系はこの制約に引っかかります。php5.3系を使うとログインの動作確認で正常に動作しないパターンがあります。
7. 一般ユーザーと管理ユーザーのログインテストを行って完了
ここまでうまくこれればログインテストは成功するはずです。できなかったら・・・、特に4.の処理が正しく行われたかどうかをちゃんと確認する必要があります。
4.でエラーが多発しているようなら何か問題が発生しています。この処理で発生するエラーはほとんどないはずです。(DBのバージョン[MySQL5.1]およびphpのバージョン[5.2系]が正しいなら)
ということで簡単な解説でした。ほとんどオフィシャルと言っていることに代わりはないと思います。
違うのはオフィシャルの方がバージョンが古いことと、バグフィックス系で処理が変化しているところでしょうか。