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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
wiki:apache2 [2014/12/06 22:08]
[Модули]
wiki:apache2 [2016/08/08 20:52]
Строка 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//​.
  
-Свои настройки следует сохранять в директорию ///​etc/​apache2/​conf.d// .+<​code> ​      /​etc/​apache2/​ 
 +       |-- apache2.conf 
 +       ​| ​      ​`-- ​ ports.conf 
 +       |-- mods-enabled 
 +       ​| ​      |-- *.load 
 +       ​| ​      `-- *.conf 
 +       |-- conf-enabled 
 +       ​| ​      `-- *.conf 
 +       `-- sites-enabled 
 +               `-- *.conf 
 +</​code> ​
  
-**Начиная с версии Ubuntu Saucy (13.10)**+Настройки модулей расположены ​в директории ​///​etc/​apache2/​mods-available//​Для подключения модулей (настроек модулейследует создавать соответствующие ссылки используя команду:​ 
 +<code bash>​sudo a2enmod <​mod-name></​code>​
  
-Свои настройки следует сохранять в директорию ///​etc/​apache2/​conf-available//​ .+Свои настройки следует сохранять ​в файлы, расположенные ​в директории ///​etc/​apache2/​conf-available//​. ​Для подключения своих настроек следует создавать соответствующие ссылки используя команду:​ 
 +<code bash>​sudo a2enconf <​config-name></​code>​
  
-Для ​активации файла настройки следует выполнить команду:​ +Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории ///​etc/​apache2/​sites-available//​. Для подключения виртуальных хостов ​следует ​создавать соответствующие ссылки используя ​команду:​ 
-<code bash>​sudo ​a2enconf ​<config-file-name></​code>​+<code bash>​sudo ​a2ensite ​<site-name></​code>​ 
 + 
 + 
 +==== Кодировка по умолчанию ==== 
 + 
 +Для указания кодировки по умолчанию следует использовать директиву ''​AddDefaultCharset''​ в файле ///​etc/​apache2/​conf-available/​charset.conf//​ (или раскомментировать соответствующую строку):​
  
-=== Кодировка по умолчанию === 
 <​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''​ соответственно. Настройки модулей хранятся в директории ///​etc/​apache2/​mods-available//​. Для включения или отключения модулей используются ''​a2enmod''​ и ''​a2dismod''​ соответственно.
 +
 +=== mod_userdir ===
 +
 +Модуль ''​mod_userdir''​ позволяет использовать директории,​ находящиеся в домашних директориях пользователей для хранения веб страниц. По умолчанию Apache ищет запрашиваемые страницы в директории //​~/​public_html//​
 +<code bash>​mkdir ~/​public_html</​code>​
 +Чтобы включить ''​mod_userdir'',​ выполните:​
 +<code bash>​sudo a2enmod userdir</​code>​
 +и добавьте необходимого пользователя в группу www-data:
 +<code bash>​sudo adduser $USER www-data</​code>​
 +после чего перезагрузите Apache:
 +<code bash>​sudo service apache2 restart</​code>​
 +Страницы будут доступны по адресу %%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 ===== +==== Создание ключа и ssl-сертификата ==== 
-FIXME перенести сюда статью [[apache_и_https]]+ 
 +Использование самоподписанных сертификатов ​хоть и защищает от пассивного прослушивания, ​тем не менее не гарантирует клиентам,​ что ​сервер является именно тем сервером,​ который им нужен. Преимуществом самоподписанных сертификатов является ​их бесплатность. Сертификат, подписанный ​компанией-сертификатором (Certificate authority), стоит денег. 
 + 
 +Для создания ключа и сертификата вводим команду:​ 
 +<code bash>​openssl req -new -x509 -days 30 -keyout server.key -out server.pem</​code>​ 
 +На вопрос "Enter PEM pass phrase:"​ отвечаем паролем, подтверждаем и запоминаем. 
 + 
 +На все последующие вопросы отвечаем произвольноможно просто щелкать по <​key>​Enter</​key>, ​соглашаясь с предложенными вариантами, только ​на вопрос "​Common Name (eg, YOUR name) []:" отвечаем ​именем сайта, для которого создаем сертификат,​ например %%www.example.com%%. 
 + 
 +После ответа на все вопросы в директории должны появиться два новых файла --- ''​server.pem'' ​(ключ) и ''​server.crt''​ (сертификат). 
 + 
 +Чтобы использовать сгенерированный ключ, нужно знать пароль,​ введённый нами, и Apache будет спрашивать его у нас при загрузке,​ а к чему нам лишние вопросы от демонов?​ :) Поэтому снимаем пароль с ключа: 
 +<code bash> 
 +cp server.key{,​.orig} 
 +openssl rsa -in server.key.orig ​-out server.key 
 +rm server.key.orig 
 +</​code>​ 
 + 
 +Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:​ 
 +<code bash> 
 +sudo cp server.pem /​etc/​ssl/​certs/​ 
 +sudo cp server.key /​etc/​ssl/​private/​ 
 +sudo chmod 0600 /​etc/​ssl/​private/​server.key 
 +</​code>​ 
 + 
 +==== Настройка Apache ​==== 
 + 
 +Для начала необходимо активировать ''​mod_ssl'':​ 
 + 
 +<code bash> 
 +sudo a2enmod ssl 
 +</​code>​ 
 + 
 +А затем включить настройки HTTPS сайта по умолчанию:​ 
 + 
 +<code bash> 
 +sudo a2ensite default-ssl 
 +</​code>​ 
 + 
 +Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию,​ указав в нём пути к вашим сертификатам. Сам файл называется ''/​etc/​apache2/​sites-enabled/​default-ssl''​ (или ''/​etc/​apache2/​sites-enabled/​default-ssl.conf''​). 
 + 
 +В этом файле рекомендуется после директивы 
 + 
 +<code apache>​ 
 +SSLEngine on 
 +</​code>​ 
 + 
 +добавить строчку 
 + 
 +<code apache>​ 
 +SSLProtocol all -SSLv2 
 +</​code>​ 
 + 
 +чтобы запретить использование устаревшего протокола SSLv2. 
 + 
 +Дальше вам необходимо отредактировать параметры,​ ответственные за сертификаты. 
 + 
 +<code apache>​ 
 +# Публичный сертификат сервера 
 +SSLCertificateFile ​   /​etc/​ssl/​certs/​server.pem 
 +# Приватный ключ сервера 
 +SSLCertificateKeyFile /​etc/​ssl/​private/​server.key 
 +</​code>​ 
 + 
 +Теперь просто перезагрузите Apache: 
 + 
 +<code bash> 
 +sudo service apache2 restart 
 +</​code>​ 
 + 
 +И если все параметры указаны верно, ваши сайты станут доступны по HTTPS. <note important>​Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом,​ то необходимо на нём пробросить данный порт.</​note>​ 
 + 
 +==== Перенаправление HTTP запросов на HTTPS ==== 
 + 
 +Если вы хотите запретить использование HTTP, то самым разумным будет ​перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это ​с помощью ''​mod_alias''​. Если он не включён — включаем:​ 
 + 
 +<code bash> 
 +sudo a2enmod alias 
 +sudo service apache2 restart 
 +</​code>​ 
 + 
 +Затем изменяем файл ''/​etc/​apache2/​sites-enabled/​000-default'',​ отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву 
 +<code apache>​ 
 +Redirect / https://​example.com/​ 
 +</​code>​ 
 + 
 +При этом все настройки директорий можно удалить,​ поскольку по HTTP на ваши сайты всё равно будет не попасть. 
 + 
 +Всё, теперь ещё раз перезапустите Apache и убедитесь,​ что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS-страницу. 
 + 
 +===== Ссылки ==== 
 + 
 +  * [[http://​plashc.livejournal.com/​630.html|Источник]] 
 +  * [[http://​httpd.apache.org/​docs/​2.4/​rewrite/​avoid.html|When not to use mod_rewrite]]
  
 ===== Возможные проблемы ===== ===== Возможные проблемы =====
-Если при запуске появляется следующая ошибка\\ + 
-''​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 администрирование ​веб-сервер}}