web-dev-qa-db-ja.com

サーバー構成を必要とするモジュールをローカルにインストールすることは良い考えですか?どうやって?

サーバー側の設定が機能する必要があるモジュールはほとんどありません。ホスティングとドメインがある場合は大きな問題ではありませんが、ローカルで開発している場合は問題だと思います。

ローカル環境にこれらのタイプのモジュールを何らかの方法でインストールして使用してテストする場合は、本番環境に移行した後で構成を変更する必要があります。たとえば、 Node.js統合Twitter 、および使用する前にセットアップが必要なその他のモジュール。

私はacquia devを使用しています。上で述べたように、ライブになる前にいくつかのモジュールをテストしたいのですが、私の質問はどうすればできるのですか?

注:このようなローカル環境を使用すると、数か月間そのためのホスティングを購入する必要がなくなるため、テストのコストを削減することができます。場合によっては、ホスティングを購入して、テストのためだけに数か月または1年を無駄にしたくない人もいるでしょう。

3
Umair

問題は、さまざまな環境(本番、ステージング、ローカル開発など)でさまざまな構成を持つことです。

通常は生産があります。こちらがメインサイトです。ステージングまたは開発環境に移動する必要があります。移動は、通常、すべての新しいコンテンツが追加された運用データベースを取得することを意味します。しかし、開発環境では、いくつかの変更が必要です。

  • develhttps://www.drupal.org/project/reroute_email などの開発モジュールを有効にします。

  • 設定を変更する。たとえば、サイトがWebサービスを使用している場合、エンドポイントURLを開発WebサービスURLに変更できます。これらの設定はjsut Druipal変数である場合がありますが、モジュールのカスタムテーブルに保存されているカスタム設定である場合があります。

  • クリーンな機密データ:ユーザーのメール、医療データなどのユーザーの個人データ、漏洩してはならない機密コンテンツなど.

あなたはできる:

Settings.phpの変数を上書きする

コメントで@Jaypanが言ったように、settings.phpの$ conf ['VARNAME']をオーバーライドします。これにより、環境ごとに簡単に変数をオーバーライドできます。

より柔軟にするには、Drupa 8戦略を使用できます。ソースコード管理に共通のsettings.phpを設定し、すべての環境に共通のすべての構成を設定し、settings.phpファイルの最後に環境ごとの設定でsettings.local.phpをロードします。通常、ここではBD構成、node.jsなどの他のサービスにアクセスするための構成を使用できます。

これを行うには、このコードをsettigns.phpに追加します。

# Load environment managed conf.
$conf_path = conf_path();
if (file_exists(DRUPAL_ROOT . '/' . $conf_path . '/settings.local.php')) {
  include DRUPAL_ROOT . '/' . $conf_path . '/settings.local.php';
}

環境を変更

以前の解決策は機能しますが、内部のDrupal変数以外のものも変更する必要がある場合があります。その場合、環境でセットアップコードを実行するメカニズムを設定する必要があります。たとえば、ステージング環境またはローカル環境で ステージファイルプロキシ が有効になっています。settings.phpでモジュールを直接有効にすることはできません。また、データをサニタイズするためにクエリを実行する必要がある場合があります。

この場合、環境に応じて変更するオプションがいくつかあります。

Hook_init実装の使用

hook_init は、Drupalキャッシュされていないすべてのリクエストで呼び出されるフックです。ここに、環境内の条件をチェックし、必要に応じて変更するコードを配置できます。これはソリューションの実装は簡単ですが、フックの実装はキャッシュされていないすべてのリクエストで呼び出されるため、実行されるチェックも非常に単純でなければなりません。そうしないと、パフォーマンスが低下する可能性があります。

また、 hook_boot を使用できます。これは、キャッシュされているかどうかに関係なく、すべての要求で実行されます。パフォーマンスとDrupal bootstrapの間、およびテーマ、モジュール、またはほとんどのインクルードファイルがロードされる前に呼び出されるためメモリに。

カスタムDrushコマンドを作成する

Drushは カスタムコマンドの作成 を許可します。最後に、これらはPHPコードがDrupalコンテキストで実行されるため、すべてのDrupal関数が使用可能です。環境チェックを実行するカスタムDrushコマンドを作成できます。ここから、モジュールを有効にしたり、SQLクエリを実行したり、その他のアクションを実行したりできますDrupal許可。

このコマンドは、データベースが開発環境にロードされたときに一度だけ実行する必要があります。このため、コマンドは一度しか実行されないため、リソースを大量に消費する場合でも問題はありません。

拡張 drush sql-sanitize

このdrushコマンドは、データベースをサニタイズし、すべてのユーザーに同じパスワードを設定して、そのアドレスを変更します。これを拡張して、SQLクエリの実行などのタスクを増やすことができます。

Drushコマンドを使用したスクリプト

環境を変更するdrushコマンドでカスタムsfriptを記述します。この解決法は簡単ですが、drushコマンドで変更を加えることができます。

例えば:

drush en devel -y
drush vset myconf my_dev_value
drush sql-query "MY AWESOME QUERY"
1
sanzante