web-dev-qa-db-ja.com

DevからProdに移行するための最も完璧な方法

可能な重複:
WordPressのインストールを開発から本番に簡単に移行できますか?

だから私はしばらくの間WordPressで作業してきました、そして私は通常ローカルで開発してから私のProdサーバーにすべてをアップロードします...しかし、特にプラグインを使用するとき、私は多くの異なる結果を経験しました。

私はたいていデータベースをエクスポートしますが、ドメインの場所のようなものは常にWP admin内でそれらを変更した後でさえも変更されるようには見えません。

DevからProdに移行し、すべてを損なわないための最善の方法は何ですか?

それでは、同じドメインのサブディレクトリから自分のサイトを移動するための最良の方法は何ですか?

WPドキュメントの方向に私を向けないでください...それが私が最初に見た場所です。

4
dcolumbus

devとprodの間に違いはありません。これが私がしていることです:

  • 開発サーバー用に異なるIPを使用する(内部、外部、またはローカルコンピューター上では重要ではありません) - ただし、開発サーバーはまったく同じ設定にする必要があります(下段を参照)
  • devファイルを指すようにhostsファイル (ここを参照)(テスト用のコンピュータまたは仮想マシン上)を変更します。
  • 結果:開発サーバーに送信されたHTTPリクエストは、 ホストヘッダーフィールド が "example.com"に設定され、prodサーバーの場合とまったく同じになります.

このメソッドは、そうでなければよくある2つの違いを取り除きます。

  1. ドメイン名を変更する必要があります
  2. サブディレクトリにdevコードがありますが、rootまたはdiffサブディレクトリにprodコードがあります。これは、devとprodの間でファイルを転送するためにgitを使用しているからです。

Devサーバーはprodサーバーとまったく同じようにセットアップされています(サーバーをプログラム的に管理する方法については Chef または Puppet を参照してください)。

1
Alexander Bird

私の経験では、 検索と置換プラグイン を使用して、古いドメインへの参照をすべて再参照しています。最もきれいな解決策ではありませんが、うまくいくようです。

1
GavinR

私は定期的に同じdev-prodの種類の配備をしているので、私はそれのためにいくつかの標準的な問い合わせを開発しました:

  1. サイトのURLを更新します。

    UPDATE wp_options SET option_value = replace(option_value、 '[DEV_URL]'、 '[PROD_URL]')WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'fileupload_url';

  2. アップロードパスを更新します。

    UPDATE wp_options SET option_value = '[SITE_ROOT_PATH]/wp-content/uploads' WHERE option_name = 'upload_path';

  3. 投稿ガイドを更新します。

    UPDATE wp_posts SET guid = replace(guid、 '[DEV_URL]'、 '[PROD_URL]');

  4. 投稿のURLを更新します。

    UPDATE wp_posts SET post_content = replace(post_content、 '[DEV_URL]'、 '[PROD_URL]');

かっこで囲まれた変数を実際の値に置き換えます。

[DEV_URL] - > http://example-local-pc.com [PROD_URL] - > http: //example-online-server.com [SITE_ROOT_PATH] - > /home/client/domains/example-online-server.com/html

これは通常、開発環境への参照を処理します。ただし、注意が必要です。

i)多くのプラグインはwp_optionsかカスタムテーブルのどちらかに絶対URLを保存します。これらはケースバイケースで調査しなければなりません。

ii)更新置換クエリ(上記の1.や2.など)を実行すると、シリアル化されたフィールドのデータがほぼ確実に破損します。関連するプラグインに自分自身で更新を行わせる以外に、この置き換えを行うためのまだクリーンで高速な手法には遭遇していません。これが成功するかどうかは、プラグインの堅牢性によって異なります。

1
KalenGi

クライアントにテストサイトへのアクセスを許可するために、サブディレクトリで開発するのが好きです。公開する準備ができたら、プラグイン(以下の推奨)を使用して全体を別のサブディレクトリに複製してから、新しいものからロードするようにWordPressに指示します。開発領域をテスト用にアクティブにしておく。

デュプリケータ (無料)または backupbuddy (有料)のようなプラグインを使用してください。私の質問 がここ で助けになるかどうかも確認してください。

0
Drai

私はこの検索置換ツールを使用します。

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

それはワードプレスと同様に他のソフトウェアのために働きます。

デプロイについては、サーバー上に環境を設定し、ドメインマッピング/仮想ホストを介して切り替えてライブにすることができます。インストールDevは常に別のサーバー上にあり、ライブになることはありません。

0
Tom J Nowell

WordPressがデータベースにコンテンツを保存する方法による完璧な方法はありません。

コードをプッシュするためには、git/Mercurial/svnを使用するのと同じくらい完璧な場合もあれば、単にファイルを上書きする場合もあります。

しかし、データベースに格納されているコンテンツ(プラグイン、投稿、カテゴリなど)には当てはまりません。2つのデータベースを同期する良い方法はありません。 How to:WordPressのインストールを開発から本番に簡単に移行するには?

0
Wyck