WordPressサイトの開発、ステージ、本番の展開?


41

だから、WordPress Webサイトの開発/ステージ/プロダクションのイテレーションを(別々のサーバー上で)できるようにする必要があります、私は通常gitを使用しますが、メインのデータベースに依存しているため、これは明らかにWordPressサイトで動作しません構成...まあ、ほとんどすべて。

だから私の質問は、皆さんどうやってやるのですか?私は簡単なグーグルを持っていて、いくつかのプラグインがあることがわかりました、これが唯一の方法ですか?使いやすさ、速度、信頼性、UIなどの点で、最も優れているのはどれですか?


pantheon.ioには、単一ドメインの開発、テスト、およびライブがあります。ファイルにgitを使用し、ワンクリックでそれらの間でデータベースを転送します。それは試してみると、あなたは「ライブ」に行くときにのみ支払うことに無料です- youtube.com/watch?v=KpGTDeqwgX4
jgraup

回答:


27

私はかなり誇りに思っているセットアップを持っています、そしてそれは私のチームにとって非常にうまく機能します。

一般的な構造

インストール全体をgitで管理します。システムの更新、プラグインの追加/更新、テーマの追加/更新など、すべての変更は同じワークフローを通ります。変更はすぐにロールバックできます。gitosisを実行しているデプロイメントサーバー(古いP4デスクトップ)がありますが、githubまたはgitoliteを簡単に使用できます。gitでは、2つの「特別な」ブランチがmasterありますdevelop(以下で詳しく説明します)。実稼働サーバーとステージングサーバーはクラウドベースです。

開発環境

すべての開発者は、独自のマシンで独自の開発サーバーを実行します。データベースに関しては、ライブデータが必要になることはほとんど問題になりません。主にテーマの単体テストデータを使用します。それ以外の場合、エクスポートとインポートはほとんどのことをカバーします。DBピースが重要な場合は、レプリケーションをセットアップするか、オンデマンド同期のために何かをセットアップできます。最初にこの構造をセットアップしたとき、これが重要だと思ったので、これを行うためのツールのセットを書き始めましたが、驚いたことに、それらは本当に必要ではありませんでした。(注:それらは必要ではなかったので、それらを洗練したことはなかったので、シリアル化されたデータのドメインを置き換えるバグなどがあります)。

ステージング環境

コミットがdevelopブランチからgitosisにプッシュされると、ステージングサーバーに自動的にデプロイされます。ステージングデータベースは、運用データベースのスレーブです。

本番環境

コミットがmasterブランチのgitosisにプッシュされると、それは自動的に運用サーバーにデプロイされます。

wp-config.phpの問題

wp-config.phpサーバーごとに一意である必要がありますが、バージョン管理下に置いておく必要もあります。私の解決策は、を使用.gitignoreしてwp-config.php、ステージングバージョンとプロダクションバージョンを別の名前のファイルとして保存することでした。次に、各サーバーで、たとえばをシンボリックリンクしますwp-config.php -> wp-config-production.php。各ユーザーは、独自の(追跡されていない)wp-config.php設定を使用して、独自の資格情報で独自のDBを保持します。

その他の注意事項

私は驚異的で安価なRackspace Cloudを使用しています。これにより、ステージングサーバーと運用サーバーを同一に保つことができます。また、現在、WordPress内からサービスを制御できるようにするためにAPIを使用するプラグインを作成していますが、それは素晴らしいことです。

キャッシュディレクトリ、ファイルアップロードディレクトリなどはすべて.gitignoreに追加されます。必要に応じて、cronタスクを設定して、アップロードを定期的にチェックインし、gitosisにプッシュすることもできますが、それは私には必要ではないようです。

マスター/開発構造は、Vincent Driessenの分岐モデルを部分的に模倣するように設定されています。また、彼のgit拡張git-flowを使用しますが、これも強くお勧めします。

私は1年以上にわたって10人ほどの開発者がこの構造を使用してきましたが、一緒に仕事をすることは夢でした。信頼性が高く、安全で、高速で、機能的で俊敏なため、これ以上要求することはできません!


同様の方法でWPインストールをセットアップしようとしています(ただし、svnを使用しています)。プラグインとWPを更新するプロセスを確認したいです:更新を完了してdevをチェックし、変更をコミットし、ステージングにデプロイし、チェックし、ライブに参加してください。要約すると、実際にリポジトリの更新を介して変更をもたらすライブサーバーでWPインストールの更新を行うことはありませんか?
ポールポンド

1
更新ルーチンによって行われたDBの変更についてはどうですか。これらは本番DBにどのように影響しますか?
paullb

このワークフローは正しい@paullbであり、DBの更新を心配する必要はありません。WordPressの動作方法は、変更が検出された後に更新がトリガーされるため、(コアまたはプラグインへの)手動更新とまったく同じ方法で動作します!
マシューボイン

@MatthewBoynes、こんにちは。あなたはまだあなたの開発にこのワークフローを使用していますか?もしそうなら、このワークフローをプロジェクトに適用します。ありがとう:)
khakiout 14

私はそうしていませんが、それは現在取り組んでいるプロジェクトに当てはまらないからです。これは主にWordPress.com VIPでホストされています。該当する場合は、引き続き使用します(実際、以前勤務していた会社は引き続き使用します)。
マシューボイン14

4

まず、バージョン管理にをしようとしているのかを考えることが重要だと思います。VCの下にWPディレクトリ全体置くことをお勧めます。VCの下にwp-content / themes / YourThemeNameを置くのが最も理にかなっていると思います。多数の複雑なプラグインを含む大規模なサイトの場合、wp-content / pluginsを含めることもできます。どうしても必要な場合は、wp-content / uploadsを含めることができます。バージョン管理の対象によって、以下の回答は少し変わります。

それを考えると、ここに私が使用するものがあります:

ローカル:マシンにLAMPスタックをセットアップします。開発サイトと同じURLを使用します。VirtualHostsおよび.hostファイルエントリを使用して、URLの観点から開発環境をシミュレートします。テーマをVCにしただけの場合は、SSHFSを使用してwp-content / plugins、wp-content / uploadsにリンクすることを検討してください。本当に面倒な作業をしない限り、プロジェクトの開発インストールでデータベースを使用することを検討してください。

開発:WP環境にRepoの作業コピーをチェックアウトします。SVNでPOST-COMMITフックを設定して、コミットごとにこのリポジトリを更新します。これにより、同期が維持されます。(貧乏人の継続的統合と考えてください。)

本番:最終候補を表す名前付きバージョンタグをチェックアウトします。新しいバージョンを使用する必要がある場合は、タグを切り替えてリポジトリを更新します。


開発環境は、ナイトリービルドのテストに非常に適しています。また、git wordpressは30分ごとに自動的に更新されます。 svnを使用します。
ウィック

1
WPディレクトリ全体をバージョン管理下に置かない理由については興味があります。それはワークフローのボトルネックのようです。WPをリポジトリに配置すると、すべての開発者に同じコードベースとWPバージョンが提供されます。また、環境全体で一貫性を保つことができます。条件付きwp-configファイルへのWyckのリンク(彼の回答)を参照してください。
ブライアンフェッター

2

私たちは最近RAMPを発見しました。注:これはプロセス全体の一部にすぎませんが、サーバー間でコンテンツデータベースを同期することはおそらく最も難しい部分です。


2

gitとmercurialを使用してこれを行います。プライベートリポジトリを使用していることを確認してください。

オプション1。

唯一の問題はconfig.phpです。これは、gitにプッシュ時または初期化前に無視するように指示できます。

.gitignoreまたはgit update-index --assume-unchanged config.php(使用する前に想定変更されていないコマンドについて少し読んでください)

オプション2。

config.phpで条件を使用して、URLを確認し、「サーバーurl = devの場合は認証情報Aを使用し、そうでない場合は認証情報Bを使用する」などの行に沿って正しい認証情報を適用します。

マークはこれをよりよく説明しています、http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/

追伸 また、従来の「ファイルサーバー」を使用する代わりに、リモートリポジトリからファイルを直接サーバーすることもできます。(このhttp://www.youtube.com/watch?v=8ZEiFi4thDIについて作成した非常に退屈なビデオ)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.