Как настроить Apache (сайты доступны против httpd.conf)

27

Я пытался следовать нескольким основным учебникам, объясняющим, как настроить Apache и запустить его (на Ubuntu, на Amazon). Я, в основном, отказался, потому что во всех руководствах говорилось, как настроить httpd.conf (чтобы добавить DocumentRoot и т. Д.).

Теперь я наткнулся на один учебник, в котором говорилось, что нужно добавить конфигурации сайтов в каталог сайтов, доступных (в / etc / apache), а затем добавить к нему символическую ссылку с сайтов с поддержкой. Настройка таким образом, кажется, работает.

Но теперь я в замешательстве - как мне настроить Apache? Кажется, что в большинстве уроков говорится, что я должен использовать httpd.conf. Какой из них я должен использовать? Какая разница? Почему все учебники "неправильные" (если они есть)?

Эдан Маор
источник

Ответы:

35

Этот sites-availableметод обычно считается «путем Debian»:

  • "основной" конфиг в /etc/apache2/apache2.conf
  • пользовательский конфиг в /etc/apache2/httpd.conf
  • Vhosts в /etc/apache2/sites-availableфайлах (по одному на файл, как правило)
    • Вы можете нумеровать их, например, 00-domain.com, 01-otherdomain.com
  • порты ( Listenдирективы) в/etc/apache2/ports.conf
  • моды в /etc/apache2/mods-available

Вы можете управлять ими с помощью символических ссылок или с помощью a2ряда команд:

a2ensite/a2dissite <site_config_filename>
a2enmod/a2dismod <module_name>

В зависимости от личных предпочтений, вы можете перезапустить Apache , используя apachectl, /etc/init.d/apache2 (start|stop|reload|restart)илиservice apache2 (start|stop|reload|restart)

Например, вы можете использовать httpd.confвместо записи vhost пример глобального правила перенаправления или перезаписи. Другие лакомые кусочки - как правило, вы должны оставить в apache2.confпокое и убедиться, что вы установили согласованную схему именования vhosts в sites-availableкаталоге.

Сэм Халике
источник
Отличное резюме! Гораздо понятнее и лаконичнее, чем тот, над которым я работал. +1.
Стивен Понедельник
2
Доступные сайты обеспечивают хорошую модульность конфигурации. Это позволяет легко сосредоточиться на конфигурации одного сайта. Это также значительно облегчает сравнение сайтов на сервере или перемещение или репликацию сайта между серверами.
BillThor
+1. Когда вам необходимо сохранить эти конфигурации, перейдите в раздел «сайты-включены» вместо «сайты-доступны» и получите доступ к ним напрямую оттуда. Таким образом, вы всегда сможете определить и получить доступ к текущим используемым настройкам сайта.
Росс
9

Расположение и организация файлов конфигурации настраивается и может меняться между основными выпусками или между дистрибутивами.

В Apache Wiki есть удобное руководство по именам и расположению файлов конфигурации.

Поскольку файлы конфигурации могут содержать includeдирективы, части конфигурации могут быть разделены на более мелкие файлы. Поскольку стандартный файл конфигурации Apache содержит много комментариев и множество стандартных элементов, имеет смысл выделить части, которые вы, скорее всего, измените.

Имя основного файла конфигурации можно изменить во время компиляции, а в последних выпусках оно изменилось с httpd.confнаapache2.conf

За прошедшие годы произошла некоторая эволюция в организации включенных файлов конфигурации.

Например, я установил Apache2 в системе на основе Ubuntu, используя apt-get install apache2- вот включенные файлы

/etc/apache2$ ls
apache2.conf  envvars     mods-available  ports.conf       sites-enabled
conf.d        httpd.conf  mods-enabled    sites-available

/etc/apache2$ grep ^Include apache2.conf
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/ 

/etc/apache2$ ls -l sites-enabled
total 0
lrwxrwxrwx 1 root root 26 Dec 26 12:30 000-default -> ../sites-available/default

Таким образом, некоторые настройки конфигурации, которые вам, вероятно, будут наиболее интересны, находятся сейчас /etc/apache2/sites-available/default.

Я вижу, что это согласуется с документацией Ubuntu для Apache, которую я рекомендую прочитать в первую очередь. Если у вас есть другая документация для более старых версий Apache (или других дистрибутивов), вы можете адаптировать эту информацию в соответствии с тем, как все организовано в Ubuntu.

RedGrittyBrick
источник
-2

Apache в Linux может быть установлен двумя типами. один с помощью apt-get, а другой загружает tar-файл и извлекает .... Таким образом, в процессе apt-get сайты обслуживаются из папки / etc / apache2 / sites-enabled, так как каждый сайт, обслуживающий внешний мир, настраивается в этих папках с помощью .conf files example 000-default.conf - это сайт по умолчанию, на котором можно увидеть работу apache.

таким образом, путем создания любого файла .conf на сайтах с включенной поддержкой и направления его в местоположение контента .. этот сайт обслуживается.

Таким образом, чтобы добавить новый статический сайт, в папке с поддержкой сайтов необходимо создать новый файл .conf с именем example.conf. и должен добавить следующие строки в нем

ServerAdmin webmaster @ localhost DocumentRoot / var / www / html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log вместе взятых

Где как *: 80 означает «открыть миру через порт 80» DocumentRoot / var / www / html указывает «путь к содержимому сайта»

Basutkar. Картик
источник
Это неправильно и вводит в заблуждение. Вы создаете свои файлы на доступных сайтах, чтобы могли работать такие инструменты (рекомендуется), как a2ensite. Обычно вы связываете эти conf-файлы с помощью a2ensite на сайты с поддержкой. apt-get не имеет ничего общего с настройкой ваших сайтов.
HörmannHH