如何使用 a2ensite 启用所有站点配置(同时传递 000-default.conf && default-ssl.conf)?

如何使用 a2ensite 启用所有站点配置(同时传递 000-default.conf && default-ssl.conf)?

我使用带有 Apache2 的 Ubuntu 服务器 16.04.2,在其上存储我的个人网站。

/etc/apache2/sites-available为了启用(除了000-default.conf和 之外)下的所有 conf 文件ssl-default.conf,我前往/var/www/html并执行了a2ensite

然后我被告知:

Your choices are: 
000-default default-ssl domain.tld1 domain.tld2 domain.tld3 domain.tld4 
Which site(s) do you want to enable (wildcards ok)?

然后我又做了Ctrl+C旨在执行其他事情。

我正在寻找一种自动启用所有站点配置的方法,而不注意特定的站点配置——我只想运行一个命令来启用我自己添加的所有站点配置。

答案1

不妨只在你的配置目录中使用 find。

find /etc/apache2/sites-available/ -type f -and -not -name "*default*" -exec a2ensite {} \;

这将找到所有名称中不包含“default”的配置文件并激活它们。

答案2

您需要导航到/etc/apache2/sites-available然后运行以下命令:

sudo a2ensite *

它将启用目录中的所有站点。(文件应该类似于 xxx.conf)

然后使用重新加载 apache sudo service apache2 reload

因此你的命令序列应该是这样的:

cd /etc/apache2/sites-available
sudo a2ensite *
sudo service apache2 reload

答案3

无论我们当前的位置在哪里,该命令sudo a2ensite "*.conf"都会尝试启用放置在中的所有配置文件/etc/apache2/sites-available/

接下来我们可以使用a2dissite 000-default.conf default-ssl.conf它来禁用默认的 Apache 的配置,然后我们可以使用它systemctl restart apache2.service来重新启动它。

我们可以像一个命令一样运行这一切:

sudo bash -c "a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service"

更重要的是,我们可以通过 bash 中的函数创建自定义命令:

function a2ensites {
        sudo bash -c "a2ensite '*.conf' && a2dissite 000-default default-ssl && systemctl restart apache2.service"
}
export -f a2ensites

现在我们有了专门用于完成这项工作的命令。要使此命令永久生效,我们必须将上述几行放入文件底部,然后将其放入。下一个简单脚本将完成此任务:a2ensites~/.bashrcsource

 printf "\nfunction a2ensites { \n\tsudo bash -c \"a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service\" \n}\nexport -f a2ensites\n" | tee -a $HOME/.bashrc; source $HOME/.bashrc

答案4

复制粘贴以下行到文件名中apache_enable.sh

cd /etc/apache2/sites-available/
a2ensite *
service apache2 reload

并使用 root 用户发出读取+执行命令apache_enable.sh并执行脚本

相关内容