Linux conf ファイル内の文字列 (変数) を置き換えますか?

Linux conf ファイル内の文字列 (変数) を置き換えますか?

apache2 仮想ホスト用の設定ファイルがあります。各仮想ホストには、次のような設定ファイルがあります。

NameVirtualHost mydomain.co.uk:80

<VirtualHost mydomain.co.uk:80>
        DocumentRoot /home/d/r/drupal/web/public_html
        ServerName mydomain.co.uk
        ServerAlias www.mydomain.co.uk
        ErrorLog /var/log/apache2/sites/mydomain.co.uk_error-log
        CustomLog /var/log/apache2/sites/mydomain.co.uk_access-log "combined"

        # Rewrite the www
        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^www\.mydomain.co.uk/?$ [NC]
        RewriteRule ^(.*)$ http://mydomain.co.uk$1 [L,R=301]

        # Read in the drupal configuration
        Include conf.d/drupal6.conf

        # Block access while developing
#       Include conf.d/beta.conf

</VirtualHost>

myDomainを1か所で指定し、この文字列を再利用するにはどうすればよいでしょうか。

mydomain = "www.SomeDomainIHave.com"

ファイルの先頭でドメインを指定して、それより下の部分での間違いを回避するという考えです。

これが意味を成すといいのですが。

ありがとう。

答え1

あるいは、ほとんどの vhost が同様のテンプレートに従っている場合は、mod_macro を使用できます。最近、200 を超える同様の vhost を持つ Apache インストールにこれを設定しましたが、うまく機能しています。

あなたの例は次のように書き直されます: ( /etc/apache2/macro.d/drupal.vhost.conf (

<Macro drupal0 $domain>
NameVirtualHost $domain:80

<VirtualHost $domain:80>
        DocumentRoot /home/d/r/drupal/web/public_html
        ServerName $domain
        ServerAlias www.$domain
        ErrorLog /var/log/apache2/sites/$domain_error-log
        CustomLog /var/log/apache2/sites/$domain_access-log "combined"

        # Rewrite the www
        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^www\.$domain/?$ [NC]
        RewriteRule ^(.*)$ http://$domain$1 [L,R=301]

        # Read in the drupal configuration
        Include conf.d/drupal6.conf

        # Block access while developing
#       Include conf.d/beta.conf
</VirtualHost>
</Macro>

マクロの使用: ( /etc/apache2/sites-available/drupal.sites.conf )

Include /etc/apache2/macro.d/drupal.vhost.conf
Use drupal0 mydomain.co.uk

答え2

直接はできません。ただし、設定したいパラメータがたくさんある場合は、テンプレートベースのアプローチが考えられます。ファイル内の変数を置き換えるには、m4/sed/ruby/python を使用します。欠点は、何かを変更したときにファイルを再生成するプロセスが必要になることですが、これは自動化できます。

答え3

次のような構成管理ツールを見てみましょう傀儡またはシェフこれらを使用すると、設定ファイルのテンプレートを定義し、設定を変更したときにそれらを再構築できます。次に、ドメイン名などの一般的な設定を定義し、テンプレートで再利用できます。これらのツールは、新しい構成を展開し、Web サービスを再起動します。独自の構成管理ツールを作成して、車輪の再発明をしないでください (ところで、これをまだ行っていない人はいますか? :) )

答え4

ケルティアがすでに述べたように変数を使用することはできませんが、おそらくmod_vhost_aliasあなたの問題を解決するのに役立ちます。

<VirtualHost 111.22.33.44>
  ServerName www.commercial.isp.com

  CustomLog logs/access_log.commercial vcommon

  VirtualDocumentRoot /www/commercial/%0/docs
  VirtualScriptAlias /www/commercial/%0/cgi-bin
</VirtualHost>

%0この例では が に置き換えられますwww.commercial.isp.com

ここさらにいくつか例を挙げます。

関連情報