Содержание

Apache HTTP Server на OS Windows

Apache 2.4 HTTP Server — установленный на ваш компьютер, позволяет превратить набор страниц в полностью отлаженный сайт с применением современных серверных технологий. Последний релиз стабильной ветви Apache HTTP Server 2.4.x, представляет собой наилучшую доступную версию.

Материал для программистов, разрабатывающих веб-приложения, желающих установить и использовать на персональном компьютере сервер Apache, для предварительного просмотра, проверки и отладки кода, в процессе разработки.
Данный раздел написан после многочисленных наблюдений за попытками, желающих (не очень хорошо знакомых с директивами и конфигурированием), установить на свой компьютер различные версии Web-сервера Apache. Большинство этих попыток заканчивалось на установке сервера Apache — получения страницы с сообщением — Вы видите это вместо ожидаемой страницы… или для версии 2.2. — It works!. Незначительная часть — на конфигурировании главного сервера, довольно редко — на установке виртуальных хостов. Просмотр материалов в сети Интернет, посвященных установке сервера Apache, позволяет сделать вывод — руководствуясь ими, не имеющий опыта пользователь не сможет добиться желаемого результата.

Поэтому, для установки и настройки на домашнем компьютере сервера Apache 2.4, предлагается на первом этапе:

  • установить Web-сервер Apache
  • внести изменения в три файла конфигурации

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

  • для главного сайта сервера Apache
  • для разрабатываемого вами сайта  — 

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

HTTP-сервер Apache — наиболее популярный web-сервер служащий для обработки и обслуживания запросов пользователей одной из составляющих WWW — сети Интернет. Apache HTTP Server — свободное, бесплатно распространяемое программное обеспечение с открытыми исходными кодами для современных операционных систем, включая UNIX и Windows, Novell NetWare и других. Его главные отличия от аналогичных программных продуктов: предельно компактный, написанный на языке C код, проверенная годами, надежная и стабильная работа на сотнях тысяч web-узлов, высокая производительность и скорость обработки запросов, расширяемость и переносимость, относительная простота и гибкость настройки для имеющих опыт администраторов.
Постоянная работа создателей и продолжателей проекта по улучшению и наращиванию новых возможностей, а также выпуск обновлений, делает сервер Apache одним из самых востребованных веб-серверов сети.
Тестирование новых версий тысячами профессионально подготовленных добровольных помощников, позволяет легко выявлять уязвимости и развиваться проекту со скоростью недоступной для большинства создателей web-серверов.
Цель проекта Apache HTTP Server Project — состоит в создании и развитии эффективного, безопасного, расширяемого сервера, который обеспечивает услуги HTTP в соответствии с текущими стандартами.
Apache известен как сервер, сыгравший ключевую роль на начальном этапе развития World Wide Web и продолжающий оставаться самым популярным в использовании сервером сети, служащим фактически базовой платформой, ориентируясь на которую разрабатываются и оцениваются другие серверы.
Первая версия веб-сервера Apache основанного на идеях и коде, самого популярного HTTP сервера того времени: NCSA — httpd 1.3 — была разработана в 1995 Робом Маккулом. В первую «Апачевскую Группу» разработчиков также входили: Брайен Бехлендорф, Рой Т. Fielding, Роб Хартилл, Дэвид Робинсон, Клифф Сколник, Рандай Тербуш, Роберт С. То, Эндрю Вайлсон, Эрик Хагберг, Франк Петерс и Николас Пиок.
C того времени в своем развитии Apache далеко превзошел базовую систему и может конкурировать, и вероятно превзойти, почти любой другой UNIX сервер HTTP по функциональным возможностям, эффективности и скорости. Так как, исходный код свободно доступен (open source software), любой желающий может сконфигурировать сервер под определенные потребности, используя модули сторонних производителей и большую общедоступную библиотеку дополнений.
На странице популярных вопросов официального сайта проекта указано, что имя — ‘Apache’ выбрано из уважения к коренному американскому индийскому племени Apache известному своей выносливостью и военными навыками. Самое, широко распространенное заблуждение — название ‘Apache’ произошло от «patch» (на компьютерном сленге — заплата). Имеется в виду, что в 1995 году веб-сервер Apache состоял из набора исправлений к базовому коду NCSA HTTPd 1.3 и поэтому «a patchy» сервер из …
Apache HTTP Server — основной сервер сети Интернет с открытым исходным кодом, на котором размещено большинство веб-сайтов мира. Сервер Апачи HTTP — часть из множества влиятельных проектов, разработанных Группой Апачи. Благодаря их усилиям, в значительной мере сформировалась WWW — всемирная паутина и они продолжают быть доминирующей силой в индустрии Web-хостинга.
Web-сервер Apache доступен для бесплатной загрузки с сайта разработчиков — httpd.apache.org.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с официальной документацией —

 httpd.apache.org

Установка Apache — все версии: apache 2.2, apache 2.4 .
При написании этого раздела не ставилась задача — ответить на все вопросы, связанные с назначением модулей, директив и их параметров сервера Apache 2.4. Да и большинство желающих изучить языки программирования, используемые при создании веб-приложений, не ставит перед собой цель — стать администратором сервера. Многим, домашний сервер нужен для проверки выполнения скриптов на Perl и PHP, директив SSI и их отладки. Без использования этих серверных технологий, написание страниц сайта только на языке HTTM — трудно назвать веб-программироанием.

Проводить тестирование сайта на сервере хостинг-провайдера неудобно и дорого, а тем, кто его не имеет — просто невозможно.
Главная задача этой публикации — помочь сократить, до двадцати минут, время установки и получения работающего сервера Apache.

Вы, на своем компьютере (называемым клиентом) в программе получившей название — web-браузер, вводите строку запроса в поле адреса. Обрабатывает ваш запрос программа, ожидающая сообщение о вызове и выполняющаяся на компьютере (сервере) с которым вы соединяетесь. Эта программа-демон, называемая Web-сервером. Обмен между демоном и приходящим от вашего компьютера сообщением, происходит посредством протокола HTTP, указанного в запросе. В равной степени могут использоваться другие протоколы: FTP. SMTP. POP, NNTP и прочие. Каждый протокол имеет уникальный идентификатор. Комбинация Web-браузера, протокола HTTP и Web-сервера сложнее других протоколов, так как её функции не ограничиваются передачей различных видов информации от одного узла к другому. Сообщения, посылаемые от Web-сервера к Web-браузеру, написаны на языке HTML. В этих сообщениях содержатся: инструкции, текст, скрипты на Perl, PHP, JavaScript и других языках, локальные и гиперссылки, ссылки на рисунки, звуковые и видео файлы, формы позволяющие вводить информацию и отправлять её на Web-сервер.

Сайт, в общем случае, — это набор страниц (файлов) связанных между собой локальными и глобальными ссылками. Пока выведем за скобки глобальные ссылки (гиперссылки) — ссылки со счетчиков на серверы статистики, почтовые серверы, тематические каталоги, поисковые системы и т. д. — для проверки работоспособности которых без выхода в Интернет не обойтись.
Практически невозможно разрабатывать и отлаживать скрипты на удалённом сервере
Страницы (файлы) непосредственно размещенные на сайте, связаны между собой локальными (внутри сайта) ссылками, позволяющими осуществлять переход от одной из них к другой, загружать файлы рисунков, содержимое других страниц, вызовы скриптов и многое другое. Если сайт состоит из одной страницы, то его можно не задумываясь размещать на сервере провайдера, так как вы, при загрузке её из Интернета, моментально увидите возможные ошибки. Но если сайт состоит из десятка страниц, то для проверки правильности вывода текстовой и графической информации, вывода данных из CGI-скриптов, SSI-директив, переходов на другие страницы сайта и пр., вам потребуются, при тестировании страниц сайта в Интернете, значительные временные и финансовые затраты.

Снизить вышеперечисленные затраты можно при отладке сайта на своем — локальном — компьютере (за счет отсутствия подключения к Интернету и высокой скорости загрузки), установив на него свой Web-сервер на платформе Windows. Для превращения компьютера в полноценный сервер принято устанавливать следующие пакеты программного обеспечения:

Документация входит в пакеты инсталляции программных продуктов.
На первый взгляд, вышеперечисленное выглядит неподъемным — как всё это изучить, установить, сконфигурировать и отладить? Но это не совсем так. Для эффективного проектирования, разработки и создания сайтов, в начале достаточно установить сервер Apache и, например — PHP или Perl.

 Зачем устанавливливать сервер Apache на Windows

Можно на Unix-подобных операционных системах, использовать входящий в их состав сервер Apache 2.4 (Ubuntu 14.04, Debian 8). Или, на OS Windows, службы Internet Information Services (IIS), в которых основным компонентом является веб-сервер — WWW (W3SVC). Но по данным StatCounter доля рынка операционной системы Linux в Европе в январе 2018 года составляла 1.03%. В то же время 64,9% веб-сайтов, использовали Unix/Unix-подобные операционные системы.

Установленный на OS Windows, полностью сконфигурированный сервер Apache 2.4 занимает ~ 50 Мбайт (папка Apache24 и два каталога с разрабатываемыми сайтами). Их копии — это всё, что нужно для переустановки или установки рабочего сервера Apache на любой компьютер за несколько минут.

Разрабатывать, отлаживать и тестировать сайт необходимо, с установленным на локальном компьютере сервере аналогичном тем, что предоставляют клиентам хостинг-провайдеры.
Здесь явным лидером является Apache. Будучи бесплатной открытой программой, предназначенной для бесплатных — же Unix-систем (FreeBSD, Linux и др.), Apache по функциональным возможностям и надежности не уступает коммерческим серверам, а широкие возможности конфигурирования позволяют настроить его для работы практически с любой конкретной системой. Существуют локализации сервера для различных языков. Возможна установка сервера Apache на OS Windows. Так как, настоящее время, Windiws-хостинг значительно дороже и менее надежен, многие по прежнему будут предпочитать Unix-хостинг с установленным сервером Apache.

×

Apache — почему версии 2.4 ?

Желательно всегда работать с последней версией программных продуктов, в которых учтены и исправлены все замечания и пожелания пользователей, добавлены новые возможности. Версия Apache 2.4 — является существенной переработкой кода версий Apache 2.x с целью повышения уровня мобильности и модульности.
В этой версии улучшены десятки модулей и программ, включено 23 новых модуля. В том числе, с версии 2.4.17, поддерживается протокол HTTP/2 ( 7540 RFC). Apache HTTP Server Project в сообщении о выпуске Apache HTTP сервера, версии 2.4 подчеркивает что этот выпуск является итогом двадцатилетней работы по разработке новой ветви проекта и рекомендуется как альтернатива всем предыдущим выпускам! Проект Apache отметил свое 20-летие в феврале 2015 года.
Первый альфа-релиз Apache 2 (Апачи) — был выпущен в марте 2000 года. Первая рабочая версия в мае 2002 года.

Установка и запуск сервера Apache на ОС Windows

Процесс установки сервера сводится к внесению изменений в три файла конфигурации и записи на диск двух каталогов

  • httpd.conf  —  главный файл конфигурации сервера
  • httpd-userdir.conf  —  файл настройки параметров каталогов пользователей
  • httpd-vhosts.conf  —  файл конфигурации виртуальных хостов

и внесении добавлений в файл OS Windows:

  • hosts  —  файл сопоставления имен узлов IP-адресам

Запись на диск двух шаблонов сайтов:

  • server-apache24.ru  —  каталога главного сайта сервера Apache
    (См. — Инсталляция Apache)
  • www  —  каталог с примерами сайтов виртуальных хостов.

Излишняя детализация, в описании установки и конфигурировании сервера Apache, интерпретаторов Perl и PHP — «нажмите на кнопку, введите точку и т. д.» — объясняется множеством обращений желающих установить на своём  компьютере Apache 2.2.16 HTTP Server, но не имеющих опыта установки и конфигурирования сервера, не работавших в Total Commander’е, без которого, в вопросах связанных с программированием — не обойтись.

Последняя версия Apache HTTP Server доступна на странице загрузки — Apache HTTP Software Foundation

 Apache на Window


  Установка сервера Apache на Windows

Установка Apache 2.4 возможна на следующих операционных системах:

Windows 10 ; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003 Service Pack 2; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP Service Pack 3

Два варианта установки сервера Apache на OS Windows

 Как установить, настроить и запустить Apache 2 на Microsoft Windows


1. Установка Apache используя инсталлятор Windows

Установщик (инсталлятор) Windows — (Microsoft Windows Installer) — это компонент операционной системы Windows, служащий для установки, восстановления и удаления программного обеспечения простым и удобным способом.
Всё, что необходимо для установки и правильной работы ПО, содержится в установочных пакетах (installation packages), имеющих расширение — .msi.

Для установки Apache из установочного пакета запустите (обязательно из корневого каталога диска) программу инсталляции сервера Apache, соответствующую установленной версии ОС. Например — apache_2.4.4-x64-no-ssl. msi


Запустите программу инсталляции — apache_2.4.4-x64-no-ssl. msi и в окне диалога Мастера Инсталляции нажмите кнопку Next.

Apache HTTP Server 2.4 — Installation Wizard
(HTTP-сервер Apache 2.4 — Мастер установки)

Далее, как обычно, следуйте указаниям мастера установки.

Раньше, до версии HTTPD-2.2.25, можно было выбрать последнюю версию инсталлятора Apache для Windiws. например, HTTPD-2.2.25-win32-x86-OpenSSL-0.9.8y.msi.
В настоящее время вы не сможете загрузить инсталляторы Apache со страницы загрузки — Apache Download binaries win32. Их нужно искать на сайтах сторонних производителей.

2. Загрузка исходных кодов Apache HTTP Server 2.4 для компиляции и установки на ОС Windows

Проект Apache HTTP Server не предоставляет дистрибутивы программного обеспечения. На apache.org можно получить только исходные коды.

Если вы не можете скомпилировать HTTP-сервера Apache самостоятельно, то загрузите пакет исполняемых файлов с сайтов коммиттеров, предоставляющих бинарные дистрибутивы.
Но это не официальные выпуски Apache Software Foundation.

Сервер Apache HTTPD для Microsoft Windows доступен для загрузки
с сайтов сторонних поставщиков.

Исполняемые файлы Apache созданы с оригинальных источников последних версий опубликованных Apache Software Foundation
Популярные варианты загрузки для установки Apache HTTPD на Microsoft Windows, и, необязательно, PHP и MySQL, возможны с сайтов сообществ разработчиков и любителей, которые предпочитают использовать Web-сервер Apache вместо IIS.
Установка Apache HTTPD v2.4 в качестве службы Windows
Для установки Apache HTTPD v2.4 в качестве службы Windows, проще получить скомпилированный HTTP-сервер Apache с сайта:
Например — Apache 2.4 VC15 Windows:
Apache Version 2.4 Win64 — httpd-2.4.29-Win64-VC15.zip
Apache Version 2.4 Win32 — httpd-2.4.29-Win32-VC15.zip
Там же можно скачать последнюю версию Windows® Visual Studio C ++ 2017: vc_redist_x64 или vc_redist_x86.

Или сайта

С указанных сайтов вы загрузите исполняемые файлы и модули последней версии Apache.

Убедитесь, что у вас установлена последняя версия C ++ Visual Studio 2017.

VCXX — означает, что сервер Apache скомпилирован с помощью Visual C++ XX.0 и чтобы установить его как службу Windows, нужно иметь на компьютере пакет Microsoft Visual C++ Redistributable Package (VCRedist) XX включающий в себя компоненты и библиотеки DLL, необходимые для выполнения программ написанных на С++.
XX — номер весии.


Для чего нужно устанавливать компонент Microsoft Visual C++ ?

Библиотеки

В языках программирования — C, C++, наряду со стандартными библиотеками определения макросов и типов, имеются множество рабочих статических и динамических библиотек функций, классов и ресурсов.

Две модели библиотек.
1.   Статические библиотеки — встраиваются в код исполняемого exe-файла.
2.   Динамически связываемые библиотеки — DLL (используемые в Windows) — не включаются в код программы.
Вместо этого приложение получает ссылку на динамическую библиотеку. Библиотеки DLL не являются программами и не могут выполняться как exe-файлы.

Для установки и выполнения, исполняемым файлам сервера Apache необходимы динамически связываемые библиотеки компонента C++ Redistributable Visual Studio (версия) — vc_redist_x64/86.exe.


Пакеты «все-в-одном»
Есть некоторые дистрибутивы для Windows — «все-в-одном», которые содержат полностью интегрированную и готовую к запуску среду разработки с Apache, PHP, MySQL и других приложений в одном установочном файле, например: Предназначенные для желающих изучить основы HTML (HyperText Markup Language — «язык гипертекстовой разметки») и серверных языков программирования необходимых для создания веб-приложений, не вникая в подробности установки HTTP-сервера Apache и пакетов программного обеспечения — php, mysql, perl, phpmyadmin, sendmail и пр.
Нет ничего плохого в использовании этих пакетов. Хотя установка, настройка и запуск Apache 2.4 в качестве службы Microsoft Windows вручную поможет вам узнать больше о системе и параметрах её конфигурации.
Установка сервера Apache 2.4 на Windows

avege.ru

WEB-сервер Apache. — Лунная База

Apache

Apache

Apache HTTP-сервер, назван именем группы племён североамериканских индейцев апачей; кроме того, является искажённым сокращением от англ. a patchy server; среди русских пользователей общепринято переводное апач) — свободный веб-сервер.

Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

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

Статьи по HTTP-серверу Apache

Подробности
Родительская категория: Серверы
Категория: Apache

Как передать реальный IP для Apache, работающем за прокси NGiNX

После того, как все настройки сервера в связке NGiNX + Apache сделаны, (читать по → этой ссылке), администратор сервера сталкивается в вопросом о том, как передать реальный IP пользователя web-серверу Apache, работающему за проксирующим NGiNX. И это не праздны вопрос и не тривиальная задача. Мало того, что в логи Апача пишутся IP не реальных пользователей, а IP локального NGiNX (127.0.0.1), то есть не несут никаких сведений о том, какой пользователь был на сайте, но и перестают работать все сервисы, привязанные к IP пользователю на сайтах. Как это быстро исправить, рассмотрим в этой статье.

Подробнее: Как передать реальный IP для Apache, работающем за прокси NGiNX

Подробности
Родительская категория: Серверы
Категория: Apache

Подключение модуля mpm-itk к серверу Apache под Debian 9

После установки модуля Apache libapache2-mpm-itk на сервер под ОС Debian 9, модуль находится на диске сервера, но для его работы, его нужно подключить к Апачу. Данный модуль служит для того, чтобы запускать процессы Apache с правами того пользователя, который является владельцем файлов сайта (по сути, владельцем сайта). О том, как это включить этот модуль и как проверить то, что модуль действительно подключился, рассмотрим в этой статье.

Подробнее: Подключение модуля mpm-itk к серверу Apache под Debian 9

Подробности
Родительская категория: Серверы
Категория: Apache

Установка сервера Apache 2 на сервер с ОС Debian 9

В этой статье подробно рассмотрим установку сервера Apache 2 на сервер с ОС Debian 9. В этом нет ничего сложного или замысловатого, но есть некоторые моменты (типа обновления списка пакетов и предварительного апгрейда системы) про которые легко забыть. Большой ошибки не будет в том, чтобы просто накатить и развернуть пакет Apache на сервере, но в целях безопасности дальнейшей работы всей системы, всё-таки лучше делать всё последовательно и обо всём вовремя вспоминать.

Подробнее: Установка Apache 2 на сервер с ОС Debian 9

Подробности
Родительская категория: Apache
Категория: apache2.conf

apache2.conf — конфиг Apache 2 в ISPmanager Lite 5 (Debian 8 связка NGiNX + Apache)

При переезде на новый сервер без ISPmanager нужно вручную правильно собрать связку NGiNX + Apache. Для того, чтобы было на что ориентироваться, если что-то пойдёт не так, я сохранил исходные конфиги серверов у себя на локальном компьютере. Но, для того, чтобы не лазить по архивам, выискивая нужные файлы, выкладываю конфиг Apache 2 в ISPmanager Lite 5 (Debian 8 связка NGiNX + Apache). К тому же удобнее смотреть в браузере и на сервере в Notepad++, чем в нескольких вкладках.

Подробнее: apache2.conf — конфиг Apache 2 в ISPmanager Lite 5 (Debian 8 связка NGiNX + Apache)

Подробности
Родительская категория: Серверы
Категория: Apache

Установка модуля Apache apache2-mpm-itk (libapache2-mpm-itk) на сервер под ОС Debian 9

WEB-сервер Apache по умолчанию работает таким образом, что все процессы запускаются под одним пользователем, и обычно это www-data. С одной стороны — это удобно, но с другой… Если на сервере, с настроенными виртуальными хостами, находится несколько сайтов, то при взломе злоумышленниками одного из них, как бы не были настроены права к папкам на сервере, с помощью Apache, можно получить доступ к файлам других сайтов, загрузив простейший файловый менеджер, который будет запускаться под пользователем www-data и, таким образом, иметь доступ во все папки, которые доступны через веб-интерфейс, если его запросы обрабатывает Apache.

Подробнее: Установка модуля Apache apache2-mpm-itk (libapache2-mpm-itk) на сервер под ОС Debian 9

mb4.ru

Apache HTTP Server | Русскоязычная документация по Ubuntu

Apache HTTP Server — проект, развиваемый The Apache Software Foundation, в рамках которого разрабатывается кроссплатформенный HTTP сервер с открытым исходным кодом. Входит в состав LAMP и XAMPP.

Версии Apache в Ubuntu

Ubuntu Apache
12.04 LTS (Precise) 2.2
14.04 LTS (Trusty) 2.4
15.10 (Wily) 2.4
16.04 LTS (Xenial) 2.4

Хостинг сайтов

Можно реализовать четырьмя способами:

  1. по умолчанию в папке /var/www/html. Доступом является http://localhost/

  2. настройки основного хостинга. Например, http://localhost/phpmyadmin

  3. в любой папке с помощью модуля виртуальных хостов. Например, http://mysite/

  4. в папке пользователя public_html (модуль userdir). Например, http://localhost/~username

Установка

Для установки Apache выполните в терминале:

sudo apt-get install apache2

Настройка

Для применения изменений в настройках необходимо перезапустить демон Apache:
sudo service apache2 restart

В Ubuntu конечный файл настройки (apache2.conf) расделён на несколько файлов, расположенных в разных поддиректориях. Подробней написано в комментариях файла apache2.conf.

       /etc/apache2/
       |-- apache2.conf
       |       `--  ports.conf
       |-- mods-enabled
       |       |-- *.load
       |       `-- *.conf
       |-- conf-enabled
       |       `-- *.conf
       `-- sites-enabled
               `-- *.conf

Настройки модулей расположены в директории /etc/apache2/mods-available. Для подключения или отключения модулей (настроек модулей) следует использовать соответствующие команды a2enmod или a2dismod. Пример подключения модуля:

sudo a2enmod <mod-name>

Свои настройки следует сохранять в файлы, расположенные в директории /etc/apache2/conf-available. Для подключения или отключения своих настроек следует использовать соответствующие команды a2enconf или a2disconf. Пример подключения файла со своими настройками:

sudo a2enconf <config-name>

Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории /etc/apache2/sites-available. Для подключения виртуальных хостов следует использовать соответствующие команды a2ensite или a2dissite. Пример подключения виртуального хоста:

sudo a2ensite <site-name>

Кодировка по умолчанию

Для указания кодировки по умолчанию следует использовать директиву AddDefaultCharset в файле /etc/apache2/conf-available/charset.conf (или раскомментировать соответствующую строку):

AddDefaultCharset UTF-8

Виртуальные хосты

Файлы настроек виртуальных хостов хранятся в /etc/apache2/sites-available/*.conf. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле 000-default.conf. Вы можете использовать этот виртуальный хост в качестве примера.

Пример настройки виртуального хоста:

<VirtualHost *:80>
    #Имя хоста
    ServerName host1.server1
    #Корневая папка хоста
    DocumentRoot /var/www/host1.server1
    <Directory /var/www/host1.server1>
        #Разрешение на перезапись всех директив при помощи .htaccess
        AllowOverride All
    </Directory>
</VirtualHost>

Назовите файл настройки именем вашего хоста host1.server1.conf и сохраните.

После создания файла настроек допишите в /etc/hosts имя вашего хоста:

127.0.0.1    host1.server1

Для включения созданного виртуального хоста используется утилита a2ensite:

sudo a2ensite host1.server1

Отключается хост аналогично утилитой a2dissite:

sudo a2dissite host1.server1

Модули

mod_userdir

Модуль mod_userdir позволяет использовать директории, находящиеся в домашних директориях пользователей для хранения веб страниц. По умолчанию Apache ищет запрашиваемые страницы в директории ~/public_html

mkdir ~/public_html

Чтобы включить mod_userdir, выполните:

sudo a2enmod userdir

и добавьте необходимого пользователя в группу www-data:

sudo adduser $USER www-data

после чего перезагрузите Apache:

sudo service apache2 restart

Страницы будут доступны по адресу http://localhost/~username, где username — имя пользователя.

Настройка public_html подробно.

CGI

Если Вы хотите запускать на сервере cgi-скрипты, подключите модуль cgi командой

sudo a2enmod cgi

По умолчанию cgi-скрипты размещаются в директории /usr/lib/cgi-bin, но вы можете разместить их где угодно, указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле /etc/apache2/conf-enabled/serve-cgi-bin.conf.

Eсли ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать cgi-скрипты вне корневой директории виртуального хоста

Настройка HTTPS в Apache

Веб-сервер Apache полностью поддерживает работу по HTTPS. Чтобы активировать поддержку HTTPS на уже установленном Apache, необходимо выполнить следующее.

Создание ключа и ssl-сертификата

Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преимуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанный компанией-сертификатором (Certificate authority), стоит денег.

Для создания ключа и сертификата вводим команду:

openssl req -new -x509 -days 30 -keyout server.key -out server.pem

На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем.

На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter, соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.

После ответа на все вопросы в директории должны появиться два новых файла — server.pem (ключ) и server.crt (сертификат).

Чтобы использовать сгенерированный ключ, нужно знать пароль, введённый нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? 🙂 Поэтому снимаем пароль с ключа:

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:

sudo cp server.pem /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key

Настройка Apache

Для начала необходимо активировать mod_ssl:

sudo a2enmod ssl

А затем включить настройки HTTPS сайта по умолчанию:

sudo a2ensite default-ssl

Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется /etc/apache2/sites-enabled/default-ssl (или /etc/apache2/sites-enabled/default-ssl.conf).

В этом файле рекомендуется после директивы

SSLEngine on

добавить строчку

SSLProtocol all -SSLv2

чтобы запретить использование устаревшего протокола SSLv2.

Дальше вам необходимо отредактировать параметры, ответственные за сертификаты.

# Публичный сертификат сервера
SSLCertificateFile    /etc/ssl/certs/server.pem
# Приватный ключ сервера
SSLCertificateKeyFile /etc/ssl/private/server.key

Теперь просто перезагрузите Apache:

sudo service apache2 restart

И если все параметры указаны верно, ваши сайты станут доступны по HTTPS.

Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.

Перенаправление HTTP запросов на HTTPS

Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью mod_alias. Если он не включён — включаем:

sudo a2enmod alias
sudo service apache2 restart

Затем изменяем файл /etc/apache2/sites-enabled/000-default, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву

Redirect / https://example.com/

При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.

Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS-страницу.

Ссылки

Возможные проблемы

Если при запуске появляется ошибка

apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

добавьте в свой файл конфигурации строку

ServerName localhost

Смотрите также

Ссылки

help.ubuntu.ru

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

Apache — это один из самых популярных веб-серверов для размещения сайтов на хостингах и VPS, а также для создания тестовых окружений. Если на вашем сервере один сайт, то все довольно просто, все запросы, поступающие к серверу, отправляется этот единственный сайт. А что если сайтов несколько? Как Apache будет понимать кому адресован запрос?

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

Содержание статьи:

Как работают виртуальные хосты Apache?

Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.

Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.

Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.ru. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.

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

Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:

  • /etc/apache2/sites-available
  • /etc/apache2/sites-enabled

Ясно, что это разделение очень условно. Вы можете его убрать и добавлять свои виртуальные хосты прямо в основной конфигурационный файл. Все файлы из этих папок подключаются к нему с помощью директив Include. Но ведь так намного удобнее. В папке sites-available находятся все конфигурационные файлы, но они пока еще не активированы и отсюда не импортируются никуда. При активации нужного хоста на него просто создается ссылка в папку /etc/apache2/sites-enabled.

Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:

$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/site1.ru.conf

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

<VirtualHost адрес_хоста_для прослушивания:порт>
ServerName домен
ServerAlias псевдоним_домена
ServerAdmin емейл@администратора
DocumentRoot /путь/к/файлам/сайта
ErrorLog /куда/сохранять/логи/ошибок/error.log
CustomLog /куда/сохранять/логи/доступа/access.log combined
</VirtualHost>

Это минимальная конфигурация, которую вам нужно указать, чтобы создать виртуальный хост Apache. Конечно, здесь вы можете использовать и другие директивы Apache, такие как Deny, Allow и многие другие. А теперь рассмотрим наш пример для тестового сайта site1.ru:

<VirtualHost *:80>
ServerName site1.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site1.ru/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:

sudo a2ensite site1.ru

Затем перезапустите Apache:

sudo systemctl restart apache2

И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:

sudo vi /etc/hosts

127.0.0.1 site1.ru

Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:

site1.ru

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

Если вы хотите использовать современный безопасный протокол https для работы вашего виртуального хоста, то вам кроме обычного хоста на порту 80 будет необходимо создать виртуальный хост на порту 443. Здесь будет не так много отличий, вот пример, для нашего сайта site1.ru:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName site1.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
</VirtualHost>
</IfModule>

Теперь о каждой новой строчке более подробно:

  • <IfModule mod_ssl.c> — весь код в этой секции будет выполнен только в том случае, если активирован модуль mod_ssl. Это нужно для безопасности, чтобы если модуль не активирован, то код не вызывал ошибок;
  • SSLEngine — включает поддержку SSL;
  • SSLCertificateFile, SSLCertificateKeyFile — пути к файлам сертификата и приватного ключа;
  • SSLOptions — для скриптов php, cgi и других мы передаем стандартные SSL опции.

Вот и все. Как видите, не так сложно. Осталось перезапустить Apache и проверить как все работает:

sudo a2enmod ssl
sudo a2ensite site1.ru-ssl
sudo systemctl restart apache2

Затем откройте https адрес в браузере:

https://site1.ru

 

Выводы

В этой статье мы рассмотрели как выполняется настройка виртуальных хостов Apache. Как видите, один веб-сервер может обслуживать сотни сайтов, а создание виртуальных хостов apache совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!

Оцените статью:

Загрузка…

losst.ru

Настройка HTTP/2 на примере Apache 2.4, PHP 7 и Ubuntu 18.04 LTS / Habr

Я понимаю, что, возможно, Апач на данный момент не является предпочтительным выбором для запуска на нём новых проектов, то тем не менее, он существует, здравствует и проекты на нём таки работают. Выбор на него может пасть по каким-то личным предпочтениям, по требованиям совместимости, или каким-то другим соображениям… не суть. В этой статье я хочу по пунктам описать, как настроить поддержку протокола HTTP/2 на веб-сервере Apache, потому что сам им пользуюсь и в такой статье нуждаюсь нуждался, и надеюсь, что кому-нибудь она тоже пригодится на практике.

Что такое HTTP/2? Как понятно из названия, это — вторая версия протокола HTTP. Подробнее о преимуществах Вы можете прочитать хотя бы на Википедии. От себя лишь скажу, что если Вы хоститесь не на шаред-хостинге, то поддерживать данный протокол — must have, как и, например, HTTPS. Да, для того, чтобы у Вас заработал HTTP/2, Вам потребуется полноценный доступ к консоли машины (пусть и к виртуальной) через ssh или каким-то иным образом, а также уже настроенный HTTPS (TLS/SSL). Ну что же, давайте приступим к делу.
Шаг первый. Обновление Apache

Протокол HTTP/2 поддерживается сервером Apache с версии 2.4.24, поэтому, если у Вас установлена более старая версия, — самое время её обновить. Но сначала проверим:
apache -v

Эта команда выдаст что-то вроде такого:
Server version: Apache/2.4.37 (Ubuntu)
Server built:   2018-10-28T15:27:08

В первой строчке указана версия сервера. Если она больше или равна 2.4.24, — можем смело переходить ко второму шагу. В противном случае, нужно обновить апач, актуальные версии которого Вы сможете найти в PPA известного (если Вам уже приходилось ставить что-то свеженькое на Debian/Ubuntu) разработчика — Ondřej Surý. PPA — это персональные пакеты, не включённые в официальные репозитории дистрибутивов. Поэтому, чтобы воспользоваться ими, сначала нужно научить систему, что и откуда брать:
sudo add-apt-repository ppa:ondrej/apache2

Парень делает хорошее дело, и не против получить небольшой донат, о чём весьма недвусмысленно заявляет при подключении к его репам…

Далее, собственно, обновляем пакеты:

sudo apt update
sudo apt upgrade

И снова проверяем версию Apache. Если всё прошло хорошо — на Вашем сервере будет стоять Apache, на котором можно настроить HTTP/2. Если всё пошло плохо — боюсь, это уже не тема данной статьи. А теперь переходим ко второму шагу.
Шаг второй. Использование FastCGI

Что такое FastCGI — лучше почитать, как я уже говорил, хотя бы в Википедии, потому что коротко не расскажешь. Вам нужно перейти на PHP, работающем в режиме FastCGI (php-fpm). Как это работает — дан хороший ответ на Тостере. Здесь же я в такие нюансы вдаваться не буду, а перейду сразу к установке:
sudo apt install php-fpm

После установки нам будет сказано буквально следующее: чтобы включить PHP 7.2 FPM в Apache2,  сделайте:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.2-fpm

Делаем. После этого нужно отключить mod_php, потому что вместо него у Вас теперь php-fpm.
sudo a2dismod php7.2

Вообще говоря, версия PHP у Вас до этого могла стоять другая. Глянуть, что за модули у Вас установлены в системе можно в директории /etc/apache2/mods-available/, а какие активны в /etc/apache2/mods-enabled

Далее перезапускаем Apache

sudo service apache2 restart

и переходим к третьему шагу.
Шаг третий. Переход с модуля Prefork на Event

Что такое MPM и в чём разница между prefork, event, worker — можно почитать вот в этой замечательной статье… но сейчас на самом деле важно знать только одно: «стандартный» prefork не очень совместим с HTTP/2, поэтому Вам нужно использовать более подходящий. Выключаем один, включаем другой, перезагружаем Apache.
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
service apache2 restart

Шаг четвёртый. Включаем HTTP/2

Либо в конфигурационный файл хоста, найти который можно в директории /etc/apache2/sites-enabled/, либо в конфиге самого сервера /etc/apache2/apache2.conf говорим, что нам нужна поддержка нового протокола:
Protocols h3 h3c http/1.1

Что действительно важно — это h3. Два других пункта — на Ваше усмотрение. h3c — это поддержка HTTP/2 через TCP (а не TLS). http/1.1 — поддержка старой версии HTTP.

Включаем модуль http2 и перезагружаем сервер:

sudo a2enmod http2
service apache2 restart

Приехали

С настоящего момента всё. Ваш ресурс должен начать работать по протоколу HTTP/2. Если вы пользуетесь Хромом, зайдя на ресурс, Вы увидете, как засветилась синим цветом пиктограмма молнии в правом верхнем углу браузера. Наведя на неё курсор, вы увидите подсказку HTTP/2-enabled(h3). В Firefox войдите в панель разработчика и на вкладке Network включите столбец Protocol — для ресурсов с вашего сайта должен значиться HTTP/2.0. Также, можно проверить, поддерживает ли ваш ресурс этот протокол на одном из множества сайтов в Сети. Но не стоит расслабляться, потому что уже на пятки наступает HTTP/3 🙂

habr.com

Установка и отладка веб-сервера для сайта в UBUNTU