在Apache中使用mod_macro定义宏
本指南是关于mod_macro ,它使得Apache Web服务器的管理工作变得更加容易,或者仅仅是针对具有多个测试页面或项目的家庭开发人员。 我将解释如何运行它,并给出一些我如何使用该模块的例子,以帮助您开始使用它。
安装
首先我们需要安装模块,因为它没有安装在默认的Debian / Ubuntu安装中。 我认为你已经安装了Apache2,否则你应该首先安装。 我们可以使用APT安装模块,只需以root身份运行以下命令:
apt-get install libapache2-mod-macro
接下来,我们需要激活模块并重新启动Apache:
a2enmod macro
/etc/init.d/apache2 restart
你准备好使用宏了!
基本用法
在我们准备制作配置文件之前,您应该首先学习如何使用mod_macro。 它基本上添加了一个新的功能和一个新的标签,现在可以在Apache的配置文件中使用。 功能“使用”和标签“<宏>”。 我们开始使用用于创建新宏的标签。 一个简单的静态宏可能如下所示:
<Macro Logfile> CustomLog /var/log/apache2/access.log combined ErrorLog /var/log/apache2/error.log LogLevel warn </Macro>
宏简单地声明称为Logfile
的宏包含宏
标签内的文本。 为了使用宏,您只需将以下行放入您的配置文件中,您通常会从宏中放置行:
Use Logfile
当您重新加载Apache并查看配置文件时,它会自动将Use Logfile
转换为您在宏中定义的行。
这很简单,但是如果您不希望所有网站登录到同一个文件,该怎么办? 您可以通过声明在宏中使用的变量来为每个站点创建一个日志文件:
<Macro Logfiles $sitename> CustomLog /var/log/apache2/$sitename-access.log combined ErrorLog /var/log/apache2/$sitename-error.log LogLevel warn </Macro>
和使用功能一起去:
Use Logfiles example.com
整洁,你不觉得吗 如果您要更改日志文件的路径,则只需在宏中更改它,而不必在每个配置文件中进行更改。 使用的语法如下所示:
Use <Macroname> [Variable 1] [Variable 2] ... [Variable x]
这基本上意味着你必须提供你正在使用的宏的名称,但变量是可选的。
在制作宏时需要记住的一件事是,定义您的宏的文件需要包含在Apache的配置文件中,否则您将无法使用它们。 我建议你在文件夹/etc/apache2/conf.d/
中创建一个名为macro.conf
的文件,因为该文件夹中的所有文件都被Apache自动包含。
高级用法
宏不仅可用于在Apache配置中打印几行,还可以用于整个<VirtualHost>
声明,如下所示:
<Macro VHost $type $hostname> <VirtualHost *> ServerAdmin webmaster@$hostname Use $type $hostname ServerSignature On ServerName $hostname ServerAlias www.$hostname </VirtualHost> </Macro> <Macro dir $hostname> DocumentRoot /var/www/$hostname CustomLog /var/log/apache2/$hostname-access.log combined ErrorLog /var/log/apache2/$hostname-error.log LogLevel warn </Macro> <Macro cfg $hostname> Include /var/www/conf.d/$hostname.conf </Macro>
我应该解释一下,因为看起来似乎很复杂。 宏提供两个变量,第一个称为$ type
,可以设置为dir
或cfg
,第二个变量$ hostname
将是站点的主机名,而不是“www”。 在它的前面。
$ hostname
变量设置日志文件的名称,并使用域名定义ServerName,甚至添加一个ServerAlias
与“www”。 前缀
$ type
变量的目的是为您提供为VirtualHost
定制配置文件之间的选择,然后将其放置在/var/www/conf.d/$hostname.conf中
,或者使用预定义的路径DocumentRoot
( / var / www / $ hostname /
)。
这样可以很方便地了解您在Apache中添加了哪些站点,因为VirtualHosts
的列表将如下所示:
Use VHost dir example.com Use VHost cfg tenzer.dk etc...
这也使得脚本添加和删除站点到服务器更容易,因为您只需要在Apache配置中查找一行。
请注意,宏模块可用于Apache的所有配置文件,不仅可用于设置VirtualHosts
。
我希望您发现本指南有帮助,请让我知道您在安装程序中使用mod_macro的方式!