Apache HTTP Server
Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:36, 27 июня 2016.
Последнее изменение этой страницы: 15:36, 27 июня 2016.
Разработчики: | Apache Software Foundation |
---|---|
Написана на: | C, XML |
Операционная система: | UNIX-like, Windows |
Тип ПО: | Веб сервер |
Веб-сайт | Apache.org |
Apache HTTP Server — проект, развиваемый The Apache Software Foundation, в рамках которого разрабатывается кроссплатформенный HTTP сервер с открытым исходным кодом. Входит в состав LAMP и XAMPP.
Содержание
Хостинг сайтов
Можно реализовать четырьмя способами:
- по умолчанию в папке
/var/www/htm
. Доступом являетсяhttp://localhost/
- настройки основного хостинга. Например,
http://localhost/phpmyadmin
- в любой папке с помощью модуля виртуальных хостов. Например,
http://mysite/
- в папке пользователя
public_html
(модульuserdir
). Например,http://localhost/~username
Установка
- Для установки Apache выполните в терминале:
$ sudo apt-get install apache2
Настройка
- Для применения изменений в настройках необходимо перезапускать демон Apache:
sudo service apache2 restart
- Свои настройки следует сохранять в директорию
/etc/apache2/conf.d
или/etc/apache2/conf-available
- Для активации файла настройки следует выполнить команду:
sudo a2enconf <config-file-name>
Кодировка по умолчанию
AddDefaultCharset UTF-8
Виртуальные хосты
- Файлы настроек виртуальных хостов хранятся в
/etc/apache2/sites-available
. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файлеdefault
(в новых версиях файл может называться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
и сохраните. - После создания файла настроек допишите в
/etc/hosts
имя вашего хоста:
127.0.0.1 host1.server1
- Для включения созданного виртуального хоста используется утилита a2ensite:
sudo a2ensite host1.server1
- Отключается хост аналогично утилитой a2dissite:
sudo a2dissite host1.server1
- Здесь
host1.server1
— имя файла настроек вашего хоста в/etc/apache2/sites-available
Модули
- Настройки модулей хранятся в директории
/etc/apache2/mods-available
. Для включения или отключения модулей используются a2enmod и a2dismod соответственно.
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 — имя пользователя.
CGI
- Если Вы хотите запускать на сервере cgi-скрипты, подключите модуль cgi командой
sudo a2enmod cgi
- По умолчанию cgi-скрипты размещаются в директории
/usr/lib/cgi-bin
, но вы можете разместить их где угодно, указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле/etc/apache2/conf-enabled/serve-cgi-bin.conf
. - Eсли ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать cgi-скрипты вне корневой директории виртуального хоста
PHP5
- Для включения поддержки PHP5 в качестве модуля Apache необходимо установить пакет
libapache2-mod-php5
:
sudo apt-get install libapache2-mod-php5
- Если же вы хотите установить PHP5 как отдельную CGI-программу, то установите пакет
php5-cgi
sudo apt-get install php5-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-страницу.
Ссылки
1.Help.ubuntu.ru/wiki/apache2
2.wikipedia.org
3.wiki.archlinux.org/
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.