web-dev-qa-db-ja.com

a2ensiteとa2dissiteの方法は?

Linuxサーバーにログインしています。 Red Hatディストリビューションだと思います。

コマンドa2ensiteおよびa2dissiteは使用できません。 /etc/httpdディレクトリで、sites-enabledまたはsites-availableについての言及はありません。

サイトが現在/etc/httpd/conf.d/ssl.confのディレクティブを実行していると確信しています。 a2dissite sslを実行してから、Webサーバーをリロードします。これを達成するにはどうすればよいですか?

10
John

a2ensiteなどは、Debianベースのシステムで使用できるコマンドであり、RHベースのディストリビューションでは使用できません。

それらが行うことは、/etc/Apache2/sites-availableおよびmods-availableの構成ファイル部分から/etc/Apache2/sites-enabledなどへのシンボリックリンクを管理することです。例えば。構成ファイル/etc/Apache2/sites-avaible/example.comでvhostを定義している場合、a2ensite example.com/etc/Apache2/sites-enabledにこのファイルへのシンボリックリンクを作成し、Apache構成を再ロードします。メインのApache構成ファイルには、/etc/Apache2/sites-enabledのすべてのファイルを含む行が含まれているため、ランタイム構成に組み込まれます。

RHELでこの構造を模倣することは非常に簡単です。 /etc/httpd/sites-enabledおよびsites-availableという名前の2つのディレクトリを追加し、仮想ホストをsites-availableのファイルに追加します。その後、行を追加します

include ../sites-enabled 

/etc/httpd/conf/httpd.confへ。これで、sites-enabledへのシンボリックリンクを作成し、service httpd reloadまたはapachectlを使用して構成を再ロードできます。

24
Sven

Svenの優れた回答の追加として、a2ensiteとa2dissiteの動作を模倣する2つのスクリプト。元の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