• Что Такое Apache? Подробный Обзор Веб-Сервера Apache. Apache: установка и настройка веб-сервера

    Самым популярным на сегодняшний момент является веб-сервер Apache . Сегодня я расскажу вам как быстро и правильно установить apache . Вашему вниманию будет представлено пошаговое описание процесса установки веб-сервера, которое будет сопровождаться скриншотами экрана.

    Приступим!

    Так как проект расчитан на начинающих веб разработчиков, то для простоты настройки и установки ПО мы будем программировать под Windows. По мере набора опыта, вы легко сможете “переехать” на *nix платформу.

    Итак, для начала нам необходимо скачать последнюю версию дистрибутива Apache (4.6 Mb). На момент написания этой заметки – это версия 2.2.10. К моменту прочтения этого текста, ваша версия может быть более новой, но это не меняет сути. Каких-либо коренных отличий быть не должно.

    Находим на странице раздел “Apache HTTP Server 2.2.10 is the best available version ” (лучшая доступная версия) и там выбираем дистрибутив для Windows – “Win32 Binary without crypto (no mod_ssl) (MSI Installer) ” (установочный файл без поддержки SSL, т.к. для наших уроков SSL нам не понадобиться):

    Итак, мы скачали установочный файл apache_2.2.10-win32-x86-no_ssl.msi . Запускаем установщик:

    Просто нажимаем Next.

    Принимаем лицензионное соглашение и нажимаем Далее.

    На этом этапе заполняем поля, так как указано на картинке. Эти данные прописываются в конфигурационный файл и могут быть в дальнейшем отредактированы.

    Я настоятельно рекомендую вам установить Apache именно в эту папку (она предлагается по умолчанию). Следующие уроки будут посвящены установке и настройке PHP и MySQL. Я буду ориентироваться именно на этот путь установки Apache. Так что, если после установки Apache вам не нужны лишние проблемы с прикручиванием к нему PHP и MySQL, то советую прислушаться к моим словам. В дальнейшем, когда вы пару раз сами поставите и сможете настроить apache , вы установите его в удобную для вас директорию.

    Подготовка к установке завершена. Нажимаем Install и ждем пока завершиться установка.

    Поздравляю, установка Apache завершена!

    Если у кого-то возникли трудности в установке – пишите в комментариях. Я постараюсь помочь.

    Последнее обновление: 20.10.2017

    Загрузим пакет веб-сервера Apache с сайта http://www.apachelounge.com/ . Выберем последнюю версию сервера. На странице загрузок мы можем найти две версии пакета Apache - для 64-битных систем и для 32-битных.

    Перед установкой Apache следует отметить, что если наша ОС Windows, то в системе должны быть установлен пакет для C++, который можно найти по адресу для 64-битной и для 32-битной .

    После загрузки пакета с Apache распакуем загруженный архив. В нем найдем папку непосредственно с файлами веб-сервера - каталог Apache24 . Переместим данный каталог на диск C, чтобы полный путь к каталогу составлял C:/Apache24 .

    Теперь нам надо установить Apache в качестве службы Windows. Для этого запустим командную строку Windows от имени администратора и перейдем в каталог веб-сервера с помощью команды

    httpd.exe -k install

    Если установка завершится удачно, то в командная строка отобразит сообщение "The Apache2.4 service is successfully installed". Также будет проведено тестирование сервера:

    В моем случае, как отображено выше на картинке, Apache не смог подключиться к порту 80, который стоит по умолчанию в конфигурации, так как у меня порт 80 прослушивается другим веб-сервером - IIS. Это одна из распространенных проблем при запуске Apache. Чтобы ее решить, нам надо либо отключить службу IIS, либо указать для Apache новый порт. Я выберу второй путь.

    После установки проведем конфигурацию сервера, чтобы связать его с ранее установленным интерпретатором PHP. Для этого в папке C:\Apache24\conf найдем файл httpd.conf и откроем его в текстовом редакторе.

    Файл httpd.conf настраивает поведение веб-сервера. Мы не будем подобно затрагивать его описания, а только лишь произведем небольшие изменения, которые потребуются нам для работы с PHP.

    Во-первых, найдем строку

    Listen 80

    Это строка указывает на прослушиваемый порт. По умолчанию 80-й порт. Если конфликтов с портами не возникает можно оставить так, как есть. Я же изменю на 8080 порт.

    #ServerName www.example.com:80

    и изменим на

    ServerName localhost:8080

    Теперь подключим PHP. Для этого найдем в файле httpd.conf конец блока загрузки модулей LoadModule

    //...................... #LoadModule watchdog_module modules/mod_watchdog.so #LoadModule xml2enc_module modules/mod_xml2enc.so

    И в конце этого блока добавим строчки

    LoadModule php7_module "C:/php/php7apache2_4.dll" PHPIniDir "C:/php"

    DocumentRoot "c:/Apache24/htdocs"

    По умолчанию в качестве хранилища документов используется каталог "c:/Apache24/htdocs". Заменим эту строку на следующую:

    DocumentRoot "c:/localhost"

    Изменим пути файлам, в которые будут заноситься сведения об ошибках или посещении сайта. Для этого найдем строку

    ErrorLog "logs/error.log"

    И заменим ее на

    ErrorLog "c:/localhost/error.log"

    CustomLog "logs/access.log" common

    И заменим ее на

    CustomLog "c:/localhost/access.log" common

    И также найдем блок и добавим в него две строчки:

    AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps

    И в конце найдем блок :

    DirectoryIndex index.html

    И заменим его на следующий:

    DirectoryIndex index.html index.htm index.shtml index.php

    Это минимально необходимая конфигурация, которая нужна для работы с PHP. Чтобы управлять сервером (запускать, останавливать, перезапускать), мы можем использовать утилиту, которая идет в комплекте - . Данную утилиту можно найти в каталоге C:\Apache24\bin

    Запустим утилиту. В трее появится значок ApacheMonitor. Нажмем на него и в появившемся контекстном меню выберем пункт Start.

    Если у нас все настроено правильно, то должен запустить веб-сервер.

    Теперь наша задача - убедиться, что php подключен и работает правильно. Для этого перейдем в папку c:/localhost , которую мы создали для хранения документов, и добавим в нее обычный текстовый файл. Переименуем его в index.php и внесем в него следующее содержание:

    В данном случае мы создали простейший скрипт, который выводит общую информацию о PHP. Теперь обратимся к этому скрипту, набрав в строке браузера адрес http://localhost:8080/index.php

    Что тут произошло? При обращении к сайту на локальной машине в качестве адреса указывается http://localhost . Так как мы указали в качестве порта 8080, то также в адресе указывается через двоеточие порт. Если бы мы использовали 80-й порт, который используется по умолчанию, то его не надо было указывать.

    Затем указывается имя ресурса, к которому идет обращение. В данном случае в качестве ресурса используется файл index.php . И так как в файле httpd.conf в качестве хранилища документов веб-сервера указан каталог C:\localhost , то именно в этом каталоге и будет веб-сервер будет производить поиск нужных файлов.

    И поскольку выше при конфигурировании мы указали, что в качестве главной страницы может использоваться файл index.php , то мы можем также обратиться к этому ресурсу просто http://localhost:8080/

    На этом установка и настройка веб-сервера Apache завершена, и мы можем создавать свои сайты.

    Apache - это популярнейший свободный веб-сервер. Состоянием на 2016 год он используется на 33% всех сайтов интернета, а это приблизительно 304 миллиарда сайтов. Этот веб-сервер был разработан в далеком 1995, как замена для популярного того сервера NCSA и исправил множество его проблем. Ходят слухи что его имя походит от a patchy, заплатка, так как он исправлял ошибки NCSA. Сейчас же, это кроссплатформенная программа, поддерживающая Windows, Linux и MacOS и обеспечивающая достаточную гибкость, настраиваемость и функциональность. Программа имеет модульную структуру, что позволяет расширять ее функциональность почти до бесконечности с помощью модулей.

    Установить Apache в Linux можно с помощью нескольких команд, но программа предоставляет очень большое количество настроек, которые можно изменить, а также модулей, после включения которых она будет работать лучше. В этой статье будет рассмотрена установка и настройка Apache, в качестве основной системы мы будем использовать Ubuntu, но вы можете повторить эти действия в любом другом дистрибутиве. Будет рассмотрена не только установка самой программы, но и способы ее настройки, настройка виртуальных хостов apache, а также самые полезные модули.

    На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4. Как я уже говорил, в Linux программа устанавливается буквально в пару команд. Для установки в Ubuntu сначала обновим систему до самой новой версии:

    sudo apt update
    $ sudo apt upgrade

    Затем установка apache2:

    sudo apt install apache2

    В других дистрибутивах пакет программы называется либо так, либо httpd и его установка у вас не вызовет трудностей.

    После завершения установки нужно добавить веб-сервер в автозагрузку, чтобы не запускать его вручную после включения компьютера:

    sudo systemctl enable apache2

    Настройка Apache

    Уже прошло то время, когда конфигурация Apache хранилась в одном файле. Но оно и правильно, когда все распределено по своим директориям, в конфигурационных файлах легче ориентироваться.

    Все настройки содержатся в папке /etc/apache/:

    • Файл /etc/apache2/apache2.conf отвечает за основные настройки
    • /etc/apache2/conf-available/* - дополнительные настройки веб-сервера
    • /etc/apache2/mods-available/* - настройки модулей
    • /etc/apache2/sites-available/* - настойки виртуальных хостов
    • /etc/apache2/ports.conf - порты, на которых работает apache
    • /etc/apache2/envvars

    Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.

    Сначала давайте рассмотрим главный файл конфигурации:

    vi /eta/apache2/apache2.conf

    Timeout - указывает как долго сервер будет пытаться продолжить прерванную передачу или прием данных. 160 секунд будет вполне достаточно.

    KeepAlive On - очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.

    MaxKeepAliveRequests 100 - максимальное количество запросов за одно соединение, чем больше, тем лучше.

    KeepAliveTimeout 5 - таймаут соединения, обычно для загрузки страницы достаточно 5-10 секунд, так что больше ставить не нужно, но и рвать соединение раньше чем загрузились все данные тоже не нужно.

    User, Group - пользователь и группа, от имени которых будет работать программа.

    HostnameLookups - записывать в логи вместо ip адресов доменные имена, лучше отключить, чтобы ускорить работу.

    LogLevel - уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error

    Include - все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.

    Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:


    Параметр значение

    Здесь доступны такие основные опции:

    AllowOverride - указывает нужно ли читать.htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All - разрешать все, None - не читать эти файлы.

    DocumentRoot - устанавливает из какой папки нужно брать документы для отображенияа пользователю

    Options - указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All - разрешить все, FollowSymLinks - переходить по символическим ссылкам, Indexes - отображать содержимое каталога если нет файла индекса.

    Require - устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied - всем запретить, Require all granted - всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.

    Order - позволяет управлять доступом к директории. Принимает два значения Allow,Deny - разрешить для всех, кроме указанных или Deny,Allow - запретить для всех, кроме указанных..ru.

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

    У нас остался файл /etc/apache2/ports.conf:

    В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.

    Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.

    Настройка сервера Apache через htaccess

    Файлы.htaccess позволяют настраивать веб-сервер на Ubuntu для поведения в определенной директории. Все инструкции, указанные в этом файле выполняются как бы они были обвернуты в тег если бы находились в основном файле.

    Важно заметить, что для того, чтобы сервер читал инструкции из.htaccess настройки для этой папки в основном файле или файле виртуального хоста не должны содержать AllowOverride None , чтобы могли работать все настройки нужно AllowOverride All .

    А в остальном, здесь может выполняться любая настройка сервера apache, от включения модулей, до обычного изменения доступа к папке. Поскольку все параметры мы уже рассмотрели просто приведем пару примеров:

    Order Deny,Allow
    Deny from all

    Запрещает всем доступ к этой папке, важно применить, для папок с конфигурацией. Чаще всего.htaccess используется для работы с модулем mod_rewrite, который позволяет изменять запросы на лету:

    RewriteEngine on
    RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

    Но это очень обширная тема и выходит за рамки этой статьи.

    Настройка модулей Apache

    Как я уже говорил, Apache - модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.

    Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:

    Включить модуль можно командой:

    sudo a2enmod имя_модуля

    А отключить:

    sudo a2dismod имя_модуля

    После включения или отключения модулей нужно перезагрузить apache:

    sudo systemctl restart apache2

    Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:

    vi /etc/apache2/mods-available/deflate.load

    Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.

    Настройки модулей находятся в той же папке, только в файле с расширением.conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:

    vi /etc/apache2/mods-available/deflate.conf

    Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:

    a2enconf имя_модуля

    a2disconf имя модуля

    Как вы убедились, включать модули очень просто. Давайте включим несколько необходимых, но не включенных по умолчанию модулей:

    sudo a2enmod expires
    $ sudo a2enmod headers
    $ sudo a2enmod rewrite
    $ sudo a2enmod ssl

    Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.

    Настройка виртуальных хостов Apache

    Было бы не совсем удобно, если на одной физической машине можно было размещать только один сайт. Apache может поддерживать сотни сайтов на одном компьютере и выдавать для каждого из них правильное содержимое. Для этого используются виртуальные хосты. Сервер определяет к какому домену приходит запрос и отдает нужное содержимое из папки этого домена.

    Настройки хостов Apache расположены в папке /etc/apache2/hosts-available/. Для создания нового хоста достаточно создать файл с любым именем (лучше кончено с именем хоста) и заполнить его нужными данными. Обернуть все эти параметры нужно в директиву VirtualHost. Кроме рассмотренных параметров здесь будут использоваться такие:

    • ServerName - основное имя домена
    • ServerAlias - дополнительное имя, по которому будет доступен сайт
    • ServerAdmin - электронная почта администратора
    • DocumentRoot - папка с документами для этого домена

    Например:

    vi /etc/apache2/sites-available/test.site.conf

    Apache HTTP-сервер - это так называемый свободный веб-сервер, представляющий собой кросплатформенное программное обеспечение. Apache поддерживает следующие операционные системы: BSD, Microsoft Windows, Linux, Mac OS, BeOS, Novell NetWare.

    Как правильно настроить Apache?

    Обычно настройка Apache-сервера происходит через файл.htaccess (детальная инструкция). Этот файл лежит на сервере, на котором находится ваш сайт. А сам сервер считывает его содержимое и применяет настройки, которые там указаны. Ниже мы перечислим основные параметры которые изменяются в файле.htaccess и будут полезны для вебмастеров.

    Автоматические перенаправления с одной страницы на другую

    • Перенаправление с http://www.site.com на http://site.com
    • Обратное перенаправление с http://site.com на http://www.site.com
    • Переезд со старого домена на новый
    • site.com/page или site.com/page/ перенаправляем на site.com/page.html
    • Обратное с site.com/page.html на site.com/page
    • Убираем слеш в конце url-а (было site.com/page/, стало site.com/page)
    • Перенаправление всех страниц одного раздела site.com/razdel-1/razdel-2/page на на страницы другого раздела site.com/razdel-1/page

    Обработка ошибок

    • Если произойдет ошибка, то пользователю вместо стандартной лабуды, покажет красивую страничку, которую зададите вы.

    Настройка безопасности сайта

    • Защита от инъекций
    • Защита от кражи картинок
    • Блокирование пользователей по IP
    • Защита файлов и папок
    • Работа с User-агентами

    Кодировка страниц сайта

    • Работа с кодировкой страниц сайта, на уровне сервера.

    Оптимизация работы сайта

    • Ускорение работы сайта
    • Работа с кэшированием
    • Изменение главной страницы сайта

    Настройки PHP

    • Работа с параметрами PHP, которые задаются на уровне сервера.

    Информация про Apache

    Надежность и гибкость конфигурации главные достоинства Apache. Благодаря этому ПО можно осуществлять подключение внешних модулей, использующихся для предоставления данных, модифицировать сообщения об ошибках, применять СУБД для аутентификации пользователей. Apache поддерживает IPv6.

    Начиная с апреля 1996 года и до настоящего времени Apache является самым распространенным и популярным HTTP-сервером в сети Интернет. Согласно статистическим данным в августе 2007 HTTP-сервером работал на 51% всех веб-серверов, в мае 2009 года этот показатель снизился до 46%, а в январе 2011 года вырос до 59%. На сегодняшний день более 59% от общего количества веб-сайтов обслуживаются веб-сервером Apache. Разработкой и поддержкой Apache занимаются специалисты открытого сообщества разработчиков под эгидой Apache Software Foundation. Apache включен в большинство программных продуктов, среди которых IBM WebSphere и СУБД Oracle.

    Apache оснащен встроенным механизмом виртуальных хостов. Благодаря этому на одном IP-адресе можно обслуживать большое количество веб-проектов (доменных имен), при этом отображая для каждого из них свое содержимое. Для каждого виртуального хоста имеется возможность указать свои настройки модулей и ядра, а также установить ограничения к доступу ко всему сайту либо некоторым файлам. С помощью Apache-ITK для каждого виртуального хоста можно запускать процесс httpd с идентификаторами gid и uid. Также есть модули, которые позволяют ограничивать и учитывать ресурсы сервера (трафик, RAM, CPU) отдельно для каждого виртуально хоста.

    В данном разделе мы с вами будем разбираться с тем, как работает HTTP сервер Apache . Начнем мы, конечно, с установки Apache на Windows. Нужно отметить, что большинство хостингов в качестве веб-сервера используют Apache, поэтому любому веб-мастеру необходимо знать основы работы с этим сервером.

    В этой записи мы с вами разберемся для чего вообще нужен веб-сервер, затем поговорим про некоторые особенности сервера Apache и установим его на компьютер под управлением Windows, а в завершении мы посмотрим на ошибки, которые могут возникнуть при установке Apache на Windows 7 и выше.

    Что такое веб-сервер Apache и для чего он нужен?

    Мы знаем, что взаимодействие в сети Интернет можно полностью описать или эталонной моделью. Для веб-разработчика наибольший интерес представляют протоколы и технологии, находящиеся на шестом и седьмом уровне эталонной модели. Из всех протоколов седьмого уровня нам более всех интересен , в основе которого лежит архитектура клиент-сервер.

    Мы это сделали следующим образом: в корне диска С создали папку Server, внутри которой создали еще четыре папки: apache, tmp, www, log, php. Не все папки мы будем использовать в данной инструкции. Всё это отображено на рисунке ниже.

    В папке www мы создали простой , который назвали Index.html со следующим содержимым:

    Проверочная страница

    Apache в действие

    < ! DOCTYPE html >

    < html lang = "ru-RU" >

    < head >

    < meta charset = "UTF-8" >

    < title > Проверочнаястраница< / title >

    < link rel = "stylesheet" type = "text/css" href = "style.css" / >

    < / head >

    < body >

    < h1 > Apache вдействие< / h1 >

    < / body >

    < / html >

    В этом документе только один и если мы сможем открыть его по завершении установки веб-сервера Apache, то мы все сделали правильно. Для дальнейшей установки веб-сервера нам нужно .