Bagaimana cara a2ensite dan a2dissite?

10

Saya masuk ke server Linux. Saya pikir ini adalah distribusi Red Hat.

Perintah a2ensitedan a2dissitetidak tersedia. Dalam /etc/httpddirektori, saya tidak melihat penyebutan sites-enabledatau sites-available.

Saya cukup yakin situs ini sedang menjalankan arahan dari /etc/httpd/conf.d/ssl.conf. Saya ingin melakukan a2dissite ssl, lalu memuat ulang Server Web. Bagaimana cara mencapai ini?

John
sumber

Jawaban:

24

a2ensite dll. adalah perintah yang tersedia dalam sistem berbasis Debian dan yang tidak tersedia dalam distribusi berbasis RH.

Apa yang mereka lakukan adalah mengelola tautan simbolik dari bagian file konfigurasi di /etc/apache2/sites-availabledan mods-availableke /etc/apache2/sites-enableddan seterusnya. Misalnya jika Anda memiliki vhost yang didefinisikan dalam file konfigurasi /etc/apache2/sites-avaible/example.com, a2ensite example.comakan membuat symlink ke file ini /etc/apache2/sites-enableddan memuat ulang konfigurasi apache. File konfigurasi Apache utama berisi baris yang menyertakan setiap file /etc/apache2/sites-enableddan dengan demikian, mereka dimasukkan ke dalam konfigurasi runtime.

Sangat mudah untuk meniru struktur ini di RHEL. Tambahkan dua direktori dalam /etc/httpd/nama sites-enableddan sites-availabledan tambahkan vhosts Anda ke dalam file sites-available. Setelah itu, tambahkan satu baris

include ../sites-enabled 

untuk /etc/httpd/conf/httpd.conf. Anda sekarang dapat membuat symlink ke sites-enableddan kemudian memuat ulang konfigurasi dengan service httpd reloadatau apachectl.

Sven
sumber
1
Ahh begitu. Jadi pada dasarnya /etc/httpd/conf.d bertindak sebagai setara dengan situs yang diaktifkan. Jadi cukup hapus ssl.conf dari direktori itu dan restart / reload httpd mengambil perubahan saya. Itu keren
John
2

Sebagai tambahan untuk jawaban Sven yang luar biasa, dua skrip yang meniru perilaku a2ensite dan a2dissite. Ensite.sh asli dapat ditemukan di 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
sumber
apa yang seharusnya menjadi "nama situs"?
ewizard