Como a2ensite e a2dissite?

10

Estou logado em um servidor Linux. Eu acho que é uma distribuição da Red Hat.

Os comandos a2ensitee a2dissitenão estão disponíveis. No /etc/httpddiretório, não vejo menção a sites-enabledou sites-available.

Tenho certeza de que o site está atualmente executando as diretivas do /etc/httpd/conf.d/ssl.conf. Eu gostaria de fazer um e a2dissite ssl, em seguida, recarregar o servidor da Web. Como conseguir isso?

John
fonte

Respostas:

24

a2ensite etc. são comandos disponíveis em sistemas baseados em Debian e que não estão disponíveis em distribuições baseadas em RH.

O que eles fazem é gerenciar links simbólicos a partir de partes de arquivos de configuração em /etc/apache2/sites-availablee mods-availablepara /etc/apache2/sites-enablede assim por diante. Por exemplo, se você tiver um vhost definido em um arquivo de configuração /etc/apache2/sites-avaible/example.com, a2ensite example.comcriará um link simbólico para esse arquivo /etc/apache2/sites-enablede recarregará a configuração do apache. O arquivo de configuração principal do Apache contém linhas que incluem todos os arquivos /etc/apache2/sites-enablede, portanto, são incorporadas à configuração do tempo de execução.

É muito fácil imitar essa estrutura no RHEL. Adicionar dois diretórios no /etc/httpd/chamado sites-enablede sites-availablee adicionar seus vhosts em arquivos em sites-available. Depois disso, adicione uma linha

include ../sites-enabled 

para /etc/httpd/conf/httpd.conf. Agora você pode criar links simbólicos para sites-enablede recarregar a configuração com service httpd reloadou apachectl.

Sven
fonte
1
Ahh, entendi. Então, basicamente /etc/httpd/conf.d está atuando como o equivalente a sites habilitados. Então, apenas remover o ssl.conf desse diretório e reiniciar / recarregar o httpd captou minhas alterações. Isso é legal
John
2

Como complemento da excelente resposta de Sven, dois scripts que imitam o comportamento de a2ensite e a2dissite. O ensite.sh original pode ser encontrado no 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
Kurt Van den Branden
fonte
qual deve ser o "nome do site"?
ewizard