私はYii=を定義し、定数YII_DEBUGおよびYII_ENV。もちろん、ローカルマシンでは「true」と「dev」に設定されています。これは、基本的なアプリテンプレートが index.php = file。このファイルは、プロダクションモード、つまりプロダクションマシンでこれらの行を削除する必要があることも通知します。その後、これらの定数はデフォルトで「false」および「prod」に設定されます。情報は Defining Constants および Environment Constants で見つけることができます。
私の質問:index.phpがVCSに含まれている場合、これらの定数を最適に処理するにはどうすればよいですか?ある環境では存在し、別の環境では存在しません。もちろん、テストマシンでもかまいません。どのオプションがありますか?これも展開方法の問題だと思います。現在、私はGitを介してプロダクションマシンにプッシュしています。プリミティブデプロイメントIMOとは...
どうやってやるの?何を指示してるんですか?
編集:実際には、paramsファイルの処理は同じ問題です。
私のソリューションは次のとおりです。
if ($_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == '127.0.0.1') {
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
}
Herokuの場合も、 HerokuでYii2 Advancedをセットアップ
Yii2(または少なくとも高度なアプリケーションテンプレート)のシステムは「environments
」です。このフォルダーには、環境ごとに変化するファイルを保存できます。
これらのファイルは通常、bootstrap files(index.php
)および「ローカル」構成ファイル(メイン構成をオーバーライドするもの)。
アプリテンプレートには、切り替え可能な「init
」コマンドもあります。
基本的にenvironments
- folder全体をVCSに追加しますが、それらのファイルが最終的に配置される場所を無視します(既に述べたAnkitのように)。この方法により、VCSのすべての異なる環境依存設定を隣り合わせて保持できます。
ファイルindex.php(VCSリポジトリに入ります):
<?php
@include 'my-env.php';
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../config/web.php');
(new yii\web\Application($config))->run();
My-env.phpファイル:
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
my-env.phpはVCSに追加されません。存在する場合と存在しない場合があります。そうでない場合、アプリは実稼働モードで自動的に実行されます。 my-env.phpは、おそらくconfigフォルダーにも配置できます。
これは、Ankitのアプローチと比較して小さな改善であるため、index.phpをVCSに追加できます。したがって、VCSリポジトリにはall必要なファイルが含まれており、手動で修正することなく展開できます。
仮想ホストを設定する設定ファイルにアクセスできますか?その場合は、addsetEnv YII_DEBUG "true"
の間に </Directory>
および</VirtualHost>
Yii2は作曲家と連携します。質問の1つは、composer.lock
。
Yii2の制作サイトにcomposer.lock
から.gitignore
ので、composer=生産の問題に応じた更新を決定し、composer.lock
git pull
本番サイトの更新用。
.gitignoreの最後の行は次のとおりです。
# exclude composer.lock from versioning
composer.lock