我使用带有 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
~/.bashrc
source
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
并执行脚本