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

関連ページ


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]
  1. URLからディレクトリ構成へ http://yuu.nkjm.info/foo/ →/var/www/html/foo/
  2. DocumentRootでの分割 "/var/www/html/" + "foo/"
  3. RewriteRuleでの置きかえ "foo/" → "hoge/subhoge/"
  4. RwriteBaseを元に戻す "hoge/subhoge/" → "/hoge/subhoge/"
  5. 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/にアクセスがあると…
  1. URLからディレクトリ構成へ
    http://yuu.nkjm.info/hoge/ →/var/www/html/hoge/
  2. DocumentRootでの分割
    "/var/www/html/" + "hoge/"
  3. RewriteRuleでの置きかえ
    "hoge/" → "subhoge/"
  4. RwriteBaseを元に戻す
    "subhoge/" → "/hoge/subhoge/"
  5. DocumentRootを元に戻す
    "/hoge/subhoge/" → "/var/www/html/hoge/subhoge/"

参考ページ


トップ 最新 追記 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|