マルチインストールする

提供: GeeklogJpWiki

マルチインストールする

Geeklogをひとつのサーバで多数インストールする場合,本体の非公開ソースとテーマのファイルは個々にインストールせず,すべてのシステムで共有すると便利です。テーマはカスタマイズしたいファイルだけを個別に持っておくことで,最小限のファイル占有で収めることができるわけです。

目次

非公開領域を共通にする

ディレクトリ構成例は次のように,config_***.php と,インストールサイト別にconfigを設置します。 ただし,コンフィギュレーションエディタプラグイン(userconfig)で実行するuserconfig_now.phpは,ユーザ別のファイル名で実行するようにuserconfig.phpで,ディレクトリ指定部分のみハックが必要です。

非公開領域のファイル構成

config.php,userconfig関係のファイルのみ個別にconfigディレクトリを作成してアップロードします。他のすべての非公開領域のソースは,<geeklog_dir>にアップロードします。

/<geeklog_dir>/config/サイトID_1/config.php
 最後に,userconfig/config_now.phpを呼ぶ
/<geeklog_dir>/config/サイトID_1/plugins/userconfig/userconfig_prepare.php 
  インストールでconfig_now.phpにリネームされる。 
/<geeklog_dir>/config/サイトID_1/plugins/userconfig/userconfig_bak.php

/<geeklog_dir>/config/サイトID_2/ 同様
/<geeklog_dir>/config/サイトID_3/ 同様

/<geeklog_dir>/backups/
/<geeklog_dir>/data/
/<geeklog_dir>/language/
/<geeklog_dir>/logs/
/<geeklog_dir>/plugins/
/<geeklog_dir>/sql/
/<geeklog_dir>/system/

公開領域のファイル構成

公開領域のファイルは,通常通り,共有させず,個別にアップロードし,それぞれのlib-common.phpでただしいconfig.phpを指定してください。

本体のconfig.phpを修正する

本体のコンフィギュレーションファイルconfig.phpの末尾にあるuserconfigを実行する際のパスを修正します。

$_CONF['path_config']            = $_CONF['path'] . '/config/サイトID_○/';

if (file_exists($_CONF["path_config"]."plugins/userconfig/userconfig_now.php")) {
    require_once( $_CONF["path_config"]."plugins/userconfig/userconfig_now.php" );
}

コンフィギュレーションエディタ(userconfig)プラグインをハックする

userconfigは,userconfig_now.php bak.phpのアップロード先を変更しているので,インストーラ,バックアップ,リストアなどで参照するディレクトリがことなります。

そのためfunctions.incを次のように修正します。

修正ファイル:plugins/userconfig/functions.inc

修正前:

$_CONF["path"]."plugins/userconfig/userconfig_

※userconfig_prepara.php,userconfig_now.php,userconfig_bak.phpの3種類全てに共通する文字列の部分までで userconfig_ にしています。

修正後:

$_CONF['path_config']."plugins/userconfig/userconfig_

※$_CONF['path_config']は,本体のconfig.phpで指定します。

テーマを共通にする

テーマを必ずしも共通にする必要性はありません。その場合には,この項目の作業は不要です。また,7月30日版からは,オーバーライド機能でテーマを省スペース化できるようになり,さらに必要性は低くなったのですが,参考のためにこのハック方法を紹介します。

テーマは共通にすると,メンテナンスが容易で,たくさんのテーマをアップしてもサーバの容量を気にする必要がありません。 テーマを共通にするには,configファイルとlib-common.php 各テーマのheader.thtmlにそれぞれ工夫が必要となります。

以下のように設置した上で,各サイト別に,/public_html/www.○○○.com/layout/以下にテーマファイルのうち,サイト固有のファイルである,custom.css /images/custom/* のみを置きます。これは,ProfessionalCSSのカスタム方法を利用すると便利です。テーマエディタでカスタムファイルのみを各サイトのテーマエディタで編集できます。

configファイルを修正する

テーマを共有化するためにテーマファイルの位置を変更します。

$_CONF['layout_url']        = '/共通公開ディレクトリ/layout/' . $_CONF['theme'];
$_CONF['path_themes']       = '/***/http/共通公開ディレクトリ/layout/';
$_CONF['path_layout']       = $_CONF['path_themes'] . $_CONF['theme'] . '/';

userconfig_now.phpを修正する

テーマのディレクトリがかわるので,userconfig_now.phpを修正してください。

/private/config/○○○/userconfig/userconfig_now.php:

修正前:

$_CONF['layout_url']=$_CONF['site_url'].'/layout/'.$_CONF['theme'];

修正後:

$_CONF['layout_url']='/共通公開ディレクトリ/layout/' . $_CONF['theme'];

lib-common.phpを修正する

$_CONF['layout_url'] を2箇所で設定しているので,それをconfigで設定した本来のURLに設定します。

           $_CONF['layout_url']        = '/共通公開ディレクトリ/layout/' . $_CONF['theme'];

header.thtmlを修正する

テーマのファイルはすべて,共通公開ディレクトリ以下のlayoutディレクトリ内に置きます。

テーマのファイルのうち,header.thtmlのみ変更します。

共通テーマヘッダは,すべて,次のように,styleを読み込みます。 共通テーマディレクトリのcustom.cssと,ユーザが自由に変更できるユーザディレクトリ内のcustom.cssの2つを 両方呼ぶようにします。 これで,ユーザがテーマエディタですべてを削除しても,元に戻るというわけです。

<link rel="stylesheet" type="text/css" href="/共通公開ディレクトリ/layout/{theme}/style.css" title="{theme}">
<link rel="stylesheet" type="text/css" href="/共通公開ディレクトリ/layout/{theme}/custom.css" title="{theme}">
<link rel="stylesheet" type="text/css" href="{site_url}/layout/{theme}/custom.css" title="{theme}">

その他,テーマ内のjavascriptも共通ディレクトリを参照するよう変更します。

<script type="text/javascript" src="/共通公開ディレクトリ/layout/{theme}/javascript/confirm.js"></script>
<script type="text/javascript" src="/共通公開ディレクトリ/layout/{theme}/javascript/fix_html.js"></script>
個人用ツール