Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:apache2 [2014/05/07 19:06] [Настройка] |
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 /etc/init.d/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//. Для подключения или отключения модулей (настроек модулей) следует использовать соответствующие команды ''a2enmod'' или ''a2dismod''. Пример подключения модуля: |
+ | <code bash>sudo a2enmod <mod-name></code> | ||
- | Свои настройки следует сохранять в директорию ///etc/apache2/conf-available// . | + | Свои настройки следует сохранять в файлы, расположенные в директории ///etc/apache2/conf-available//. Для подключения или отключения своих настроек следует использовать соответствующие команды ''a2enconf'' или ''a2disconf''. Пример подключения файла со своими настройками: |
+ | <code bash>sudo a2enconf <config-name></code> | ||
- | Для активации файла настройки следует выполнить команду: | + | Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории ///etc/apache2/sites-available//. Для подключения виртуальных хостов следует использовать соответствующие команды ''a2ensite'' или ''a2dissite''. Пример подключения виртуального хоста: |
- | <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. Вы можете использовать этот виртуальный хост в качестве примера. | + | |
+ | Файлы настроек виртуальных хостов хранятся в ///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> |
+ | </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> | ||
Строка 46: | Строка 88: | ||
==== Модули ==== | ==== Модули ==== | ||
- | Настройки модулей хранятся в директории ///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 администрирование веб-сервер}} |