如何使用 a2ensite 和 a2dissite?

如何使用 a2ensite 和 a2dissite?

我登录了 Linux 服务器。我认为它是一个 Red Hat 发行版。

命令a2ensitea2dissite不可用。在/etc/httpd目录中,我没有看到任何关于sites-enabled或的提及sites-available

我非常确定该网站目前正在执行 的指令/etc/httpd/conf.d/ssl.conf。我想执行a2dissite ssl,然后重新加载 Web 服务器。如何实现这一点?

答案1

a2ensite等是基于 Debian 的系统中可用的命令,而基于 RH 的发行版中不可用。

它们的作用是管理从配置文件部分到的符号链接/etc/apache2/sites-availablemods-available例如/etc/apache2/sites-enabled,如果您在配置文件中定义了 vhost /etc/apache2/sites-avaible/example.coma2ensite example.com则会创建指向此文件的符号链接/etc/apache2/sites-enabled并重新加载 Apache 配置。主 Apache 配置文件包含包含每个文件的行/etc/apache2/sites-enabled,因此它们被合并到运行时配置中。

在 RHEL 中模仿这种结构相当容易。在/etc/httpd/命名中添加两个目录sites-enabledsites-available并将您的 vhost 添加到文件中sites-available。之后,添加一行

include ../sites-enabled 

/etc/httpd/conf/httpd.conf。您现在可以创建符号链接到,然后使用或sites-enabled重新加载配置。service httpd reloadapachectl

答案2

作为 Sven 优秀答案的补充,两个脚本模仿了 a2ensite 和 a2dissite 的行为。原始 ensite.sh 可以在以下位置找到Github

a2ensite.sh

#!bin/bash
# Enable a site, just like the a2ensite command.

SITES_AVAILABLE_CONFIG_DIR="/etc/httpd/sites-available";
SITES_ENABLED_CONFIG_DIR="/etc/httpd/sites-enabled";

if [ $1 ]; then
  if [ -f "${SITES_ENABLED_CONFIG_DIR}/${1}" ]; then
    echo "Site ${1} was already enabled!";
  elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
    echo "You don't have permission to do this. Try to run the command as root."
  elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
    echo "Enabling site ${1}...";
    ln -s $SITES_AVAILABLE_CONFIG_DIR/$1 $SITES_ENABLED_CONFIG_DIR/$1
    echo "done!"
 else
   echo "Site not found!"
fi
else
  echo "Please, inform the name of the site to be enabled."
fi


a2dissite.sh

#!bin/bash
# Disable a site, just like a2dissite command, from Apache2.

SITES_AVAILABLE_CONFIG_DIR="/etc/httpd/sites-available";
SITES_ENABLED_CONFIG_DIR="/etc/httpd/sites-enabled";

if [ $1 ]; then
  if [ ! -f "${SITES_ENABLED_CONFIG_DIR}/${1}" ]; then
    echo "Site ${1} was already disabled!";
  elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
    echo "You don't have permission to do this. Try to run the command as root."
  elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
    echo "Disabling site ${1}...";
    unlink $SITES_ENABLED_CONFIG_DIR/$1
    echo "done!"
  else
    echo "Site not found!"
  fi
else
  echo "Please, inform the name of the site to be enabled."
fi

相关内容