如何使用 a2ensite 指定优先级(/etc/apache2/sites-enabled/ 中符号链接的站点名称前缀)?
答案1
您无法使用 实现所尝试执行的操作a2ensite
,因为该工具包含特殊逻辑来识别default
站点启用的时间,因此它会命名符号链接000-default
。这记录在手册页。
尽管如此,a2ensite
它实际上只是一个被美化的包装器,它会在适当的位置创建符号链接。因此,也没有什么可以阻止你:
- 重命名符号链接后
a2ensite
已添加它,添加优先级前缀数字来指定站点加载顺序 - 首先自己创建符号链接,不要使用
a2ensite
,而是使用 的命令ln -s /etc/apache2/sites-available/<site> /etc/apache2/sites-enabled/nnn-<site>
,其中nnn
是您要设置的优先级。只需记住在完成此操作后重新加载 Apache - 修改源代码,但请记住,这将为您提供
a2ensite
与主源代码树中的其他迭代不一致的版本,这可能会导致将来的升级困难(除非您将更改合并到上游)
答案2
不幸的是,没有这种可能。
您需要在 a2ensite 之后重命名符号链接,或者使用优先级前缀在 sites-enabled 中命名文件。
a2ensite 源代码:
sub doit {
my $acton = shift;
my $prio = "";
if ( $obj eq 'site' && $acton eq 'default' ) {
$prio = '000-';
}
$prio 在其他任何地方都未修改。不过您可以修改源代码。这不是一个好主意,但您可以从这样的补丁开始:
@@ -116,6 +116,13 @@
$prio = '000-';
}
+ if ( $obj eq 'site' )
+ {
+ print "Enter priority: ";
+ $prio = <STDIN>;
+ chomp $prio;
+ $prio .= '-';
+ }
my ( $conftgt, $conflink );
if ( $obj eq 'module' ) {
if ( $acton eq 'cgi' && threaded() ) {
启用和禁用站点时您都需要手动输入优先级。