sakuraレンタルサーバにOpenPNE3.4をインストール

sakura レンタルサーバへ OpenPNE をインストールしているんだけど、どうにもうまくいかないという連絡を受けてチャレンジしてみました。僕の苦手な php 系の案件なのですが、まぁ世に出ているオープンソースだし、そんなに苦労しないだろうと思っていたんですが、思いのほかドツボにはまりまくって苦労した案件の振り返りです。

結論からすると、まず初めにチェックすべき項目は、sakura のサーバコントロールパネルへログインして利用する php の選択を確認するところから。

img001.jpg

- スポンサーリンク -

OpenPNE2 では php 4.3.3 以降、OpenPNE3 では php 5.2.3 以降が必要なので、思わず最新の php 5.3.5 を選択したくなりがちだが、ここが落としどころ。5.3.5 の方は cgi-fcgi モードでインストールされています。5.2.17 の方は cgi モードでインストールされているので、ネットで見つかる OpenPNE のインストール手順に従っていけば正常に動作しますが、5.3.5 を選択してしまうと動作しません。

デフォルトでは「標準のPHP[PHP5] (推奨)」という選択になっているのですが、これは 5.2.17 を選択したのと同じ意味になるように設定されています。ようは何も設定を変更しなければ良いというわけです。

PHP 5.3.5 (CGI版)
PHP 5.3.5 (cgi-fcgi) (built: Jan 10 2011 18:28:53)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

PHP 5.2.17 (CGI版)
PHP 5.2.17 (cgi) (built: Jan 10 2011 18:18:20)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

ちなみに 5.3.5 を選択してしまうと次のようなエラーに見舞われます。

http://****.sakura.ne.jp/openpne/pc_backend.php の管理画面にアクセスして ID/PW を入力して submit すると何故か下記のエラー画面になり進めない。

No input file specified.

http://****.sakura.ne.jp/openpne/ のメンバーログイン画面にアクセスすると真っ白な画面になってしまいます。HTTP status としては下記のコードが返却されます。

HTTP 500 内部サーバーエラー

さて、php のバージョンを確認したら、データベース情報を設定&確認してメモをしておきます。

img002.jpg

ここまできたら SSH でターミナルを開き、下記のようにコマンドを入力していきます。まずはバイナリを github から取得して展開するところまで。

cd ~
wget http://download.github.com/openpne-OpenPNE3-OpenPNE-3.4.9.2-0-g62869c4.zip
mv openpne-OpenPNE3-OpenPNE-3.4.9.2-0-g62869c4.zip OpenPNE3.zip
unzip OpenPNE3.zip
mv openpne-OpenPNE3-62869c4 OpenPNE3

次に config の設定です。まずはデフォルトの sample 値をベースにファイルを作成します。

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

次に OpenPNE.yml の設定を行います。とりあえず動かすだけなら base_url と domain の設定の二カ所でOKです。赤文字の部分を修正します。

%vi OpenPNE.yml
######################################
# 基本設定 (Basic)
######################################

# SNS の URL
# URL of the SNS
base_url: "http://****.sakura.ne.jp/"


######################################
# メール (Mail)
######################################

# SNS からのメール送信に使うドメイン
# Domain to use for sending e-mail from the SNS
mail_domain: "****.sakura.ne.jp"

次に symfony 経由で openpne もろもろのインストールを行います。下記コマンドを入力します。

cd ..
php symfony openpne:install

まず初めにデータベースの設定について聞かれます。サーバーコントロールパネルの設定値に従って値を入力します。

  • Choose DBMS (mysql, pgsql or sqlite) は「mysql」と入力。
  • Type database username は「データベースユーザー名」を入力。
  • Type database password (optional) は「データベースパスワード」を入力。
  • Type database hostname は「データベース サーバ」を入力。
  • Type database port number (optional) はそのままリターン。
  • Type database name は「データベース 名」を入力。

入力が終わるとインストールが開始されるが、下記のようなメッセージが出力されたらインストールは正常に行えていません。その場合は再度同じコマンドを入力します。何度か入力しているうちに正常にインストールされるはずです。

>> plugin    installing plugin "opAuthMailAddressPlugin"
>> sfPearFrontendPlugin downloading opAuthMailAddressPlugin-1.2.1.tgz ...
>> sfPearFrontendPlugin Starting to download opAuthMailAddressPlugin-1.2.1.tgz (13,595
>> sfPearFrontendPlugin bytes)
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin ...done: 13,595 bytes
 Installation of "opAuthMailAddressPlugin" plugin failed: unable to unpack /home/hogehoge/OpenPNE-3.4.9.2/cache/.pear/opAuthMailAddressPlugin-1.2.1.tgz 
>> plugin    installing plugin "opAuthMobileUIDPlugin"
>> sfPearFrontendPlugin downloading opAuthMobileUIDPlugin-1.0.0.tgz ...
>> sfPearFrontendPlugin Starting to download opAuthMobileUIDPlugin-1.0.0.tgz (6,422
>> sfPearFrontendPlugin bytes)
>> sfPearFrontendPlugin ...done: 6,422 bytes
 Installation of "opAuthMobileUIDPlugin" plugin failed: unable to unpack /home/hogehoge/OpenPNE-3.4.9.2/cache/.pear/opAuthMobileUIDPlugin-1.0.0.tgz 

・・・中略・・・

installer installation is completed!

debug モードにして動作させてみたらログと画面上には下記のようなエラーが出力されました。

Fatal error: Cannot instantiate abstract class opAuthAdapter in /home/hogehoge/OpenPNE3/lib/user/sfOpenPNESecurityUser.class.php on line 101

正常時は下記のようなログが出力されるはずです。installer installation is completed! は正直当てにならないってことですね。

>> plugin    installing plugin "opAuthMailAddressPlugin"
>> sfPearFrontendPlugin downloading opAuthMailAddressPlugin-1.2.1.tgz ...
>> sfPearFrontendPlugin Starting to download opAuthMailAddressPlugin-1.2.1.tgz (13,595
>> sfPearFrontendPlugin bytes)
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin ...done: 13,595 bytes
>> opPluginManager Installation successful for plugin "opAuthMailAddressPlugin"
>> plugin    installing plugin "opAuthMobileUIDPlugin"
>> sfPearFrontendPlugin downloading opAuthMobileUIDPlugin-1.0.0.tgz ...
>> sfPearFrontendPlugin Starting to download opAuthMobileUIDPlugin-1.0.0.tgz (6,422
>> sfPearFrontendPlugin bytes)
>> sfPearFrontendPlugin ...done: 6,422 bytes
>> opPluginManager Installation successful for plugin "opAuthMobileUIDPlugin"

・・・中略・・・

installer installation is completed!

ここまでできたらあと一息です。web/.htaccess を下記のように編集します。赤文字の部分の二カ所を変更してください。

#Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  RewriteBase /openpne/

  # we skip all files with .something
  #RewriteCond %{REQUEST_URI} \..+$
  #RewriteCond %{REQUEST_URI} !\.html$
  #RewriteRule .* - [L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

最後にシンボリックリンクを作成して作業は完了です。

cd ~
cd www
ln -s ../OpenPNE3/web openpne

以上で設定は完了です。あとは以下の URL からアクセスが可能です。ログインを確認したら、即座にパスワードは変更しましょう!

  • メンバーログイン画面(ID = sns@example.com、PW = password でログイン可能)
    http://****.sakura.ne.jp/openpne/
  • 管理者画面(ID = admin、PW = password でログイン可能)
    http://****.sakura.ne.jp/openpne/pc_backend.php

今回のはまり所は、php のバージョン(というか動作モード)と symfony openpne:install で実はプラグイン周りが正常にインストールできていなかった2点です。しかも後者は何がダメで、再度実行すると何故うまくいったかも謎です。

- スポンサーリンク -