アップグレード方法

提供: GeeklogJpWiki

2011年8月29日 (月) 15:17時点における 今駒哲子 (トーク | 投稿記録) による版
(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)

目次

Geeklogをアップグレードする方法

アップグレードとは

最新のGeeklogへアップグレードする場合には,プログラムソースを最新に置き換えるだけではなく,Geeklogのテーブル構造をGeeklogのインストーラによって書き換える必要があります。Geeklogのインストーラで,新規インストール・アップグレードを選らんで実行するしくみです。

Geeklogをアップグレードするなら環境もアップを

もし,ご利用の環境がMySQL4 PHP4であるならば,この際,サーバを移して,MySQL5 PHP5にバージョンを上げることをおすすめします。

Geeklogの多くの開発者はPHP4ではなくPHP5で開発しています。Geeklog本体はPHP4,5両方で動きますが,アドオンを追加して運用する場合,PHP4を利用することで思わぬトラブルも。アドオン開発者は知らず知らずPHP5しか対応していない関数を使ってしまうことは良くあるからです。

また,MySQLも4.0は文字化け発生の元。ぜひ5にアップしましょう。

データベースをutf-8,unicode_general

データベースを以下のモードに変更してください。

  • MySQLの文字セット: UTF-8 Unicode (utf8)
  • MySQL 接続照会順序: utf8_general_ci

注意:

utf8_unicode_ciにすると,~や機種依存文字の①②がすべて ? に置き換わってしまいます。

サーバを設定する

.htaccessに,以下の設定を追加して調整することをおすすめします。(サーバによっては.htaccessは利用できません。ファイル名も変わる場合があります。) 各レンタルサーバに対応した設定方法は,各サーバの設定ページ各サーバの設定をご覧ください。

php_flag register_globals Off
php_flag track_vars On
php_value mbstring.internal_encoding UTF-8
php_flag short_open_tag Off

以下を追加すると,PHPのエラー情報が表示され,エラー内容をつかむことができます。

php_flag display_errors On

まず確実にデータベースのGeeklogテーブルを保存する

DB管理プラグイン(Dbman)を最新版にアップグレードした上で,Dbmanで書き出すのが一番確実です。DbmanはGeeklog1.4.0から対応しています。特に,1.4.0時代のDbmanには書き出しに問題があるので,かならずプラグインをアップグレードして書き出すよう,注意してください。 一方phpMyAdminでもエクスポートできますが,MySQL4のバージョンによって文字化けするなど不具合があります。 オプションはDbmanはデフォルトのままで大丈夫です。

phpMyAdminでのエクスポートの場合は,

  • 完全な INSERT 文を作成する チェックON
  • 長い INSERT 文を作成する チェックOFF
  • ファイルに保存する チェックON

のモードで書き出してください。

書き出されたファイルの各テーブルのエンコード指定が,ujisになっている場合は,utf-8にすべて置換してください。

書き出されたデータベースは,特にMySQL4でphpMyAdminを利用する場合,かならず文字化けしていないことを確認してください。

インポートテストを行って,問題なく書き出されていることを確認すると安心です。

現行サイトでグレードアップ前にやるべき準備作業

テーマのアップグレード

テーマは、professional_cssをベースに、最新版につくりなおします。

professional_cssに主要3ファイル(header.thtml footer.thtml functions.inc)の元ファイルと、images/custom/* を上書きするだけです。

ただし、Geeklog 1.7以前から1.8へのアップグレードは、主要3ファイルも以下のように修正が必要となりますので、これらはprofessional_cssに対してカスタマイズを一からやりなおすことをおすすめします。

header.thtml

http://code.google.com/p/geeklog-jp/source/diff?spec=svn3093&r=2944&format=side&path=/trunk/geeklog-jp/public_html/layout/ProfessionalCSS/header.thtml&old_path=/trunk/geeklog-jp/public_html/layout/ProfessionalCSS/header.thtml&old=2884

以下の1行を削除
12	    <link rel="stylesheet" type="text/css" href="{css_url}" title="{theme}"{xhtml}>
以下の4行を削除
17	{advanced_editor}18	<!-- Load Common Javascript Libraries -->		
19	    <script type="text/javascript" src="{site_url}/javascript/common.js"></script>		
20	    <script type="text/javascript" src="{layout_url}/javascript/confirm.js"></script>		
21	    <script type="text/javascript" src="{layout_url}/javascript/fix_html.js"></script>

footer.thtml

http://code.google.com/p/geeklog-jp/source/diff?spec=svn3093&r=2944&format=side&path=/trunk/geeklog-jp/public_html/layout/ProfessionalCSS/footer.thtml&old_path=/trunk/geeklog-jp/public_html/layout/ProfessionalCSS/footer.thtml&old=2884

 {plg_footercode} 追加
 {googleanalytics}削除

functions.inc

http://code.google.com/p/geeklog-jp/source/diff?spec=svn3093&r=2944&format=side&path=/trunk/geeklog-jp/public_html/layout/ProfessionalCSS/functions.php&old_path=/trunk/geeklog-jp/public_html/layout/ProfessionalCSS/functions.php&old=1668

以下2行追加
10	$_SCRIPTS->setJavaScriptFile('theme.confirm', '/layout/' . $_CONF['theme'] . '/javascript/confirm.js');
11	$_SCRIPTS->setJavaScriptFile('theme.fix_html', '/layout/' . $_CONF['theme'] . '/javascript/fix_html.js');


プラグインの確認

  1. ファイル管理プラグイン(filemgmt)を利用している場合,plugins/filemgmt/filemgmt.php (設定が記憶されているファイル)を初期ファイルで上書きしてしまったら、管理画面より更新し直してください。あらかじめ退避しておいて、戻す方法でも問題ありません。
  2. Geeklog1.4.1なら,コンフィギュレーションプラグイン(userconfig)でバックアップを行います。そうすることでGeeklog1.5の日本語化プラグイン(japanize)で,その設定を引き継ぐことができます。

1.5ではGeeklogのコアにuserconfigの機能が追加されたのでGeeklog1.5にuserconfigをインストールしてはいけません。(バックアップをしたらプラグイン管理にて無効にし、Geeklog1.5にアップグレード後にjapanizeで設定を引き継いでから削除してください)

他,各プラグインの説明を確認してください。
Geeklog1.5で使えるプラグイン使えないプラグイン

userconfig以外は基本的にすべてGeeklog1.5で動かないことはありませんが,特にGeeklog1.5対応を謳っていないプラグインは一部で不具合が生じる可能性があります。

コアプラグインの確認

カレンダープラグインなどコアのプラグインがインストールされていることを確認しましょう。

アップグレードの際に,コアプラグインのアップグレードも行います。 その際,コアプラグインがアンインストールされていると,Geeklogのインストーラが「テーブルがない」という警告メッセージを英語で表示します。ただし,出たとしても問題はなくアップグレードされています。 「Table 'account.gl_eventsubmission' doesn't exist」

カスタム関数の確認

  1. 変更している場合は、注意が必要です。system/lib-custom.php はかならず手元にダウンロードしてバックアップしておいてください。
  2. 1.5に同梱されていないもの(メール記事投稿など)がありますが,1.5でも引き続き利用できます。
  3. CUSTOM_templatesetvars(In system/custom/custom_templatesetvars.php ) の内容は japanizeプラグインに移動しているので,1.5では日本語版独自のテーマ変数をここでセットする必要はありません。

カスタム関数は,日本語拡張版で標準提供しているものも多いので,まずは日本語拡張版のままインストールし,インストール直後,足りない関数がブラウザに表示された時点で,lib-custom.phpに追加しても遅くありません。

カスタマイズしたテーマのアップグレード

追加したテーマは,かならずバックアップしておきましょう。

サーバ上に,先頭にピリオドを付けて残しておくと,テーマだと解釈されず,そこにディレクトリを存在させることが可能です。

アップグレードでは,テーマは自動的にアップグレードしません。

あらかじめテーマをprofessionalあるいはProfessionalCSSにテーマを変更して保存しておくとアップグレードした直後にエラーにならず,安心です。あるいは利用中のテーマ名でディレクトリを作成して,中身は,最新のProfessionalCSSをアップロードしておくと,バージョンアップでテーマによるトラブルになりません。

カスタマイズしたテーマは次のように手動でアップグレードしておきます。

ベースに利用しているprofessionalあるいはProfessionalCSSを最初にアップロードして,次にカスタマイズしたテーマファイルに関して修正します。

ProfessionalCSSベーステーマであれば,ProfessionalCSSのファイルに対してcustom.css images/custom/* のみ取り急ぎ上書きして新テーマを作成します。ヘッダやフッタは,カスタマイズした箇所を個別に編集して修正します。

アップグレード完了後,header.thtml footer.thtml functions.php に修正を加え,custom.css とimages/custom/*をそのまま追加して徐々に修正していけばよいでしょう。


その他

その他、ハックしている場合は注意が必要です。

本体に直接ハックしているところがあれば,ハックした箇所を,あとで復元できるよう,add_to_そのソース名.phpという名前で同一ディレクトリに置くと,あとで復元しやすいのでおすすめです。

ただ,Geeklog1.5になって,いろいろと機能がアップされています。 ハックしなくてよくなっているところも多いはず。 まずは素のままのGeeklog1.5.2を使ってみて,Geeklog1.5.2で新しく提供された機能でカバーできないことがわかったあとで,ハックを追加しても遅くありません。テーマ変数がかなり多くなり,コンフィギュレーション機能が充実しています。ドキュメント http://www.geeklog.jp/docs/ を良く読んでください。

自動インストーラでアップグレードする

自動インストーラをすぐに起動してアップグレードすることもできますが,ここではさらに便利な,あらかじめインストールパッケージを手元でカスタマイズして作成し,それを自動インストーラで実行してインストールする方法をご紹介します。

最新パッケージを作成する

Geeklog最新版をあらかじめダウンロードして展開し,あらかじめハックしたいところや最初から追加したいプラグインを追加して,インストールパッケージをカスタマイズ。

日本語拡張版パッケージにまだ取り込んでいないものの,便利なアドオンがいろいろと出ています。それらも最初からパケージ化して、そうして,再びzipまたはtar.gzで圧縮します。

圧縮ファイルを指定してインストールする方法は、自動インストーラを。

SQLがわかるひとは,/sql/updates/のアップグレードのためのSQLをカスタマイズすると,デフォルトの値もセットできます。 \sql\updatesのSQLを確認すると,アップグレードがどのように行われるのかよくわかります。プラグインのアップグレードのためのSQLは各プラグインのディレクトリ下のsqlにあります。


自動インストーラを起動する

自動インストーラを実行

自動インストーラを起動し,あらかじめ作成していたサイトへのインストールレシピをドラッグして読み込ませます。まだレシピを作成していない場合は,この際,自動インストーラにデータベース名やFTPなどの情報を入力して,インストールタイプをGeeklog1.5.2拡張版に変更し,レシピを保存しておいてください。

インストールのバージョンがGeeklog1.5.2拡張版に設定されていることを確認した上で,インストールを実行してください。

自動インストーラ起動中

自動インストーラによってパッケージが解凍され,自動的にファイルがサーバーにアップロードされます。最初にプログラムソースがアップロードされ,最後にすべてのテーマがアップロードされ,パーミッションなどがセットされて完了します。

ブラウザが自動起動されてインストーラが表示される

ブラウザが自動起動されてインストーラの画面(http://yourgeeksite/admin/install/)に遷移します。
ブラウザとGeeklogインストーラが自動起動しない場合は,http://サイト/admin/install/ をブラウザから実行してdb-config.phpへのパスを入力します。
インストーラの画面は,最初,英語で表示されます。
最初に英語で表示

なんらかのセキュリティソフトのために自動起動しない場合もあります。

なお,はじめてのサーバであれば,その前に,

http://サイト/admin/insatall/precheck.php

を実行して,サーバの状態をチェックすると安心です。

アップグレードを実行する

インストーラが起動されたら,日本語にモードを変更して,「アップグレード」を選択してください。

日本語へ切り替え

設定画面に遷移したら,再び日本語モードに変更し,内容を確認・編集してアップグレードを実行してください。

データベースの情報入力確認

アップグレード成功の画面が表示される

アップグレード成功の画面が表示されます。画面の説明に従ってアップグレードを進めてください。

非公開領域/db-config.phpと公開領域/siteconfig.phpのパーミッションを変更していた場合,元の状態に戻します。また、画面の表示にしたがってセキュリティ警告の内容を実行してください。

アップグレード完了

サイトで,配布しているlib-custom.php以外のカスタム関数が呼ばれていないとエラーが表示されますが,その場合は,エラーメッセージにしたがってlib-custom.phpを修正してください。

画面が真っ白になって,PHPエラーが表示されない場合は,以下を.htacessに追加すると,PHPのエラー情報が表示され,エラー内容をつかむことができます。

php_flag display_errors On

その他、EmergencyRescueToolを利用してサイトを復活させる方法があります。詳しくはEmergencyRescueToolを。

アップグレードサイトを調整する

日本語化する

1.4.1からのバージョンアップの場合は,日本語化プラグインをインストールして,一括実行を実行。コンフィギュレーションプラグインでバックアップした情報を復活させます。

日本語化プラグインをインストール
日本語化完了!


必要なプラグインをインストール

必要なプラグインをインストールします。ただし,userconfigプラグインはGeeklog1.5以上に対応しませんのでインストールしないでください。userconfigプラグインの機能は,本体機能「コンフィギュレーション」に代わりました。

Geeklogの日本語版のインストーラは,未対応プラグインを無効に変更してインストールします。

インストールが完了したら

インストールが完了したらサーバの/admin/install/ディレクトリを削除してください。

また,自動インストーラがパーミッションを変更したdb-config.phpとsiteconfig.phpも,パーミッションを666(※)から644(※)に戻してください。

(※)パーミッションはサーバによって異なります。

作業ステップ 手動インストール編

以下,手動でアップグレードする方法です。

  • 1から5の作業ステップは自動インストーラで実行可能です。自動インストーラは,Geeklog-1.5のモードで実行してください。ダウンロード,展開,アップロード,ファイルのパーミッション設定,ブラウザを起動してインストーラを実行するまで,すべて自動的に行ないます。


  1. Geeklog JapaneseサイトからGeeklog1.5コアパッケージをダウンロードして展開します。
  2. 新規インストール同様、すべてのファイルをFTP(FTPソフトに注意。転送漏れのないようにしてください。)でサーバにアップロード。つぎのように2つの領域へアップしてください。
    public_html以下のファイルは公開領域へ
    public_html以外の本体のプログラムは非公開領域にアップ
    サーバのファイル構成
  3. PHPがモジュール版のサーバでは,非公開領域/db-config.phpと公開領域/siteconfig.phpを,GroupないしOthersの書き込み可能にパーミッションの変更を行う必要があります。CGI版の場合は,なにもする必要はありません。
  4. http://サイト/admin/install/ をブラウザから実行。
  5. db-config.phpへのパスを入力します。
    サイトのパス/admin/install/ をブラウザから実行 db-config.phpへのパスを入力
  6. 最初に英語で表示されます。
    最初に英語で表示
  7. 日本語へ切り替えてアップグレードをクリックします。
    日本語へ切り替え
  8. データベースの情報を入力します。
    データベースの情報を入力
  9. データベースの情報を入力します。
    データベースの情報を入力
  10. アップグレード完了!
    非公開領域/db-config.phpと公開領域/siteconfig.phpのパーミッションを変更していた場合,元の状態に戻します。また、画面の表示にしたがってセキュリティ警告の内容を実行してください。
    アップグレード完了
  11. 各プラグインをインストールします。userconfigプラグインはGeeklog1.5に対応しませんのでインストールしないでください。userconfigプラグインの機能は,本体機能「コンフィギュレーション」に代わりました。
  12. 日本語化プラグインをインストール。
    各リンクをクリックして個別に日本語化します。
    コンフィギュレーションも移行します。
    日本語化プラグインをインストール
  13. 日本語化完了!
    日本語化完了!
  14. カスタマイズ方法1.5を参考に,カスタマイズします。特にテーマはProfessionalCSSに変更。URLリライトはONに設定してください。


アップグレード後の不具合対策

1.5対応未確認プラグイン

1.5対応未確認プラグインは,アップグレード時に自動的に無効になります。 基本的にコンフィギュレーションプラグイン以外は1.5でも動作しますので,必要なプラグインは有効にチェックしてください。

対応していないプラグインは,管理画面で「Array」という表示が出て,新規作成など管理者用メニューが表示されない場合があります。その場合も,そのURLを直接指定すれば実行は可能です。最新版をダウンロードして対応してください。

CTLハック

CTLハックは,アップグレードによって書き換えられるのでクリアされます。 Geeklog1.5より,KZ_Templateクラスを利用できるようになりましたので,CTLハックのかわりにこちらをご利用ください。

言語とロケール

configurationで「言語とロケール」を選ぶとエラー表示: phpMyAdminのconfigvalueを以下のように書き換えてみてください。

  • language
  • language_files

上記 value を unset に、typeを *text に変更してください。

フィード タイプgeeklog が編集できない

1.4.1時代には,タイプ すべて(geeklog)が選べていたのですが,1.5ではgeeklogがarticlsに変更された?ため,タイプgeeklogのフィードを編集できなくなってしまったようです。

修正するためにはデータベーステーブルのglco_syndication type のgeeklogをarticlsに変更してください。


その他

1.4.1では,config.phpに日本語の環境をととのえるための調整を行っていましたが,今回は大丈夫だろうということで追加していません。が,もし文字化けするようなら,siteconfig.phpに,以下の記述を加えるとうまくいくかもしれません。そのような場合にはご連絡ください。

//HTTP入力文字エンコー ディングのデフォルト値
ini_set('mbstring.http_input', 'pass');
ini_set('mbstring.detect_order', 'UTF-8,EUC-JP,SJIS,JIS,ASCII');
// 文字化けが直らない場合は,順番を適宜,変えてみてください
//HTTP出力文字エンコーディングのデフォルト値 PASS:無変換
ini_set('mbstring.http_output', 'pass');
//内部文字エンコーディングのデフォルト
ini_set('mbstring.internal_encoding', 'utf-8'); //utf-8の場合
//ini_set('mbstring.internal_encoding', 'euc-jp'); //euc-jpの場合
//カレントの言語を設定 日本語
ini_set('mbstring.language', 'japanese');
mb_language('Japanese');//(PHP 4 >= 4.0.6, PHP 5)
//magic_quotes オフ
ini_set('magic_quotes_sybase', 0);
set_magic_quotes_runtime(0);
個人用ツール