3

さまざまな環境に展開するために Apache httpd 構成をテンプレート化しようとしています。そのために Python 言語の Cheetah アプリケーションを使用したいと考えています。しかし、コマンド ラインcheetahプログラムに問題があり、Cheetah に対する私の誤解とドキュメントの不足が組み合わさっていると思います。

私の目標は、単一の httpd.conf テンプレート ファイルを作成し、環境固有の定義ファイルから変数を置き換えることです。

httpd.tmpl:

Listen $HTTP_PORT
...
#if $ENABLE_HTTPS == true
<Virtual Host *:$HTTPS_PORT>
    ...
</VirtualHost>
#end if

production.env:

HTTP_PORT=34120
HTTPS_PORT=34121
ENABLE_HTTPS=true

この Cheetah テンプレートを埋めるために必要なコマンド ラインは何ですか? 私が使用した:

cheetah f --oext conf --debug httpd

しかし、明らかにprod.env入力ファイルとして読み込まれません。#includeテンプレート ファイルの先頭に を追加します。

#include "prod.env"

そして、私の名前は見つかりませんでした:

Cheetah.NameMapper.NotFound: cannot find 'APACHE_PORT'

いずれにせよ、これは理想的な状況ではありません。なぜなら、cheetah を呼び出すたびにコマンド ラインで名前と値のマッピング ファイルを指定できるようにしたいからです。

ありがとう!

編集: Python スクリプトを記述してファイルの読み取りを実行し、Cheetah API を使用して置き換えることができることを認識しています。ただし、コマンド ラインを使用してテンプレートに入力する方法を探しています。


解決した

@pyfunc が提供するドキュメント リンクのおかげで、これを達成する方法がわかりました。主な問題は--env、現在の環境変数をcheetahに渡すcheetahコマンドラインで提供することです。ただし、これらの環境変数は最初にエクスポートする必要があります。

4

1 に答える 1

0

Cheetah は #include テキストの各チャンクを、ネストされた Template オブジェクト内にラップします。

使用する

#include raw "prod.env"

また

#set global $HTTP_PORT="34120"

異なるenvファイルを含めるには、それもテンプレート化する必要があります。

以下の例を参考にしてください。

于 2010-09-02T19:20:50.690 に答える