2

私が直面する一般的な問題は、新しい展開が実行されている間、またはその他のメンテナンス (新しい展開のテストなど) が行われている間、Web サイトに保留ページを配置することです。Apache (htaccess) を使用している場合、これは簡単に実行できることはわかっていますが、これは常に使用中の Web サーバー (IIS、Nginx など) とは限りません。私の現在のすべての Web サイトはすべてのリクエストを public ディレクトリ (Zend Framework、Wordpress、Symfony2 など) のルートにある index.php ファイルにリダイレクトするため、現在の解決策は次のとおりです。

index.php次のコードをルートファイルに追加するには:

$maintenanceFile = 'maintenance.flag';

if (file_exists($maintenanceFile)) {
    $ips = explode("\n",file_get_contents($maintenanceFile));
    foreach($ips as $key=>$value) {
        $ips[$key] = trim($value);
    }
    if(!isset($_COOKIE['BYPASS_MAINTENANCE']) && !in_array($_SERVER['REMOTE_ADDR'], $ips)) {
        include_once dirname(__FILE__) . '/holding.html';
        exit;
    }

}

maintenance.flagこれにより、次のように、許可された IP アドレスのリストを含むファイルをルートにも簡単に追加できます。

127.0.0.1
123.456.789.101

次に、IP アドレスがリスト内に存在する場合、現在の Web サイトを表示して、再度公開する前にテストすることができます。そうでない場合は、holding.html代わりにページ (これもルートに存在します) が表示されます。終了したら、maintenance.flagファイルを削除するだけです。

だから私の質問は、これを行うより良い方法はありますか?

4

2 に答える 2

2

ウェブサイトを 3 つの部分 (コピー) に分割し、3 つのサブドメインを持っています。

1) dev.website.com は開発者向けです。あなたの方法のように、あなたのIPが見つかった場合にアクセスできます。

2) test.website.com は、バグをテストする必要がある Web サイトを起動する前のテスター用です。

3) live.website.com は、他のすべての website.com と同じです。

このようにして、ライブ ドメインで問題を引き起こすことなく簡単に開発できます。

開発からテスト、ライブに簡単に切り替えることができます。環境を簡単にコピーできます。

うまくいけば、あなたを助けました!

于 2012-12-13T11:46:13.557 に答える
1

Web サイトの開発バージョンと運用バージョンは、常に異なるディレクトリに配置し、異なるドメイン名、ポート、またはパスを使用してアクセスする必要があります。また、両方が同じ DB や、アップロードされたファイルなどの他のリソースを使用することはありません。

Subversion、git、または任意のコード リポジトリ (そうであることを願っています) を使用している場合は、すべてのテストなどを実行できる個別の「開発」環境をセットアップするのは簡単です。私のサイトはすべてこのようにセットアップされています。機能を実装または修正し、「開発」側でそれらをテストしたら、変更を SVN にコミットし、「製品」側でsvn updateすべてを本番環境にプッシュするだけです。

あなたのテクニックの問題は$maintenanceFile、サイトへのすべてのページ要求が、ハード ドライブの file_exists チェックになることです。これは小規模なサイトでは問題にならないかもしれませんが、ヒット数が多い大規模なサイトでは、全体的なパフォーマンスが低下する可能性があります。

于 2012-12-13T11:44:40.007 に答える