XOOPS Cube 2.2へのアップグレード方法

  • 9
    Like
  • 0
    Comment
More than 1 year has passed since last update.

参考URL: http://sourceforge.net/apps/mediawiki/xoopscube/index.php?title=Upgrade22;ja

注) XOOPS Cube LegacyをXCLと表記します。

XCL2.2で動く x-update という至極便利なモジュールを使いたいので、XCL2.1で構成されたサイトをXCL2.2にアップグレードした。せっかくなのでその方法をシェアします。

1. サイトのバックアップ!

まずは現状のサイトのバックアップをしよう!
私はいまのところ数サイトをアップグレードしてどれも成功しているけど、もし間違ってしまった場合は戻せなくなってあたふたするのは嫌だから、必ずバックアップを行なってからアップグレードを行うのがベターだ。

1. サイトをいったん閉鎖する

管理画面 > 互換モジュール > 全般設定 > サイトを閉鎖する > はい

こうすることでサイトがメンテナンスモードになるので、ユーザによる投稿ができなくなり、データ更新が停止できる。
ただし、閲覧のみのサイトであればメンテナンスモードへ移行しなくても良い場合もある。

2. ファイルのバックアップ

とにかくXCLが動いているディレクトリごとファイルをバックアップしておく。tar.gzやZIPに固めるでもいいし、ディレクトリまるごとコピーを取っておくのでも良し、サーバからPCに転送しておくでもOK。

バックアップするべきディレクトリは下記の2つ。

htdocs
 ├ html
 └ xoops_trust_path

※ 人によってはディレクトリ名がhtmlじゃなくてhtdocsだったりwwwだったりpublic_htmlだったりすると思うので、適宜読み替えてください。

2. ファイルの準備

https://github.com/xoopsx/legacy から最新のコードをダウンロードし解凍する。
コマンドが使える場合は下記のコマンドでも良い。

git clone git@github.com:XoopsX/legacy.git

もしくは

git clone https://github.com/XoopsX/legacy.git

ダウンロードが終わると、下記の構成になっていると思います。

htdocs
 ├ html
 ├ xoops_trust_path
 └ legacy
    ├ html
    └ xoops_trust_path

ダウンロードしたファイルから以下のディレクトリとファイルを削除します。

rm -fr legacy/html/install
rm -f  legacy/html/mainfile.php
rm -fr legacy/html/favicon.ico
rm -fr legacy/html/install legacy/html/mainfile.php legacy/html/favicon.ico

※ ダウンロードした内容をそのままアップロードしないように!!
ダウンロードしたファイル全部で上書きしてしまうと既存の設定が消えてサイトが機能しなくなってしまいますので、 html, xoops_trust_path は基本的にサーバにアップロードしますが、必ず上記のファイルを削除してから上書きしてください。

cp -r legacy/html/* html/
cp -r legacy/xoops_trust_path/* xoops_trust_path/

英語以外の言語(日本語とか)を使う場合

  1. 英語以外の言語を使う場合は、extras/extra_languages から必要な言語ファイルを移動します。
  2. 例えば、日本語UTF8 環境で XOOPS Cube Legacy をお使いの場合、extras/extra_languages/ja_utf8/ 以下の language, modules ディレクトリを XOOPS_ROOT_PATH 以下に上書きでコピーしてください。 (もう一つ install ディレクトリもありますが、アップグレードでは使いません)。
cp -r legacy/extras/extra_languages/ja_utf8/language/* html/language/
cp -r legacy/extras/extra_languages/ja_utf8/modules/* html/modules/
  • 準備したファイルをすべてサーバにアップロードします。xoops_trust_path が無いXOOPSを使っている人については、次のステップ XOOPS_TRUST_PATH も参照してください。
  • xoops_trust_path/cache のパーミッションを '777' に変更します。
mkdir xoops_trust_path/cache
chmod 777 xoops_trust_path/cache

2-1. Altsysの対応(ホダ塾ディストリビューションを使っている場合)

この1行を

$this->_loadLanguage('legacy', 'setting');

html/preload/SetupAltsysLangMgr.class.phpfunction loadGlobalMessageCatalog() に以下のように追加してください。

html/preload/SetupAltsysLangMgr.class.php
function loadGlobalMessageCatalog()
{
     /* if (!$this->_loadFile(XOOPS_ROOT_PATH . "/modules/legacy/language/" . $this->mLanguageName . "/global.php")) {
     $this->_loadFile(XOOPS_ROOT_PATH . "/modules/legacy/language/english/global.php");
     } */
     $this->_loadLanguage( 'legacy' , 'global' ) ;
     $this->_loadLanguage( 'legacy' , 'setting' ) ; /*** <= ここに追加するんだ!***/

     //
     // Now, if XOOPS_USE_MULTIBYTES isn't defined, set zero to it.
     //
     if (!defined("XOOPS_USE_MULTIBYTES")) {
         define("XOOPS_USE_MULTIBYTES", 0);
     }
}

3. XOOPS_TRUST_PATH の作成

ホダ塾ディストリビューションを利用している場合は既に XOOPS_TRUST_PATH に対応している のでこの作業は必要ありませんが、そうでない場合は XOOPS_TRUST_PATH を用意する必要があります。

  1. XCL2.2より, xoops_trust_path が追加になります。 このディレクトリは、html/ の外に設置してください。html 以下に配置すると、セキュリティに問題が発生します。
  2. html/settings/site_custom.ini.php が存在する場合、/xoops_trust_path/settings/site_custom.ini に移動します。
  3. html/class/smarty/plugins に追加されたプラグインを xoops_trust_path/libs/smarty/plugins にコピーします(上書きコピーにならない要注意)。
  4. 定数 XOOPS_TRUST_PATH を mainfile.php に追加してください。
mainfile.php
define('XOOPS_TRUST_PATH', 'YOUR_PATH/xoops_trust_path');

実際はこんな感じ

mainfile.phpコード追加後
・・・
if ( !defined("XOOPS_MAINFILE_INCLUDED") ) {
    define("XOOPS_MAINFILE_INCLUDED",1);

    define('XOOPS_ROOT_PATH', 'YOUR_PATH/html');

    define('XOOPS_TRUST_PATH', 'YOUR_PATH/xoops_trust_path'); /*** <= ここに追加するんだ!***/

    define('XOOPS_URL', 'http://YOUR_DOMAIN/html');

・・・

4.ディレクトリパーミッションの変更

chmod 777 xoops_trust_path/templates_c/
chmod 777 xoops_trust_path/uploads

5. ブラウザからアップグレード処理

  1. upgrade22.class.phpextras/extra_preload から html/preload にアップロードします。
cp legacy/extras/extra_preload/upgrade22.class.php html/preload/
  • あなたのサイトにアクセスします。profile モジュールのインストール画面が表示されますので、インストールして下さい。
  • html/preload/upgrade22.class.php を削除します。
  • 管理画面のモジュール管理で、すべてのモジュールをアップデートします。

6. 不要になったディレクトリの削除

無事にサイトの動作が確認できたら、以下のディレクトリ/ファイルを削除します。
無事にサイトの動作が確認できたらというのは、トップページ及び他のページにいくつかクリックしてみて遷移してみる、管理画面に入って、いくつかクリックしてみて正常に動いているかを確認する、というくらいで良いでしょう。

rm -fr html/cache
rm -fr html/class/smarty/*.{lib,php,tpl} (index.htmlを除く)
rm -fr html/class/smarty/core
rm -fr html/class/smarty/plugins/*.php (index.htmlを除く)
rm -fr html/settings
rm -fr html/templates_c

7. 管理画面からモジュールのアップデート

XOOPS Cube 2.2 のモジュールで上書きされているので、管理画面から必要なモジュールに対してモジュールアップデートを行う必要があります。

管理画面 »» 互換モジュール »» モジュールの管理

から行なって下さい。
アップデートが必要なモジュールには"NEW"アイコンが表示されています。

8. サイトを再開する

管理画面 > レガシーシステム > 全般設定 > サイトを閉鎖する のチェックを外してサイトを開始します。

※ うまくいかない場合には

extras/utility_tools/legacy22_check.phpXOOPS_ROOT_PATH (mainfile.phpと同じディレクトリ)に置いて、ブラウザでこのファイルにアクセスしてください。ヒントが表示されるかもしれません。