Làm thế nào để a2ensite và a2dissite?


10

Tôi đang đăng nhập vào máy chủ Linux. Tôi nghĩ đó là một bản phân phối Red Hat.

Các lệnh a2ensitea2dissitekhông có sẵn. Trong /etc/httpdthư mục, tôi không thấy bất kỳ đề cập đến sites-enabledhoặc sites-available.

Tôi khá chắc chắn rằng trang web hiện đang thực hiện các chỉ thị của /etc/httpd/conf.d/ssl.conf. Tôi muốn làm một a2dissite ssl, sau đó tải lại Máy chủ Web. Làm thế nào để đạt được điều này?

Câu trả lời:


24

a2ensite v.v. là các lệnh có sẵn trong các hệ thống dựa trên Debian và không có sẵn trong các bản phân phối dựa trên RH.

Những gì họ làm là để quản lý liên kết tượng trưng từ các bộ phận tập tin cấu hình trong /etc/apache2/sites-availablemods-availableđể /etc/apache2/sites-enabledvà vân vân. Ví dụ: nếu bạn có một vhost được xác định trong tệp cấu hình /etc/apache2/sites-avaible/example.com, a2ensite example.comsẽ tạo một liên kết tượng trưng đến tệp này /etc/apache2/sites-enabledvà tải lại cấu hình apache. Tệp cấu hình chính của Apache chứa các dòng bao gồm mọi tệp trong /etc/apache2/sites-enabledvà do đó, chúng được tích hợp vào cấu hình thời gian chạy.

Nó khá dễ dàng để bắt chước cấu trúc này trong RHEL. Thêm hai thư mục trong /etc/httpd/tên sites-enabledsites-availablevà thêm vhosts của bạn vào tập tin trong sites-available. Sau đó, thêm một dòng

include ../sites-enabled 

để /etc/httpd/conf/httpd.conf. Bây giờ bạn có thể tạo liên kết tượng trưng sites-enabledvà sau đó tải lại cấu hình bằng service httpd reloadhoặc apachectl.


1
À, tôi hiểu rồi. Vì vậy, về cơ bản /etc/httpd/conf.d đang hoạt động tương đương với các trang web được kích hoạt. Vì vậy, chỉ cần xóa ssl.conf khỏi thư mục đó và khởi động lại / tải lại httpd đã chọn các thay đổi của tôi. Thật tuyệt
John

2

Là một phần bổ sung cho câu trả lời xuất sắc của Sven, hai tập lệnh bắt chước hành vi của a2ensite và a2dissite. Bản gốc oblite.sh có thể được tìm thấy trên 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

"tên của trang web" phải là gì?
ewizard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.