ブログ

OpenPNE-3.8.x のインストールについて

こんにちは。
手嶋屋 技術サポートから、OpenPNEの運用・カスタマイズに役立つ情報をお届けします。

本日は、公式SNSでお問い合わせの多い OpenPNE-3.8.x のインストール方法 をお届けします。
OpenPNEのインストール方法については、OpenPNEのパッケージにも同梱されています。
https://raw.githubusercontent.com/openpne/OpenPNE3/OpenPNE-3.8.19/doc/ja/OpenPNE3_Setup_Guide.txt

OpenPNEのインストールはコマンド実行により行うため、コマンドを入力するツールが必要になります。
Windowsの場合は、TeraTerm や PuTTY など、Macの場合は、ターミナル や iTerm などを利用してください。

今回の手順は下記の環境にて動作確認しています。

目標

ブラウザで http://sns.example.com にアクセスすると OpenPNE のログイン画面が表示され、初期アカウント情報でログインができる

サーバ環境

Debian 8.2
Apache 2.4.10 * mod_rewrite 使用
PHP 5.6.14
MySQL 5.5.46

OpenPNE設置ディレクトリ: /var/www/sns.example.com

クライアント環境

OS X 10.10.5
iTerm2
Firefox 45.0.2

OpenPNE・プラグインのバージョン

■OpenPNE

3.8.19

■プラグイン

opCommunityTopicPlugin 1.1.2.1

インストール

操作は、クライアント環境の iTerm2 上で行っています。
サーバにはSSHログインを行っておきます。

OpenPNEのダウンロードと解凍

$ cd /var/www
$ wget https://codeload.github.com/openpne/OpenPNE3/legacy.zip/OpenPNE-3.8.19
$ unzip OpenPNE-3.8.19
$ mv openpne-OpenPNE3-d3ed39e sns.example.com
$ cd sns.example.com

OpenPNE.yml の設定

設定ファイルは .sample ファイルをコピーします。
.sample ファイルは削除しないようにしてください。
OpenPNE は、sampleファイルの内容も参照することがあります。

$ cp config/ProjectConfiguration.class.php.sample config/ProjectConfiguration.class.php
$ cp config/OpenPNE.yml.sample config/OpenPNE.yml
$ vi config/OpenPNE.yml

OpenPNE.yml 変更箇所

7  base_url: "http://sns.example.com"
15  mail_domain: "sns.example.com"

インストール

$ php symfony openpne:install

下記の内容を聞かれるのでそれぞれ入力します。

Choose DBMS:
  - mysql
  - pgsql (unsupported)
  - sqlite (unsupported)

使用する DBMS の種類を入力します。
ここでは、「mysql」と入力します。

Type database username

データベースのユーザ名を入力します。

Type database password (optional)

データベースのパスワードを入力します。

Type database hostname

データベースサーバのホスト名を入力します。

Type database port number (optional)

データベースのポート番号を入力します。未入力の場合は DBMS ごとのデフォルト値が使用されます。

Type database name

データベース名を入力します。
ここでは例として「openpne3819」と入力します。

Type database socket path (optional)

データベース接続に使用するソケットのパスを入力します。
ホスト名とポート番号を使用して接続するため、特に指定する必要はありません。

 The DBMS                 : mysql
 The Database Username    : openpne
 The Database Password    : ******
 The Database Hostname    : localhost
 The Database Port Number :
 The Database Name        : openpne3819
 The Database Socket      :

  Is it OK to start this task? (Y/n)

最後に入力した内容の確認をします。問題なければ「y」を入力します。

インストール中に下記のエラーメッセージが表示されます。

>> doctrine  SQLSTATE[HY000]: General error: 1008 Can't drop database 'openpne3819'; database doesn't exist. Failing Query: "DROP DATABASE openpne3819"

openpne:install タスクでは、クリーンインストール時にいったんデータベースの削除を行います。
このエラーメッセージは、指定したデータベースが存在していなかった場合にデータベースの削除ができないよというエラーメッセージです。
ですので、今回は特に対応は必要ありません。

下記のメッセージが表示されれば、インストール完了です。

>> installer installation is completed!

プラグインのインストール

今回は、opCommunityTopicPlugin 1.1.2.1 をインストールします。

$ php symfony opPlugin:install opCommunityTopicPlugin -r 1.1.2.1

※ ご注意
PHP5.5以上の環境で opPlugin:install タスクにてプラグインをインストールする場合、下記のエラーメッセージが表示されます。

>> sfPearFrontendPlugin could not extract the package.xml file from
>> sfPearFrontendPlugin "/var/www/sns.example.com/cache/.pear/opCommunityTopicPlugin-1.1.2.1.tgz"
>> sfPearFrontendPlugin Download of
>> sfPearFrontendPlugin "http://get.openpne.jp/opCommunityTopicPlugin-1.1.2.1.tgz"
>> sfPearFrontendPlugin succeeded, but it is not a valid package archive
>> sfPearFrontendPlugin Invalid or missing remote package file
 Plugin "opCommunityTopicPlugin" installation failed:

これは、プラグインの展開に失敗しているため表示されています。
この問題についての詳細は、https://redmine.openpne.jp/issues/3918 を確認してください。
この問題についての修正はまだリリースされていませんので、今回はチケットに記載の修正内容に従って Archive_Tar を更新したのち再度プラグインのインストールを行います。

下記のメッセージが表示されれば、インストール完了です。

>> opPluginManager Installation successful for plugin "opCommunityTopicPlugin"
>> opPluginManager Installing web data for plugin

モデルとデータベースの更新をします。

$ php symfony openpne:migrate --target=opCommunityTopicPlugin

モデルとデータベースの更新中に下記のエラーメッセージが表示されます。

Failed to download plugin list.

これは、OpenPNE-3.6.x のころにはあった バンドルプラグインリスト が、OpenPNE-3.8.x では存在しないため表示されるメッセージですので、特に問題はありません。

VirtualHostの設定

Apache のVirtualHostの設定に下記の設定を追加します。
今回の環境では、/etc/apache2/sites-enabled/virtual.host.conf に追加します。

<VirtualHost *:80>
  ServerName sns.example.com
  VirtualDocumentRoot /var/www/sns.example.com/web
  <Directory "/var/www/sns.example.com/*">
    Options FollowSymLinks ExecCGI
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

Apacheを再起動します。

$ sudo apachectl restart

ブラウザで確認

クライアント環境のブラウザから「http://sns.example.com/」にアクセスして OpenPNE 3 のログイン画面が表示されれば OK です。
初期アカウントはセットアップガイドにある通り、sns@example.com / password となっています。変更して使ってください。

また、管理画面は「http://sns.example.com/pc_backend.php」へアクセスすれば表示されます。
初期アカウントはセットアップガイドにある通り、admin / password となっています。変更して使ってください。

ログイン画面が表示されたものの、アカウント情報を入力してログインボタンを押下すると「Not Found」が表示されることがあります。
この場合は、mod_rewrite を有効にします。

$ sudo a2enmod rewrite

Apacheを再起動します。

$ sudo apachectl restart

問題が発生した場合の解決のためのヒント

画面操作中に下記のメッセージが表示されることがあります。

現在、サーバが混み合っているか、メンテナンス中です。
ご迷惑をおかけいたしますが、しばらく時間を空けて再度アクセスしてください。

Currently, our service is too busy or is under maintenance.
We're sorry and please retry accessing later. 

このメッセージが表示された場合、サーバでは何らかの問題が発生しています。
この問題を解決するために下記を確認します。

1. pc_frontend_dev.php 経由でアクセスする

「http://sns.example.com/community/1」を表示しようとした際に、問題が発生した場合は、
「http://sns.example.com/pc_frontend_dev.php/community/1」にアクセスします。
画面上にエラーメッセージが表示されるので、解決のための手助けにしてください。

2. apacheのエラーログを確認する

apacheのエラーログにもエラーメッセージが出力されていますので、解決のための手助けにしてください。

今回の情報は以上です。


■公式SNS
https://sns.openpne.jp/
OpenPNEユーザーの皆さんが気軽にコミュニケーションができるQ&Aサイトです。
どなたでも無料で利用できます。(facebook、google、twitter の各アカウントでログインが可能です。)

■技術サポートサービス
http://support.pne.jp/
OpenPNE開発元の手嶋屋が提供しているサービスです。
有料になりますがこちらにお申し込みいただきますと弊社のOpenPNE開発エンジニアがOpenPNEの様々なトラブルについて、調査・サポートさせていただきます。

今後とも、OpenPNE 技術サポートをよろしくお願いいたします。