tsukalogo0000

alt

Joomla!CMSの緊急救出法

CMSのトラブルは忘れた頃に…ましてや大掛かりなサイトだと完全再現の難易度は高い。とにかくアクシデントにあせりまくると二度と再生出来なくなるので、ここに緊急時の最低限の手順を記載する。…本当のところ緊急時にはこのサイト自体消えて備忘録にならない…(サクラサーバーにてhttp://tsukapiko.sakura.ne.jp/でセカンドサイトを設置)

 

前提条件と注意点

まず既存のデータを確保。

 

◎JoomlaPackでのバックアップ
このエクステンションはファイルとデータベースを一括で吐き出してくれる。バックエンドからの操作に限定されるが定期的かつ気軽にバックアップできることが特徴。尚、圧縮zip方式とJPA形式からリストアファイルを吐き出す措置が行える。zipの処理は壊れやすいデメリットがありながら(確かにDBは不完全)ファイルが実体化して解りやすく手間だけど確実に復元できるイメージがある。JPAは現在のサイトをインストールパッケージにするイメージでまだ試していないがサイトの引っ越しにも活用できるっぽい。いづれにしても形式はともかく健全な時に忠実にバックアップさえキープ出来れば、ぶっ壊れた時になんとかなるもんだ。

joomlaの道しるべJoomlaPack - サイトを丸ごとバックアップ
http://www.joomlaway.net/extension-new/70-access-a-security/backup/923-joomlapack.html

 


◎手作業でも確実にバックアップする

サイトがジャックされ破壊されたりその煽りを受けてサーバー会社に遮断されたりするとバックエンドが機能しなくなるので手作業でサーバー管理画面かftpからファイルとサーバー内DBを回収するしか手立てはなくなる。本来確実にバックアップ取るなら圧縮せずデータが壊れる心配もないこの方法が手堅い。

 

◎データベース設定の管理
目で確認し辛いデーターベースは復元するまでは、出来るだけ元のサーバー上で温存しておきたい。joomlaは既存のデータベースに対して新規インストールすると容量は据え置きでまっさらに上書きしてしまう。よって元のデータベース名を避けるか、ローカルもしくはサブのサーバーでサイトの復元が完了した後に新規インストールするのが望ましい。又、データベース容量が多い場合は作成するクリエの最大長のデフォルト50000300にしてエクスポートしないとデータが不完全になる。

 


 

回収データの精査

◎データに不足や不備、及び外部侵入者による改ざんファイル痕跡等のチェック。


htaccess.txt 分散設定ファイル ファイル名を「.htaccess」に変更して使用可能にします。Apacheのmod_rewriteや、PHPの設定に関する記述があります。PHP をCGIで実行している場合、PHPに関する記述をコメントアウトし、httpd.confに直接記述する等の対応が必要となる場合があります。
configure.php ※3 Joomla!設定ファイル 主に、データベースやサイトの設定について記述されています。非常に大切なファイルですので、ファイル所有者・権限の取り扱いには注意しましょう。Joomla!の管理画面でサイトの設定変更を行う際に書き込みされます。
index.php インデックス トップページを表示したり、インストール作業が実行されていない場合は、インストーラを起動します。
joomla.xml 構成ファイル Joomla!の構成に関する事が記述されています。通常、使用しません。
LICENSE.txt ライセンステキスト Joomla!を使用するに当たってのライセンスについて記述されています。インストール作業中にも表示されます。
README.txt 概要テキスト Joomla!についての概要が記述されています。システム運用上に必要なファイルではありません。
robots.txt 検索ロボット用テキスト 検索エンジンロボット用のテキストです。特定のディレクトリを検索しないように設定されています。
administrator 管理者ディレクトリ 管理者向けのコントロールパネル用ディレクトリです。(Vol.2b Joomla!1.6 ディレクトリ構造 - 管理画面)
cache ※1 キャッシュディレクトリ Joomla!がキャッシュ処理に使用するディレクトリです。キャッシュの使用可否は管理画面で設定します。
components ※2 コンポーネントディレクトリ フロントエンド(公開サイト)用にインストールされているコンポーネントが格納されています。
mages 画像ディレクトリ Joomla!が使用する画像が格納されています。主に、テンプレート用の画像やアイコンです。
includes コアファイルディレクトリ Joomla!が使用するコアファイルが格納されています。
installation インストールディレクトリ Joomla!をインストールする為のインストーラが格納されています。インストール完了後は、このディレクトリを削除する必要があります。移動させる場合は、ドキュメントルートの外部で無ければいけません。
media メディアディレクトリ 主にエディタやインストールされているコンポーネント関連が使用する画像やJavaスクリプトが格納されています。主に画像を管理しているが、ハッキングの際プログラムをアップロードされる間口にもなる。
modules ※2 モジュールディレクトリ フロントエンド(公開サイト)用にインストールされているモジュールが格納されています。
plugins ※2 プラグインディレクトリ インストールされているプラグインが格納されています。http://tsukapiko.minibird.jp/illustration.html プレビューとバックエンドの操作画面の不具合は新規インストールで回避できてたので、ずっとデータベースの問題だと思っていた。全体のjQueryのプロ グラムとCSSはここでもを管理してるっぽい。
templates ※2 テンプレートディレクトリ フロントエンド(公開サイト)用にインストールされているテンプレートが格納されています。全体のデザインスタイルとその要素を格納している。
tmp ※1 一時ディレクトリ Joomla!が処理に使用する一時作業用(テンポラリ)ディレクトリです。

※1: このディレクトリはPHPを実行しているシステムユーザーが書き込み可能でなければいけない
※2: エクステンションに関連したディレクトリ
※3: インストール後に自動生成、または手動で作成するファイル。ソースパッケージ解凍時には存在しない
※各ディレクトリの「index.html」ファイルはディレクトリ内のファイル一覧が生成されるのを防止する為のファイルである為省いる。

◎joomlapack(zipデータ)で記事部分の抽出
モジュールやテンプレート等は解凍した時点でそのまま確認できるが、作成した貴重な記事は何処に存在するのか?実は、解凍した圧縮データは例えば、
site-tsukapiko.minibird.jp-●●●●-●●●●>installation>sql>joomla.sql にあるデータベースをドリームウエーバーや文字化けしないエディターで開くとファイル内奥底にタグとして存在する。(下の図参照)なんらかの事情で最新のデータベースが救出出来ない事は多く、この方法は重宝する。
※ただしデータベースとして処理されてるので余分なスラッシュやゴミタグが混じってるので地道に除去。(書き出し時に操作可)


書き出した、dbが化ける場合はdreamweaver側から開く→ファイルを指定して→unicode 5.1 UTF-8 で開く。それでとりあえず、文字化けは回避出来る。もちろんphpから書き出す際は、UTF-8で書き出しておかないとダメですが…。(下図)


◎ファイルが荒らされたケース
不覚にもセキュリティホールから侵入された場合は…
configuration.php、htaccess.txt(頭にドット付けると隠しファイル化)等のファイルは作成時間に注意し、templatesファイルのhtml内にも仕掛けはされていないか?をチェックする。画像アップロードからもデータを仕掛けられる場合があるので、メディアやフォルダ内にも画像以外のファイルがないかチェックしておく。構築後はadminstraterやmediaは使わない時は念には念のため頻繁のパスワード変更以外にパーミッション=権限を705504に変更してた方が無難。



 

サイトの復元作業と注意点

ローカルやセカンドサーバーでサイトを復元して正常性の確認


●ローカル(Mac)のXAMPPにて再構築作業
XAMPPを起動してControlsのApacheとMySQLをスタートさせる。
但し、システム環境設定>共有>Web共有を切らないとスタートできない。その後は、ブラウザにて、データベースのアドレス localhost/xampp/ を叩くとレンタルサーバーでの設定と同様の操作が可能になる。
復元サイトは XAMPP>xamppfiles>htdocs>内にインストール及び、回収フォルダを展開してあげると localhost/joomlaサイト名/ でローカル上にて確認出来る。コンフィグphpの設定(画像)


●BigDumpの使い方
通常大容量のデータベースはインポートが出来ない。それを一括で可能にするのがこれ。まずbigdumpフォルダを作りそこにbigdump.phpとインポートする救出された移動したいデータベースを入れる。
それをjoomlaサイトと同じ第一階層にいれて http://サイトのアドレス/bigdump/bigdump.php を開くとStart Import が押せる状態になる。
赤文字でエラーが出る場合は
•bigdump.phpファイルのデータベース名とホスト、ユーザー名が間違っている。
•入れたいデータベースを事前に作っておくもしくは、空にしておく。
•データベース名は入れたいデータベース名と同じにする。
•データベースを新規作成の場合joomlaはutf8を選択。

joomlaバックアップ&再構築
http://tsukapiko.minibird.jp/webdesign/joomlacms/211-joomlabackup.html




サイトの引っ越し作業

 

《1》 ローカルPC内XAMPPサーバー設定の場合

①XAMPP Controlを立ち上げる。Controlsが立ち上がるのでApache、
MySQLのシグナルをstartを押し青色にする。
(システム環境設定>共有>Web共有を切らないとスタートできない)
http://localhost/xampp/をブラウザで叩きXAMPPに入る。>
左メニューのツール、phpMyAdminをクリック>
http://localhost/phpmyadmin/で入る
データベースの操作画面。ここでエクスポートやインポート及び削除が出来る。
基本的にはローカルのここでサイトを復元して正常性の確認を行う。
以下の様にconfiguration.php内をそれぞの環境に合わせて書き換える

●localhost/xampp/
$db_server   = 'localhost';
$db_name     = 'tsukapiko_db3=任意のデータベース名';
$db_username = 'root';
$db_password = '●●●●●●●●●●●●'; 
$db_connection_charset = 'utf8';(追加)
それぞれの設定内容は次のとおり
  • $db_server:データベースサーバはlocalhostになる
  • $db_name:データベース名=移動するデーベース名
  • $db_username:データベースユーザ名はroot
  • $db_password:データベースパスワード=ここは必要なし

《2》 さくらサーバーDBは16MB以下しかインポート出来ない

www.sakura.ne.jp>上部会員メニューログイン>上部の契約情報クリック>
その下の契約サービスの確認>さくらレンタルサーバースタンダードの手続き内>
②サーバー設定>左メニューのデータベースの設定>
データベース一覧の管理ツールログインをクリック>パスワードを要求される>
データベースの操作画面。ここでエクスポートやインポート及び削除が出来る。
●メインのDBはtsukapiko_db3を使用。現在のバージョンPHP 5.4.11 (CGI版)
ここのサーバーはwww配下がサイトとなるが、joomla新規インストールでwww以外にも自動的にデータが入る為、二度目の再インストールの場合はwww外のtenplateを削除し必要ない物は日付で見て判別しクリーンインストール。さくらサーバーは電話でやり取りが可能でサーバー内を初期化する場合
https://secure.sakura.ad.jp/menu/top/ 上のサポート>メールでのお問い合わせから行える。

$db_server   = 'mysql******.db.sakura.ne.jp';
$db_name = 'tsukapiko_db3=任意のデータベース名';
$db_username = 'tsukapiko';
$db_password = '●●●●●●●●●●●●';
$db_connection_charset = 'utf8';(追加)
それぞれの設定内容は次のとおり
  • $db_server:さくらのデータベースサーバ
  • $db_name:データベース名
  • $db_username:さくらで作成したデータベースユーザ名
  • $db_password:さくらで作成したデータベースパスワード

《3》 ミニバードの設定

http://www.minibird.jp/>右のログイン>
メンバー管理ツールページでサーバー管理ツールをクリック>
②左メニューのデータベース設定>
オレンジのバナーphpmyadminをクリック>パスワードを入力>
データベースの操作画面。ここでエクスポートやインポート及び削除が出来る。
●メインのDBはtsukapiko_dbを使用。現在のバージョンPHP5.3.3
他サイトのファイルをコピーするとその後の新規インストールでやプレビューが出来なくなる事が多い。これは、プログラムやパーミッション等の設定不備。特に 「administrator」フォルダにおいて、【パーミッションがおかしい】ためにアクセス不可になる為、該当フォルダのパーミッションを755ない し705へご変更しエラーが解消されるか確認する。

$db_server   = 'mysqll******.minibird.netowl.jp';
$db_name = 'tsukapiko_db3=任意のデータベース名';
$db_username = 'tsukapiko_user';
$db_password = '●●●●●●●●●●●●';
$db_connection_charset = 'utf8';(追加)
それぞれの設定内容は次のとおり
  • $db_server:ミニバードのデータベースサーバ
  • $db_name:データベース名
  • $db_username:ミニバードで作成したデータベースユーザ名
  • $db_password:ミニバードで作成したデータベースパスワード

引っ越した際、問題になるのがリンクの問題。templatesに入れているjquery-1.4.2.min.jsやそれに付随するjquery専用のcssなどがphpで紐付けされてない所が機能していない(笑)初期にどっか不動のサーバーでクラウドさせてセッティングさせておけば良かった~現在は網目状に絡まってるから整理するのがめんどくさい。
ニュースモジュールとかでリンク張っている場合、新たにCMS内でリンクを作るので過去サイトのファイルを捨てないと更新せず画像もリンク切れをおこす。あとGoogle アナリティクスのトラッキングコードもモジュールに反映させたり…概出だがエディターをNoEditionにして記事中スクリプトが消えない様にしておく。

小粋空間phpMyAdminでインポートできない大きなファイルを一気にインポートできる
http://www.rdsystems.asia/blog-web/141-joomla-backup

phpMyAdminからうまくSQLファイルをインポートできなかったのでBigDumpを試してみた
http://www.atmarkit.co.jp/ait/articles/1304/08/news009.html

 

 

コメントを追加

お名前:
メールアドレス:
Webサイト:
件名:
コメント: