お客様から、アメリカでサイトを制作した制作会社が倒産してしまったので、データを復旧してほしいとのご依頼を受けました。
ExpressionEngineで制作したサイトのFTPファイルとSQLデータをいただいたので、そこから新しいサーバーに復旧・引っ越しを試みました。
その備忘録です、何かの参考にしてください。
※管理画面のパスがExpressionEngineのデフォルトではhttp://example.com/system/のようですが、今回のサイトではhttp://example.com/manage/に帰られていますので、今後の説明も/manage/で統一しています。適宜読み替えてください。
これは普通にいつもどおりアップロードすればOKです。
これも普通にPhpMyAdminやAdminerなどMySQLをいじれるところからSQL文を実行すればOKです。
/manage/expressionengine/config/database.phpにMySQLデータベースの接続設定が書いてありますので、ここを新しい情報に変更します。
今回のデータの場合は
1 2 3 4 5 |
if ($_SERVER['HTTP_HOST'] == 'development.example.com') { $active_group = 'development'; } else { $active_group = 'production'; } |
と、テストサーバーと本番環境で自動でデータベース設定を読み替える様になっていました。
テスト環境のDB設定を触る場合は
$db[‘development’][‘xxxx’]を
本番環境の設定は
$db[‘production’][‘xxxx’]をいじればOKです。
※このあたりはもとのファイルを見ていないので、カスタマイズされている可能性があります。
とりあえず、今回は以下のように設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$db['production']['hostname'] = "xxxxxx"; $db['production']['username'] = "xxxx"; $db['production']['password'] = "Pxxxx"; $db['production']['database'] = "xxxx"; $db['production']['dbdriver'] = "mysql"; $db['production']['dbprefix'] = "exp_"; $db['production']['pconnect'] = FALSE; $db['production']['swap_pre'] = "exp_"; $db['production']['db_debug'] = FALSE; # False for production $db['production']['cache_on'] = TRUE; # True for production $db['production']['autoinit'] = FALSE; $db['production']['char_set'] = "utf8"; $db['production']['dbcollat'] = "utf8_general_ci"; $db['production']['cachedir'] = "{$_SERVER['DOCUMENT_ROOT']}/manage/expressionengine/cache/db_cache/"; |
DBのホスト名やユーザー名、パス、データベース名などは適宜読み替えてください。
管理画面のURLを設定します。
/manage/expressionengine/config/config.phpを編集
$config[‘cp_url’]が旧ドメイン直打ちになっていたので、ここを修正
1 |
$config['cp_url'] = "http://" . $_SERVER['HTTP_HOST'] . "/manage/index.php"; |
本来は管理画面にログインしてCP Home > Design > Template Manager > Global Template PreferencesのBasepath to Template File Directoryを変更すれば良いはずなのですが、なぜか書き換えても変更できなかったので、直接config.phpを編集
$config[‘tmpl_file_basepath’]を以下のようにフルパスに変更します。
レンタルサーバーなので$_SERVER[‘DOCUMENT_ROOT’]が効かないので、フルパスを直で記入します。
※フルパスは環境によって違うので、適宜読み替えてください。
1 2 |
//$config['tmpl_file_basepath'] = $_SERVER['DOCUMENT_ROOT'] . $subdomain . '/manage/expressionengine/templates/'; # Path to your templates as files directory $config['tmpl_file_basepath'] = '/export/sd202/www/jp/r/e/gmoserver/2/1/sd0xxxxxx/xxx.example.com/manage/expressionengine/templates/'; |
同様にcaptchaのパスもこのままでは動かなかったので、フルパスを直打ちしました。
1 2 |
//$config['captcha_path'] = $_SERVER['DOCUMENT_ROOT'] . $subdomain . '/images/captchas/'; # Path to your captchas directory $config['captcha_path'] = '/export/sd202/www/jp/r/e/gmoserver/2/1/sd0xxxxxx/xxx.example.com/images/captchas/'; |
下層ページを見ようとすると、500 Internal Server Errorが起こったので、.htaccessを以下に変更。
この辺はあまり詳しくないのですが、ググって出てきた設定をほぼそのまま。
1 2 3 4 5 6 7 8 |
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [QSA,L] </IfModule> |
最後の行のindex.phpの後に?がないとcode igniterのエラーでNo input file specified errorが出るそうなので、?を追加。
参考:http://office-ikason.com/devblog/archives/264
カスタムフィールドで登録している画像のパスが旧サーバーを参照していたので、これも変更します。
MySQLデータベースを開いてexp_upload_prefsのProduct Imagesのパスを変更します。
server_pathは画像のアップロードフォルダへのフルパスに、urlはhttp側のURLパスを。
server_path: /export/sd202/www/jp/r/e/gmoserver/2/1/sd0xxxxxx/xxx.example.com/images/uploads/product_img/
url: http://xxx.example.com/images/uploads/product_img/
これで、一通り設定が完了し、新しいサーバでExpressionEngineが動くようになりました。
もしかしたら設定漏れがあるかもしれませんが、とりあえずこんな感じで。