Apache HTTP Server

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:36, 27 июня 2016.
Apache HTTP Server
fraimed
Разработчики: 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/