2

明らかに、これは一般的な問題です。gitまたは他のSCMによって管理され、非常に類似しているはずの3つ以上の異なる環境に(理想的には)デプロイされるPHPWebアプリケーションがあります。唯一の違いは、外部リソース(データベースホスト、memcacheなど)のアドレス指定などの特定の構成にあるはずです。

これが私が見た、または使用した3つの方法です。

  1. ホスト名の配列を維持する=>環境タイプ: $hosts = array ('host1.example.com' => 'production', 'staging.example.com' => 'staging' ...)
  2. .gitignore(または他のSCMと同等のもの)にある構成ファイルと、コピーおよび編集するバージョンの例を用意します。
  3. http.confhttp.confで、次にスクリプトでenv_var: "SetEnvENVIRONMENTdev"を設定するために使用し$environment = get_env('ENVIRONMENT');ます。

他の方法もありますか?私はこれらのそれぞれに利点と落とし穴があることを知っています-それらは何ですか?

4

4 に答える 4

4

* nixの場合:

  • 環境変数を直接に設定し/etc/environmentて、システム全体に適用できます。
  • Apacheの環境変数は、/etc/apache2/envvars(Ubuntu)または/etc/sysconfig/httpd(CentOS)でのみ設定できます。

環境構成は環境固有であり、アプリケーション固有ではないため、.htaccessまたは他のアプリケーション構成ファイルを使用してこれらを設定することは意味がありません。

于 2012-11-27T19:25:24.247 に答える
1

環境設定オプションの使用は、任意の主要サーバーで実行できます。定義されていない場合、デフォルトで本番環境になります。

このようにして、サーバーのリストを維持する必要はありません。そしてそれをgitから遠ざけることができます

于 2012-11-27T19:18:08.567 に答える
1

プッシュイベントが発行されるたびに、Jenkinsを使用してgitサーバーからプルします。

その構成には、サーバーごとに異なる行があります。

mv config_<env>.php config.php

config.phpがgitにある間は無視してください。

于 2012-11-27T19:21:05.600 に答える
0

私がここ数年取り組んできたWebアプリケーションは、テンプレートなどのためにフロントにPHPレイヤーを備えたJavaAPIバックエンドを使用します。環境の違いを制御するためにMavenを使用します。

自分で設定しなかったので、すべてがどのように組み合わされているのか完全にはわかりません。ただし、さまざまな環境に分割された大きなsettings.xmlドキュメントがあります。次に、環境に応じて、構成オプションがこのファイルから取得されます。

Udanと同様に、dev / staging / liveに公開するときに、Jenkinsを使用してすべてをまとめます。

ここにPHP用に特別に設計されたMavenがあるようです:http
://www.php-maven.org/ 私はそれを使ったことがないので、それがどれほど役立つかは言えませんが、一見の価値があります。

于 2012-11-27T19:27:48.023 に答える