使用 a2ensite 启用 Apache2 站点并指定优先级

使用 a2ensite 启用 Apache2 站点并指定优先级

如何使用 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() ) {

启用和禁用站点时您都需要手动输入优先级。

相关内容