web-dev-qa-db-ja.com

WordPressとGitのワークフロー

私はこの質問が何千回も質問されてきたことを知っていますが、私はWordPressを使って作業するときにGitを最大限に活用する方法を考え出しています。

私はウェブを精査して何十もの記事を読んだが、それらはすべてそのトピックを簡単に網羅しているようだ。これは私が最近読んだ中で最も注目すべきもののいくつかです。

- バージョン管理WordPress

- Gitを使ってWordPressテーマの展開を管理する

- FTPの代わりにgitを使ってあなたのカスタムWordPressテーマを管理する

現在、私のワークフローはこのようになっています。

  • WordPressをローカルにインストールする
  • テーマを開発する
  • ローカルサーバーからWordPressデータベースをエクスポートする
  • WordPressデータベースをリモートサーバーにインポート
  • FTPでWordPressファイルとテーマをアップロードする
  • クライアントが変更を加える
  • FTP経由でWordPressファイルとテーマをダウンロードし、リモートサーバーからWordPressデータベースをエクスポート
  • ファイルをローカルに置き換える
  • 開発に変更を加える
  • FTPによる再アップロード、データベースのリモートサーバーへのエクスポートおよびインポート

Gitがこのプロセスを合理化できることを私は理解しています。これを行うための最善の方法は、追跡する必要がない特定のディレクトリを無視する.gitignoreファイルと、ローカルとリモートの両方のwp-config.phpファイルを用意することです。

しかし、データベースをどのように処理しますか?クライアントは通常、変更を加えます(ポスト/ページ/プラグイン)。それでもリモートデータベースからエクスポートして、ローカルサーバーにインポートする必要がありますか。

誰かが私に最適なワークフローをここに提案できますか?そして階段を歩きます。

また、GitHubとは異なり、Bitbucketをプライベートレポジトリとして無料で使用することをお勧めします。

任意の助けがいただければ幸いです。

前もって感謝します!

23
realph

私は WP Migrate DB Pro の開発者の一人で、@ Ennuiの質問に回答したいと思います。

「実行するdb url replaceスクリプトがシリアル化された文字列を考慮に入れているかどうか知っていますか?」

はい、それはシリアル化されたデータを処理します。実際、これが私が2009年に無料版のプラグインを開発した主な理由です。:)

残念ながら、私の評価は41しかないので、@ Ennuiのコメントに返信することはできませんでした。そのために残念。

6
bradt

答えではなく議論や意見を求めるようなものであるように思われるので、私はこれを「建設的ではない」と締めくくることに投票しています。しかし...

それは私のワークフローがどのように見えるかではありません、そしてそれは私のアプローチ(そして答え)を今までのところ他の答えの大部分とは異なっています。

  1. WordPressをローカルにインストールする
    1. これは最新の安定版リリースを含むローカルのベアGitリポジトリから複製されたものです。
    2. 私はほとんどいつもインストールしているいくつかのプラグインの最新版のローカルコピーも保管しています。
  2. テーマと必要なプラグインを構築する
  3. パブリックステージングサーバーにアップロードする
    1. クライアントにはアクセス権が与えられていますが、コードを変更することはできず、データベースの編集内容は本番サイトには転送されません。
    2. つまり、開発用サーバーにコードをダウンロードし直す必要はありません。
    3. ローカルデータベースを再同期する理由はありません
  4. スタッフとクライアントからのフィードバックに基づいてローカルサイトを変更します。
  5. 変更をアップロード
  6. 必要に応じて繰り返します(ただし、抵抗を増やしながら)。
  7. コンテンツを提供している場合(常にそうとは限りません)、ステージングサーバー上のデータベースをクリーンアップしてコンテンツをアップロードします。
  8. 本番サイトにローカルコードをアップロードして展開します。
  9. コンテンツを作成した場合、コンテンツはVanillaエクスポートツールを介してステージングサイトからエクスポートされ、本番サイトにインポートされます。
    1. これは私がデータベースを移動しなければならない唯一の時であり、それはかなり標準的なツールで行われます。必要に応じて Velvet Bluesの更新URL を使用してデータベースをクリーンアップします。
  10. デバッグ
  11. 終わり

基本的に、私たちがサイトを引き渡すまでクライアントをできるだけ自分のものから遠ざけます。

コードは一方向に移動します - ローカルからステージングまたはプロダクションへ。それは反対方向に動くことはありません。それはあなたのステップのいくつかを排除し、私に心の安らぎを与えます。私は自分のコードにクライアントがいじっていることに責任を負いたくないし、ハッキングされたファイルをインポートしたくもない。これはゼロではない可能性である。

そして、データベースは、仮にあったとしても一度だけ移動するため、問題が大幅に軽減されます。だから私はデータベースを移動する必要性を減らすか取り除くことによって「データベース移動」問題を管理していると思います。また、発生する可能性があるデータベース破損の問題を軽減し、ハッキングをインポートする可能性を低減します。

確かに、私は本番サイト - パーマリンク、メニューなど - を設定する必要がありますが、それは私が本番サイトで作業することを強いるので、私はそれを一種のデバッグと見なします。それは私が物事が彼らがするべきである方法で生産現場で働くことを確認するのを助けます。

4
s_ha_dum

私は最近、これに関して多くのテストを行いましたが、ここで私が使用するワークフローは、あなたが求めていることとほぼ同じです:

  • Wp-cliを使用してwordpressコアを管理し、wordpressを更新します。
  • composerを http://wpackagist.org とともに使用して、プラグインとテーマの依存関係を管理します。
  • Gitを使用し、コアwpファイルを.gitignoreに配置します。そのため、主にwp-config.phpと子テーマファイルはgitにあります。

私はdb移行ツールに精通していませんが、このワークフローへの素晴らしい追加になるでしょう。

ワークフローの詳細を以下に示します http://geekpad.ca/blog/post/maintainble-portable-wordpress-using-composer-wp-cli

2
Patrick Forget

岩盤スタック を見てください。 Wordpressとサードパーティのプラグインのバージョンを管理するためにcomposerを使用し、デプロイ用のcapistrano、開発用のローカル仮想サーバーを含むサーバーのセットアップ用のvagrant/ansibleも含まれています。

2
rjmunro

https://github.com/nathanielks/Wordpress-Capistrano-Deploy

私は(まだ)これを自分で試したことはありませんが、DBを含むすべてを展開すると主張しています。

それに伴うチュートリアルもあります:チュートリアル パート1 | パート2

2
Pat J

データベースの「クローン作成」については、WP Migrate DB Proを使用します。 http://deliciousbrains.com/wp-migrate-db-pro/ /

これは有料サービスですが、それほど費用はかかりません。データベースを開発者からライブサーバーに、またはその逆に簡単にプルまたはプッシュできます。それはURLと、途中で変更を必要とする他のすべてを変更します。

1
deadlyhifi