каталог личных
объявлений

antivan. Дом проектов

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.

Если я сэкономил вам много времени и нервов, можете сказать спасибо.
Оно мне очень пригодится.