sakuraレンタルサーバにOpenPNE3.4をインストール
sakura レンタルサーバへ OpenPNE をインストールしているんだけど、どうにもうまくいかないという連絡を受けてチャレンジしてみました。僕の苦手な php 系の案件なのですが、まぁ世に出ているオープンソースだし、そんなに苦労しないだろうと思っていたんですが、思いのほかドツボにはまりまくって苦労した案件の振り返りです。
結論からすると、まず初めにチェックすべき項目は、sakura のサーバコントロールパネルへログインして利用する php の選択を確認するところから。
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 すると何故か下記のエラー画面になり進めない。
http://****.sakura.ne.jp/openpne/ のメンバーログイン画面にアクセスすると真っ白な画面になってしまいます。HTTP status としては下記のコードが返却されます。
さて、php のバージョンを確認したら、データベース情報を設定&確認してメモをしておきます。
ここまできたら 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 = [email protected]、PW = password でログイン可能)
http://****.sakura.ne.jp/openpne/ - 管理者画面(ID = admin、PW = password でログイン可能)
http://****.sakura.ne.jp/openpne/pc_backend.php
今回のはまり所は、php のバージョン(というか動作モード)と symfony openpne:install で実はプラグイン周りが正常にインストールできていなかった2点です。しかも後者は何がダメで、再度実行すると何故うまくいったかも謎です。
コメントやシェアをお願いします!
匿名
php.iniに
AddHandler fcgid-script .php
を追加すると、PHP 5.3.5 (cgi-fcgi)でも動作しました。
PHP: Apache 2.x (Microsoft Windows 用) - Manual:
http://php.net/manual/ja/install.windows.apache2.php
このページのFastCGIの設定のことみたいです。