Apache HTTP Server Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:apache2 [2016/01/24 11:29]
[Модули]
wiki:apache2 [2016/08/08 21:07] (текущий)
Строка 1: Строка 1:
 ====== Apache HTTP Server ====== ====== Apache HTTP Server ======
-**Apache HTTP Server** -- проект,​ развиваемый [[http://​apache.org|The Apache Software Foundation]],​ в рамках которого разрабатывается кроссплатформенный HTTP сервер с открытым исходным кодом. Входит в состав [[LAMP]] и [[XAMPP]].+ 
 +**Apache HTTP Server** ​--- проект,​ развиваемый [[http://​apache.org|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 | 
 + 
 + 
 +===== Хостинг сайтов ===== 
 + 
 +Можно реализовать четырьмя способами:​ 
 +  - по умолчанию в папке /​var/​www/​html. Доступом является %%http://​localhost/​%% 
 +  - настройки основного хостинга. Например,​ %%http://​localhost/​phpmyadmin%% 
 +  - в любой папке с помощью модуля виртуальных хостов. Например,​ %%http://​mysite/​%% 
 +  - в папке пользователя public_html (модуль userdir). Например,​ %%http://​localhost/​~username%%
  
 ===== Установка ===== ===== Установка =====
 +
 Для установки Apache выполните в терминале:​ Для установки Apache выполните в терминале:​
 <code bash>​sudo apt-get install apache2</​code>​ <code bash>​sudo apt-get install apache2</​code>​
  
 ===== Настройка ===== ===== Настройка =====
 +
 <​note>​Для применения изменений в настройках необходимо перезапустить демон Apache: <​note>​Для применения изменений в настройках необходимо перезапустить демон Apache:
 <code bash>​sudo service apache2 restart</​code></​note>​ <code bash>​sudo service apache2 restart</​code></​note>​
  
-**До версии ​Ubuntu Raring (13.04) включительно**+В Ubuntu конечный файл настройки (apache2.conf) расделён на несколько файлов,​ расположенных в разных поддиректориях. Подробней написано в комментариях файла //​apache2.conf//​. 
 + 
 +<​code> ​      /​etc/​apache2/​ 
 +       |-- apache2.conf 
 +       ​| ​      ​`-- ​ ports.conf 
 +       |-- mods-enabled 
 +       ​| ​      ​|-- ​*.load 
 +       ​| ​      ​`-- ​*.conf 
 +       |-- conf-enabled 
 +       ​| ​      `-- *.conf 
 +       `-- sites-enabled 
 +               `-- *.conf 
 +</​code>​  
 + 
 +Настройки модулей расположены в директории ///​etc/​apache2/​mods-available//​Для подключения или отключения модулей (настроек модулейследует использовать соответствующие команды ''​a2enmod''​ или ''​a2dismod''​. Пример подключения модуля:​ 
 +<code bash>​sudo a2enmod <​mod-name></​code>​ 
 + 
 +Свои настройки следует сохранять в файлы, расположенные в директории ///​etc/​apache2/​conf-available//​. Для подключения или отключения своих настроек следует использовать соответствующие команды ''​a2enconf''​ или ''​a2disconf''​. Пример подключения файла со своими настройками:​ 
 +<code bash>​sudo a2enconf <​config-name></​code>​
  
-Свои настройки следует сохранять в директорию ///​etc/​apache2/​conf.d// .+Настройки ​виртуальных хостов ​следует сохранять ​в файлы, расположенные ​в директории ///​etc/​apache2/​sites-available//. Для подключения виртуальных хостов следует использовать соответствующие команды ''​a2ensite''​ или ''​a2dissite''​. Пример подключения виртуального хоста:​ 
 +<code bash>​sudo a2ensite <​site-name></​code>​
  
-**Начиная с версии Ubuntu Saucy (13.10)** 
  
-Свои настройки следует сохранять в директорию ///​etc/​apache2/​conf-available//​ .+==== Кодировка по умолчанию ​====
  
-Для активации файла настройки следует ​выполнить команду: +Для ​указания ​кодировки по умолчанию следует ​использовать директиву ''​AddDefaultCharset''​ в файле ///​etc/​apache2/​conf-available/​charset.conf//​ (или раскомментировать соответствующую строку):
-<code bash>​sudo a2enconf <​config-file-name></​code>​+
  
-=== Кодировка по умолчанию === 
 <​file>​AddDefaultCharset UTF-8</​file>​ <​file>​AddDefaultCharset UTF-8</​file>​
  
 ==== Виртуальные хосты ==== ==== Виртуальные хосты ====
-Файлы настроек виртуальных хостов хранятся в ///​etc/​apache2/​sites-available//​ . По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле ​default (в новых версиях файл может называться ​000-default.conf). Вы можете использовать этот виртуальный хост в качестве примера.+ 
 +Файлы настроек виртуальных хостов хранятся в ///​etc/​apache2/​sites-available/*.conf//. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле ​//000-default.conf//. Вы можете использовать этот виртуальный хост в качестве примера.
  
 Пример настройки виртуального хоста: Пример настройки виртуального хоста:
-<​file><​VirtualHost *:80>+<​file>​ 
 +<​VirtualHost *:80>
     #Имя хоста     #Имя хоста
     ServerName host1.server1     ServerName host1.server1
Строка 37: Строка 75:
         AllowOverride All         AllowOverride All
     </​Directory>​     </​Directory>​
-</​VirtualHost></​file>​ +</​VirtualHost>​ 
-Назовите файл настройки именем ​Вашего хоста host1.server1 и сохраните.+</​file>​ 
 + 
 +Назовите файл настройки именем ​вашего хоста host1.server1.conf и сохраните.
  
 После создания файла настроек допишите в /etc/hosts имя вашего хоста: После создания файла настроек допишите в /etc/hosts имя вашего хоста:
-<file>​127.0.0.1 ​   host1.server1</​file>+<code>​127.0.0.1 ​   host1.server1</​code>
 Для включения созданного виртуального хоста используется утилита ''​a2ensite'':​ Для включения созданного виртуального хоста используется утилита ''​a2ensite'':​
 <code bash>​sudo a2ensite host1.server1</​code>​ <code bash>​sudo a2ensite host1.server1</​code>​
 Отключается хост аналогично утилитой ''​a2dissite'':​ Отключается хост аналогично утилитой ''​a2dissite'':​
 <code bash>​sudo a2dissite host1.server1</​code>​ <code bash>​sudo a2dissite host1.server1</​code>​
-Здесь host1.server1 это имя файла настроек Вашего хоста в ///​etc/​apache2/​sites-available//​ 
  
 ==== Модули ==== ==== Модули ====
-Настройки модулей хранятся в директории ///​etc/​apache2/​mods-available//​. Для включения или отключения модулей используются ''​a2enmod''​ и ''​a2dismod''​ соответственно. 
  
 === mod_userdir === === mod_userdir ===
-Модуль ''​mod_userdir''​ позволяет использовать директории находящиеся в домашних директориях пользователей для хранения веб страниц. По умолчанию Apache ищет запрашиваемые страницы в директории //​~/​public_html//​+ 
 +Модуль ''​mod_userdir''​ позволяет использовать директориинаходящиеся в домашних директориях пользователей для хранения веб страниц. По умолчанию Apache ищет запрашиваемые страницы в директории //​~/​public_html//​
 <code bash>​mkdir ~/​public_html</​code>​ <code bash>​mkdir ~/​public_html</​code>​
-Для того чтобы включить ''​mod_userdir''​ выполните ​+Чтобы включить ''​mod_userdir''​выполните:
 <code bash>​sudo a2enmod userdir</​code>​ <code bash>​sudo a2enmod userdir</​code>​
-и добавьте необходимого пользователя в группу www-data.+и добавьте необходимого пользователя в группу www-data:
 <code bash>​sudo adduser $USER www-data</​code>​ <code bash>​sudo adduser $USER www-data</​code>​
-после чего перезагрузите Apache+после чего перезагрузите Apache:
 <code bash>​sudo service apache2 restart</​code>​ <code bash>​sudo service apache2 restart</​code>​
-Страницы будут доступны по адресу http://​localhost/​~username , где username ​это ​имя пользователя. [[wiki:​настройка_public_html|Настройка public_html подробно]] . +Страницы будут доступны по адресу ​%%http://​localhost/​~username%%, где username ​--- имя пользователя. ​ 
 + 
 +[[wiki:​настройка_public_html|Настройка public_html подробно]].
  
 === CGI === === CGI ===
 +
 Если Вы хотите запускать на сервере cgi-скрипты,​ подключите модуль ''​cgi''​ командой Если Вы хотите запускать на сервере cgi-скрипты,​ подключите модуль ''​cgi''​ командой
 <code bash>​sudo a2enmod cgi</​code>​ <code bash>​sudo a2enmod cgi</​code>​
-По умолчанию cgi-скрипты размещаются в директории ///​usr/​lib/​cgi-bin//,​ но Вы можете разместить их где угодно,​+По умолчанию cgi-скрипты размещаются в директории ///​usr/​lib/​cgi-bin//,​ но вы можете разместить их где угодно,​
 указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле
 ///​etc/​apache2/​conf-enabled/​serve-cgi-bin.conf//​. ///​etc/​apache2/​conf-enabled/​serve-cgi-bin.conf//​.
  
-<note warning>​Eсли ​Ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать +<note warning>​Eсли ​ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать cgi-скрипты вне корневой директории виртуального хоста</​note>​
-cgi-скрипты вне корневой директории виртуального хоста!</​note>​+
    
-=== PHP5 ==+===== Настройка HTTPS в Apache =====
-Для включения поддержки [[PHP5]] в качестве модуля Apache необходимо установить пакет ''​libapache2-mod-php5'':​ +
-<code bash>​sudo apt-get install libapache2-mod-php5</​code>​+
  
-Если же Вы хотите установить [[PHP5]] как отдельную CGI-программу, то установите ​пакет ''​php5-cgi''​ +Веб-сервер [[Apache]] полностью поддерживает работу по HTTPS. Чтобы ​активировать поддержку HTTPS на уже установленном Apache, необходимо выполнить следующее.
-<code bash>​sudo apt-get install php5-cgi</​code>​+
  
-====== Настройка HTTPS в Apache ====== +==== Создание ключа и ssl-сертификата ==== 
-Веб-сервер [[Apache]] полностью поддерживает работу по HTTPS. Для того, чтобы активировать поддержку HTTPS на уже установленном Apache необходимо выполнить следующее. + 
-====== Создание ключа и ssl-сертификата ====== +Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания,​ тем не менее не гарантирует клиентам,​ что сервер является именно тем сервером,​ который им нужен. Преимуществом самоподписанных сертификатов является их бесплатность. Сертификат,​ подписанный компанией-сертификатором (Certificate authority)стоит денег.
-Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания,​ тем не менее не гарантирует клиентам,​ что сервер является именно тем сервером,​ который им нужен. Преймуществом самоподписанных сертификатов является их бесплатность. Сертификат,​ подписанных компанией-сертификатором (Certificate authority) стоит денег.+
  
 Для создания ключа и сертификата вводим команду:​ Для создания ключа и сертификата вводим команду:​
 <code bash>​openssl req -new -x509 -days 30 -keyout server.key -out server.pem</​code>​ <code bash>​openssl req -new -x509 -days 30 -keyout server.key -out server.pem</​code>​
 На вопрос "Enter PEM pass phrase:"​ отвечаем паролем,​ подтверждаем и запоминаем. На вопрос "Enter PEM pass phrase:"​ отвечаем паролем,​ подтверждаем и запоминаем.
-На все последующие вопросы отвечаем произвольно,​ можно просто щелкать по Enter соглашаясь с предложенными вариантами,​ только на вопрос "​Common Name (eg, YOUR name) []:" отвечаем именем сайта, для которого создаем сертификат,​ например www.example.com. 
  
-После ответа на все вопросы в директории должны ​появиться два новых файла - server.pem и server.crt (ключ и сертификат, ​соответственно).+На все последующие вопросы ​отвечаем произвольно, можно просто щелкать по <​key>​Enter</​key>,​ соглашаясь с предложенными вариантами, только на вопрос "​Common Name (eg, YOUR name) []:" отвечаем именем сайта, для которого создаем ​сертификат, ​например %%www.example.com%%.
  
-Чтобы использовать сгенерированный ключ нужно знать пароль введенный нами, и Apache будет спрашивать его у нас при загрузке,​ а к чему нам лишние вопросы от демонов?​ :) Поэтому снимаем пароль с ключа:​ +После ответа на все вопросы в директории должны появиться два новых файла --- ''​server.pem''​ (ключ) и ''​server.crt''​ (сертификат). 
-<code bash>cp server.key{,​.orig}+ 
 +Чтобы использовать сгенерированный ключнужно знать парольвведённый нами, и Apache будет спрашивать его у нас при загрузке,​ а к чему нам лишние вопросы от демонов?​ :) Поэтому снимаем пароль с ключа:​ 
 +<code bash> 
 +cp server.key{,​.orig}
 openssl rsa -in server.key.orig -out server.key openssl rsa -in server.key.orig -out server.key
-rm server.key.orig</​code>​+rm server.key.orig 
 +</​code>​
  
 Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:​ Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:​
Строка 100: Строка 140:
 sudo cp server.pem /​etc/​ssl/​certs/​ sudo cp server.pem /​etc/​ssl/​certs/​
 sudo cp server.key /​etc/​ssl/​private/​ sudo cp server.key /​etc/​ssl/​private/​
-sudo chmod 0600 /​etc/​ssl/​private/​server.key</​code>​+sudo chmod 0600 /​etc/​ssl/​private/​server.key 
 +</​code>​ 
 + 
 +==== Настройка Apache ====
  
-====== Настройка Apache ====== 
 Для начала необходимо активировать ''​mod_ssl'':​ Для начала необходимо активировать ''​mod_ssl'':​
  
Строка 129: Строка 171:
 </​code>​ </​code>​
  
-дабы запретить использование устаревшего протокола SSLv2.+чтобы запретить использование устаревшего протокола SSLv2.
  
 Дальше вам необходимо отредактировать параметры,​ ответственные за сертификаты. Дальше вам необходимо отредактировать параметры,​ ответственные за сертификаты.
Строка 148: Строка 190:
 И если все параметры указаны верно, ваши сайты станут доступны по HTTPS. <note important>​Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом,​ то необходимо на нём пробросить данный порт.</​note>​ И если все параметры указаны верно, ваши сайты станут доступны по HTTPS. <note important>​Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом,​ то необходимо на нём пробросить данный порт.</​note>​
  
-===== Перенаправление HTTP запросов на HTTPS =====+==== Перенаправление HTTP запросов на HTTPS ====
  
 Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью ''​mod_alias''​. Если он не включён — включаем:​ Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью ''​mod_alias''​. Если он не включён — включаем:​
Строка 164: Строка 206:
 При этом все настройки директорий можно удалить,​ поскольку по HTTP на ваши сайты всё равно будет не попасть. При этом все настройки директорий можно удалить,​ поскольку по HTTP на ваши сайты всё равно будет не попасть.
  
-Всё, теперь ещё раз перезапустите Apache и убедитесь,​ что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу. +Всё, теперь ещё раз перезапустите Apache и убедитесь,​ что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS-страницу. 
-======Ссылки=====+ 
 +===== Ссылки ==== 
   * [[http://​plashc.livejournal.com/​630.html|Источник]]   * [[http://​plashc.livejournal.com/​630.html|Источник]]
   * [[http://​httpd.apache.org/​docs/​2.4/​rewrite/​avoid.html|When not to use mod_rewrite]]   * [[http://​httpd.apache.org/​docs/​2.4/​rewrite/​avoid.html|When not to use mod_rewrite]]
- 
-{{tag>​Администрирование Веб_сервер Apache HTTPS HTTP SSL}} 
  
 ===== Возможные проблемы ===== ===== Возможные проблемы =====
-Если при запуске появляется следующая ошибка\\ + 
-''​apache2: Could not determine the server'​s fully qualified domain name, using 127.0.0.1 for ServerName''​\\ +Если при запуске появляется ошибка 
-добавьте в свой файл конфигурации строчку +<​code>​apache2: Could not determine the server'​s fully qualified domain name, using 127.0.0.1 for ServerName</​code>​ 
-<file>​ServerName localhost</​file>+добавьте в свой файл конфигурации строку 
 +<code>​ServerName localhost</​code>
  
 ===== Смотрите также ===== ===== Смотрите также =====
 +
   * [[nginx]]   * [[nginx]]
   * [[lighttpd]]   * [[lighttpd]]
 +  * [[wiki:​настройка_public_html|Настройка public_html]]
  
 ===== Ссылки ===== ===== Ссылки =====
  
   * [[http://​httpd.apache.org/​|Официальный сайт Apache HTTP Server]] (англ.)   * [[http://​httpd.apache.org/​|Официальный сайт Apache HTTP Server]] (англ.)
-  * [[http://​ru.wikipedia.org/​wiki/​Apache|Статья в википедии.]]+  * [[wpru>Apache|Статья в «Википедии»]]
   * [[http://​ubuntuforums.org/​showthread.php?​t=1038416|Apache worker with php5]] (англ.)   * [[http://​ubuntuforums.org/​showthread.php?​t=1038416|Apache worker with php5]] (англ.)
  
-{{tag>​apache администрирование сервер ​httpd lamp}}+{{tag>​apache ​httpd http https lamp SSL администрирование ​веб-сервер}}