Apache для самых маленьких. Установка
Во времена, когда почти все стало вебом, умение обращаться с Web-сервером - важно. Но Apache используется и в локальных сетях. Поэтому навыки его установки и настройки должны быть у каждого админа.
Далее по контексту будет понятно, с какой операционной системой мы работаем в данный момент. Но начнем с Windows, как наиболее распространенной. Если ты учишься, скорее всего у тебя именно эта ОС.
Дистрибутив
Для ОС Windows существует несколько сборок Apache. Не будем сейчас разбираться в том, что это за сборки, почему их много, кто их делает и зачем. Просто берем установочник тут. Естественно, самый свежий, и под свою платформу Win64\Win32.
Могут пригодиться vc_redist_x64 или vc_redist_x86 с этой же страницы.
Распаковка
Извлекаем из архива папку Apache24 и кладем ее куда угодно, избегаем при этом путей с пробелами, кириллицей и прочими символами из нелатинского алфавита:
C:\Apache24\
нас вполне устроит.
Файл конфигураци
Нужно отредактировать под себя файл:
conf\httpd.conf
Дальше приведу минимальный рабочий конфиг с комментариями:
# куда мы все распаковали
Define SRVROOT "C:/Apache24"
# Все пути Apace будет строить от ServerRoot, ожидать исполняемые файлы, конфиг, библиотеки
ServerRoot "${SRVROOT}"
# Apache будет слушать этот порт
Listen 80
# загружаем модули
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule log_config_module modules/mod_log_config.so
# этот адрес Apache будет показывать на некоторых страницах с ошибками
ServerAdmin admin@example.com
# по-умолчанию запрещаем апачу доступ ко всем папкам, и запрещаем переопределять это правило через .htaccess (об этом позднее)
<Directory />
AllowOverride none
Require all denied
</Directory>
# Метод HTTP TRACE* позволяет клиенту отправить запрос на сервер, и сервер возвращает полный полученный запрос обратно.
# Цель метода: отладка и диагностика. Можно увидеть, какие заголовки проходят через прокси и серверы.
# TRACE может быть использован для Cross-Site Tracing (XST) атак, чтобы украсть куки или авторизационные данные, что создает проблема безопасности.
TraceEnable off
# Отключаем поддержку метода TRACE.
# После этого сервер не будет отвечать на TRACE-запросы, и любой попытка выполнить TRACE вернёт ошибку 405 Method Not Allowed.
# отсюда будут отдаваться web-сервером файлы, при обращении по ip-адресу ПК или по localhost
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs"> # но у апача нет доступа ни к чему, этот раздел снимает ограничение с этой директории
# если открываем директорию, а в ней нет файла по-умолчанию (будет задан позднее) - покажем список файлов (может быть угрозой безопасности, а может быть удобным доступом к скачиванию файлов), следовать за символическими ссылками
Options Indexes FollowSymLinks
# все также не разрешаем переопределять параметры через .htaccess
AllowOverride None
# читать разрешаем все
Require all granted
# но только двумя методами, т.к никакого взаимодействия с пользователем в данный момент у нас нет
<LimitExcept GET HEAD>
Require all denied
</LimitExcept>
</Directory>
# если модуль загружен, то выполняем блок
<IfModule dir_module>
# если пользователь обращается к директории, Apache ищет в ней файлы по порядку и первый найденный отдает
DirectoryIndex index.html index.htm default.htm
</IfModule>
# этот блок говорит Apache, что файлы, начинающиеся на ".ht*", а это чувствительные .htaccess, .htpasswd, .htconfig, отдавать нельзя
# опция важная, даже если у нас сейчас таких файлов нет - оставляем на будущее
<Files ".ht*">
Require all denied
</Files>
# с логами будем разбираться позднее, пусть пишутся
# тем не менее, не забываем контролировать размер, при большой нагрузке могут очень даже разрастись
ErrorLog "logs/error.log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access.log" common
</IfModule>
# если Apache загрузил mime_module (а такую команду мы давали), загружаем mime-типы
# Apache использует эти данные, чтобы при отдаче файлов клиенту поставить правильный заголовок Content-Type
# блок необязательный, но его отсутствие может вызвать проблемы. оставим
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
Установка
В командной строке запускаем:
httpd -k install
и, если все сделали правильно, на 80м порту никакая программа не запущена, не требуется установка дополнительных компонентов, то сообщений об ошибках не будет. Значит можно отрывать в браузере http://localhost и радоваться сообщению: It works!
Кроме того, добавиться служба Apache2.4, которая будет стартовать автоматически.
Пост-установка
Мы запустили Apache для локального использования. Можно “выкладывать” свой сайт и тестировать его.
Если хотим, чтоб наш сайт был доступен из локальной сети, то нужно открыть 80й порт в файрволе/антивирусе. А если хотим, чтоб сайт был доступен из интернета, то нужно еще заказать у интернет провайдера услугу “белый IP” и на роутере настроить переадрессацию обращений на 80й порт на свой ПК.
Вот так все.
Другие статьи о конфигурировании Web-сервера Apache можно найти по тегу apache.