วิธีการ a2ensite และ a2dissite


10

ฉันลงชื่อเข้าใช้เซิร์ฟเวอร์ Linux ฉันคิดว่ามันคือการกระจาย Red Hat

คำสั่งa2ensiteและa2dissiteไม่พร้อมใช้งาน ใน/etc/httpdไดเรกทอรีฉันไม่เห็นเอ่ยถึงใด ๆหรือ sites-enabledsites-available

/etc/httpd/conf.d/ssl.confผมค่อนข้างมั่นใจว่าเว็บไซต์ที่มีการดำเนินการในขณะนี้คำสั่งของ ฉันต้องการที่จะทำa2dissite sslแล้วโหลดเว็บเซิร์ฟเวอร์อีกครั้ง ทำอย่างไรถึงจะบรรลุเป้าหมายนี้?

คำตอบ:


24

a2ensite ฯลฯ เป็นคำสั่งที่มีอยู่ในระบบที่ใช้เดเบียนและไม่สามารถใช้ได้ในการแจกแจงแบบอิง RH

สิ่งที่พวกเขาทำคือการจัดการลิงก์สัญลักษณ์จากส่วนไฟล์กำหนดค่าใน/etc/apache2/sites-availableและmods-availableไป/etc/apache2/sites-enabledเรื่อย ๆ เช่นถ้าคุณมี vhost ที่กำหนดไว้ในไฟล์ config /etc/apache2/sites-avaible/example.com, a2ensite example.comจะสร้าง symlink ไปไฟล์นี้ใน/etc/apache2/sites-enabledและโหลด config ของอาปาเช่ ไฟล์กำหนดค่า Apache หลักมีบรรทัดที่รวมทุกไฟล์ไว้/etc/apache2/sites-enabledและจะรวมอยู่ในการกำหนดค่ารันไทม์

มันค่อนข้างง่ายที่จะเลียนแบบโครงสร้างนี้ใน RHEL เพิ่มสองไดเรกทอรีใน/etc/httpd/ชื่อsites-enabledและsites-availableและเพิ่ม vhosts sites-availableของคุณเป็นไฟล์ใน หลังจากนั้นเพิ่มบรรทัด

include ../sites-enabled 

/etc/httpd/conf/httpd.confไปยัง ตอนนี้คุณสามารถสร้าง symlinks ไปsites-enabledแล้วโหลดการตั้งค่าด้วยหรือservice httpd reloadapachectl


1
อ่าฉันเข้าใจแล้ว ดังนั้นโดยทั่วไป /etc/httpd/conf.d จึงทำหน้าที่เทียบเท่ากับไซต์ที่เปิดใช้งาน ดังนั้นเพียงแค่เอา ssl.conf ออกจากไดเรกทอรีนั้นและเริ่ม / โหลดใหม่ httpd เพื่อรับการเปลี่ยนแปลงของฉัน ช่างยอดเยี่ยม
John

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

"ชื่อของไซต์" ควรเป็นอย่างไร
ewizard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.