1

ローカル、開発、本番の複数の環境でGitを使用してExpressionEngineサイトをセットアップしています。

Webルートの上にいくつかのディレクトリがあるので、Webルートディレクトリ自体は次のようにgitリポジトリ内にあります。

  • 。ギット
  • システム
  • 第三者
  • テンプレート
  • public_html(ウェブルート)
    • 資産
      • css
      • js
      • img
    • テーマ
    • index.php

現在、私の開発環境と本番環境には2つの別々のホスティングプロバイダーがあり、それらのWebルートは互いに異なる名前を持っています。たとえば、開発の名前public_htmlはですが、本番の名前はcontentです。

Webルートディレクトリの名前が異なる場合、これらの環境の両方に展開するにはどうすればよいですか?

4

2 に答える 2

4

サーバー上でシンボリックリンクを使用してWebルートを適切なディレクトリにポイントすることは、古くからの技術です。Gitリポジトリにわかりやすい名前を付けたとしましょう:clientsite.comなので、そのフォルダー内には次のようになります。

  • 。ギット
  • システム
  • 第三者
  • テンプレート
  • web_root
    • 資産
      • css
      • js
      • img
    • テーマ
    • index.php
    • admin.php

そのフォルダーは、ステージング/本番サーバーにアップロードされます。次に、ステージングサーバーで、public_htmlという名前のweb_rootへのシンボリックリンクを作成します。

ln -s clientsite.com/web_root public_html

次に、本番サーバーで、contentという名前のweb_rootへのシンボリックリンクを作成します。

ln -s clientsite.com/web_root content


さて、これについて素晴らしいのは、あなたが非常に賢くてMSMを使用している場合、そのEEインストールのすべてのドメインにweb_rootを使用してそれにシンボリックリンクを作成できるconfig.phpファイルとindex.phpファイルを作成できることですサイトごとに。例えば:

ln -s clientsite.com/web_root siteone_html

ln -s clientsite.com/web_root sitetwo_html

次に、index.phpで、HTTP_HOSTサーバー構成を調べてsite_nameを設定します。

switch ( $_SERVER['HTTP_HOST'] ) {

    case 'siteone.com' :
    case 'dev.siteone.com' :
        $assign_to_config['site_name']  = 'siteone';
    break;
    case 'sitetwo.com' :
    case 'dev.sitetwo.com' :
        $assign_to_config['site_name']  = 'site two';
    break;
}

最後に、config.phpは非常によく似た処理を実行できます。

$config['site_index']   = "";
$config['site_url']     = "http://".$_SERVER['HTTP_HOST'];
$config['server_path']  = $_SERVER['DOCUMENT_ROOT'];
$config['cp_url']       = $config['site_url']."/".$config['system_folder'].'/index.php';

....stuff here...

switch ( $_SERVER['HTTP_HOST'] ) {

    // production
    case 'siteone.com' :
        $config['cookie_domain'] = ".siteone.com";
        $db['expressionengine']['hostname'] = "111.222.111.22";
        $db['expressionengine']['username'] = "siteone";
        $db['expressionengine']['password'] = "passone";
        $db['expressionengine']['database'] = "database_live";
        $db['expressionengine']['db_debug'] = FALSE; 
    break;

    // staging
    case 'dev.siteone.com' :
        $config['cookie_domain'] = "dev.siteone.com";
        $db['expressionengine']['hostname'] = "333.444.555.22";
        $db['expressionengine']['username'] = "siteone";
        $db['expressionengine']['password'] = "passone";
        $db['expressionengine']['database'] = "database_dev";
        $db['expressionengine']['db_debug'] = FALSE; 
    break;
}

このようにして、グローバル構成オプションを設定してから、サイト固有のオプションを設定することもできます。

于 2013-02-07T00:19:22.903 に答える
1

シンボリックリンクを使用して偽のWebルートを作成することを検討してください

私は次の設定をしています:

製造

  • public_site(実際のgitリポジトリ)
    • public(webroot)
    • システム(eeシステム)
    • テンプレート
  • public_html(上記のパブリックフォルダを指すシンボリックリンク)

演出

  • staging_site
    • public(webroot)
    • システム(eeシステム)
    • テンプレート
  • staging_html(上記のパブリックフォルダを指すシンボリックリンク)

次に、適切なホストが適切な_htmlディレクトリを指すようにサーバーを設定します。

于 2013-02-01T21:20:14.607 に答える