yuu_nkjm blog
2010-05-25(Tue) [長年日記] 編集
[joomla][.htaccess][Webアプリ] Joomlaで作ったサイトの移行(複製)
Joomlaで作ったサイトの移行というか複製について述べる.そのうち清書する.
やりたいこと
"http://hoge.info/"では,現在公開されているWebコンテンツをそのまま表示しておきたい."http://hoge.info/new/"において,ガシガシとWebコンテンツを更新したい.いずれ,newの方をメインに切り替えていく.
…という事がやりたい.今回は,"http://hoge.info/"の複製を"http://hoge.info/new/"に作るところまで.
- DBに関しては以下のように設定したい.
- /var/www/html/joomla_1_0 → dbs.hoge.infoの"DB_NAME"というDBの'jos_*'というテーブルにデータを格納
- /var/www/html/joomla_1_0_new → dbs.hoge.infoの"DB_NAME"というDBの'jos_new_*'というテーブルにデータを格納
- URLは以下のように設定したい
- http://hoge.info/ → /var/www/html/joomla_1_0
- http://hoge.info/new/ → /var/www/html/joomla_1_0_new
MySQLのデータの移行
phpMyAdminでエクスポート
phpMyAdminで元のデータをエクスポートする.エクスポートしたsqlファイルはただのテキストファイルなので,テーブル名が'jos_*'となっているところを'jos_new_'に変更する.
phpMyAdminでインポート
ブラウザ上からインポートする.
configuration.phpの記述
設置パスとURLの指定
新しいパスを指定する.
$mosConfig_absolute_path = '/var/www/html/joomla_1_0_new';
$mosConfig_cachepath = '/var/www/html/joomla_1_0_new/cache';
$mosConfig_live_site = 'http://hoge.info/new';
DBの指定
テーブルが変わるだけなので,テーブルのprefixを変更する.元のデータを残したいので'jos_new_'にする.
$mosConfig_host = 'dbs.hoge.info';
$mosConfig_db = 'DB_NAME';
$mosConfig_dbprefix = 'jos_new_';
$mosConfig_password = 'DB_PASSWD';
.htaccessの指定
.htaccessを以下のように設定する.Ruleを書く順番に依存してしまうことに注意.
RewriteEngine On
RewriteBase /
RewriteRule ^new/$ joomla_1_0_new/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^new/(.+)$ joomla_1_0_new/$1 [L]
RewriteRule ^$ joomla_1_0/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ joomla_1_0/$1 [L]
2010-05-20(Thu) [長年日記] 編集
[Windows 7 (64bit)][command][backup][DF] robocopyを使って日付フォルダにコピー
"E:\script\folder\copy2Buffer.bat"として以下のようなバッチファイルを作成する.指定したディレクトリを排除する/XDと指定したファイルを排除する/XFオプションがあることに注意.
set time2=%time: =0%
cd %1
robocopy %2 E:\Desktop\Buffer\%date:~-10,4%-%date:~-5,2%-%date:~-2,2%_%time2:~0,2%_%time2:~3,2%_%time2:~6,2%-%2 /XD ".svn" /ZB /E
#コピーできたかどうかを確認したかったらポーズを入れても良いかも.
pause
- /XD
- 指定された名前/パスに一致するディレクトリを除外します。
- /ZB
- 再起動可能モードを使用します。アクセスが拒否された場合バックアップ モードを使用します。
- /E
- 空のディレクトリを含むサブディレクトリをコピーします。
以下のように使う.
E:\etc\script\bat\copy2Buffer.bat "バックアップ対象ディレクトリがあるディレクトリ" "バックアップ対象ディレクトリ"
愛用しているファイラDFに以下のように登録.
copy2buffer=E:\etc\script\bat\copy2Buffer.bat "$P" "$C" $R
関連ページ
-
日付の生成の仕方
バッチ・ファイル中で日付をファイル名に使用する - @IT -
robocopyのオプション
Robocopyでフォルダをコピー| Sunvisor Lab.
2010-05-17(Mon) [長年日記] 編集
[Apache][.htaccess] DocumentRootを指し示すURLにアクセスがあったときに,mod_rewriteを使ってDocumentRootに含まれる別ディレクトリのコンテンツを表示させたい
DocumentRoot(ドキュメントルート)を指し示すURLにアクセスがあったときに,mod_rewriteを使ってDocumentRootに含まれる別ディレクトリの下のコンテンツを表示させたいと思った.
URLと違うディレクトリにアクセスさせる(http://yuu.nkjm.info/hoge/へのアクセスをhttp://yuu.nkjm.info/diary/にするとかね)ことは,DocumentRootそのものじゃないときは,Aliasやシンボリックを使ってなんとかしてきた.「だけど,DocumentRootそのものへのアクセスをDocumentRootに含まれる別ディレクトリに変えたいときはどうすりゃいいんだろ?適当にやると再帰しちゃわね?」と思い色々やってみた.
ちなみになんでこんな事がしたいのかというと,http://yuu.nkjm.info/でtdiaryにアクセスさせたいんだけど,tdiaryを/var/www/htmlにインストールすると,/var/www/htmlがごちゃごちゃしちゃって嫌だ.なので,/var/www/html/tdiary/にtdiaryをインストールするんだけど,http://yuu.nkjm.info/でアクセスさせたいと言うこと.
/var/www/html (httpd.confでyuu.nkjm.infoのDocumentRootに設定されていると仮定) | |--- diary |--- hoge |--- subhoge |--- fuga
上の様なディレクトリ構成で,/var/www/htmlがhttp://yuu.nkjm.info/のドキュメントルートだったとき,/var/www/htmlに以下の.htaccessを置くと,http://yuu.nkjm.info/へのアクセスがhttp://yuu.nkjm.info/diary/へのアクセスに置き換わる.またこの時,ブラウザのURL欄は変わることはない(i.e. http://yuu.nkjm.info/と表示される).
RewriteEngine on
RewriteBase /
RewriteRule ^$ diary/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# !-f は存在するファイル名にはルールを適用しない
# !-d は存在するディレクトリ名にはルールを適用しない
RewriteRule ^(.+)$ diary/$1 [L]
このとき注意しなきゃいけないのは,転送先のdiaryにCMSのようなプログラムが置かれていてそいつに設置URLのようなパラメータがあるとき,異なるURLからアクセスするとそれに関する警告がでたり,自動生成で作られるサイト内URLが転送先のものになったりする.
DocumentRootじゃないときの例
単にAliasやシンボリックリンクでどうとでもなりそうな気がするけど,メモ.
例1) .htaccessをDocumentRoot(/var/www/html)に置く
http://yuu.nkjm.info/foo/にアクセスがあったとき,/var/www/html/hoge/subhogeのデータを表示させる.
RewriteEngine on
RewriteBase /
RewriteRule ^foo/$ hoge/subhoge/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^foo/(.+)$ hoge/subhoge/$1 [L]
- URLからディレクトリ構成へ http://yuu.nkjm.info/foo/ →/var/www/html/foo/
- DocumentRootでの分割 "/var/www/html/" + "foo/"
- RewriteRuleでの置きかえ "foo/" → "hoge/subhoge/"
- RwriteBaseを元に戻す "hoge/subhoge/" → "/hoge/subhoge/"
- DocumentRootを元に戻す "/hoge/subhoge/" → "/var/www/html/hoge/subhoge/"
例2) .htaccessをDocumentRootのサブディレクトリ(/var/www/html/hoge)に置く
http://yuu.nkjm.info/hoge/にアクセスがあったとき,/var/www/html/hoge/subhogeのデータを表示させる.
RewriteEngine on
RewriteBase hoge/
RewriteRule ^$ subhoge/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ subhoge/$1 [L]
http://yuu.nkjm.info/hoge/にアクセスがあると…
-
URLからディレクトリ構成へ
http://yuu.nkjm.info/hoge/ →/var/www/html/hoge/ -
DocumentRootでの分割
"/var/www/html/" + "hoge/" -
RewriteRuleでの置きかえ
"hoge/" → "subhoge/" -
RwriteBaseを元に戻す
"subhoge/" → "/hoge/subhoge/" -
DocumentRootを元に戻す
"/hoge/subhoge/" → "/var/www/html/hoge/subhoge/"
参考ページ
-
技術/Apache/mod_rewrieメモ(1):RewriteBaseの誤解 - Glamenv-Septzen.net
「自信ない…」とのことだが「mod_rewriteの内部処理のイメージ」を参考にさせていただいた.これが正しいかは分からないが,上記のテストをする範囲では納得のいく説明だった. -
mod_rewritの基本を再確認 - noopな日々
より複雑な設定が必要な時に参考になりそうだった. - Gyazo - e05b54baa654af685ab711adb2ed1a84
- Gyazo - a6836229ea1b406451ed6805ca75443b
- Gyazo - 011e70a2f063c3b783302a6757846916
- (cache) サーバー構築の覚書 » DocumentRootを指し示すURLにアクセスがあったときに,mod_rewriteを使ってDocumentRootに含まれる別ディレクトリのコンテンツを表示させたい