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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
wiki:apache2 [2014/03/20 02:47]
опечатка2
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 /etc/init.d/​apache2 ​restart</​code></​note>+<code bash>​sudo ​service apache2 restart</​code></​note>​ 
 + 
 +В 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//​. Для подключения модулей (настроек модулей) следует создавать соответствующие ссылки используя команду:​ 
 +<code bash>​sudo a2enmod <​mod-name>​</code
 + 
 +Свои настройки следует сохранять в файлы, расположенные в директории ///​etc/​apache2/​conf-available//​. Для подключения своих настроек следует создавать соответствующие ссылки используя команду:​ 
 +<code bash>​sudo a2enconf <​config-name></code> 
 + 
 +Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории ///​etc/​apache2/​sites-available//​. Для подключения виртуальных хостов следует создавать соответствующие ссылки используя команду:​ 
 +<code bash>​sudo a2ensite <​site-name></​code> 
 + 
 + 
 +==== Кодировка по умолчанию ====
  
-Свои настройки следует сохранять в директорию ///​etc/​apache2/​conf.d// .+Для указания кодировки по умолчанию ​следует ​использовать директиву ''​AddDefaultCharset''​ в файле ​///​etc/​apache2/​conf-available/​charset.conf// (или раскомментировать соответствующую строку):​
  
-=== Кодировка по умолчанию === 
 <​file>​AddDefaultCharset UTF-8</​file>​ <​file>​AddDefaultCharset UTF-8</​file>​
  
 ==== Виртуальные хосты ==== ==== Виртуальные хосты ====
-Файлы настроек виртуальных хостов хранятся в ///​etc/​apache2/​sites-available//​ . По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле default. Вы можете использовать этот виртуальный хост в качестве примера.+ 
 +Файлы настроек виртуальных хостов хранятся в ///​etc/​apache2/​sites-available/*.conf//. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле ​//000-default.conf//. Вы можете использовать этот виртуальный хост в качестве примера.
  
 Пример настройки виртуального хоста: Пример настройки виртуального хоста:
-<​file><​VirtualHost *:80>+<​file>​ 
 +<​VirtualHost *:80>
     #Имя хоста     #Имя хоста
     ServerName host1.server1     ServerName host1.server1
Строка 28: Строка 75:
         AllowOverride All         AllowOverride All
     </​Directory>​     </​Directory>​
-</​VirtualHost></​file>​+</​VirtualHost>​ 
 +</​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>​
Строка 37: Строка 88:
  
 ==== Модули ==== ==== Модули ====
 +
 Настройки модулей хранятся в директории ///​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''​ командой
 +<code bash>​sudo a2enmod cgi</​code>​
 +По умолчанию cgi-скрипты размещаются в директории ///​usr/​lib/​cgi-bin//,​ но вы можете разместить их где угодно,​
 +указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле
 +///​etc/​apache2/​conf-enabled/​serve-cgi-bin.conf//​.
 +
 +<note warning>​Eсли ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать cgi-скрипты вне корневой директории виртуального хоста</​note>​
    
-=== PHP5 ==+===== Настройка HTTPS в Apache ​=====
-Для включения поддержки [[PHP5]] ​в Apache ​необходимо установить пакет ''​libapache2-mod-php5'':​ +
-<code bash>​sudo apt-get install libapache2-mod-php5</​code>​+
  
-===== Поддержка ​HTTPS ===== +Веб-сервер [[Apache]] полностью поддерживает работу по HTTPS. Чтобы активировать поддержку HTTPS на уже установленном Apache, необходимо выполнить следующее. 
-FIXME перенести сюда статью [[apache_и_https]]+ 
 +==== Создание ключа и ssl-сертификата ​==== 
 + 
 +Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания,​ тем не менее не гарантирует клиентам,​ что сервер является именно тем сервером,​ который им нужен. ​Преимуществом самоподписанных сертификатов является их бесплатность. Сертификат,​ подписанный компанией-сертификатором (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>apache2 ​администрирование сервер ​httpd}}+{{tag>apache httpd http https lamp SSL администрирование ​веб-сервер}}