Это старая версия документа.


HTTPD - Apache2 интернет сервер

Apache - наиболее используемый интернет-сервер на линукс системах. Интернет-сервера используются для выдачи интернет-страниц по запросу клиентских компьютеров. Клиенты обычно запрашивают и просматривают интернет-страницы используя приложения интернет-браузеров, таких как Firefox, Opera, Chromium или Mozilla.

Пользователи вводят единообразный указатель ресурсов (URL) для определения интернет-сервера по его полностью квалифицированному доменному имени (FQDN) и пути до требуемого ресурса. Например, чтобы увидеть домашнюю станицу интернет-сайта Ubuntu, пользователь должен ввести только FQDN:

www.ubuntu.com

Для просмотра страницы о сообществе [Ubuntu] пользователь должен ввести следующий путь:

www.ubuntu.com/community

Наиболее распространенный протокол, используемый для передачи интернет-страниц, - это гипертекстовый протокол передачи (HTTP). Такие протоколы, как HTTP поверх SSL (HTTPS) и протокол передачи файлов (FTP) - протокол для загрузки и получения файлов, также используются.

Интернет-сервера Apache обычно используются в комбинации с движком базы данных MySQL, языком сценариев гипертекстового препроцессора (PHP) и другими популярными языками сценариев, таких как Python И Perl. Эта конфигурация получила название LAMP (Linux, Apache, MySQL and Perl/Python/PHP) и формирует мощную и крепкую платформу для разработки и развертывания интернет-приложений.

Установка

Интернет-сервер Apache2 доступен в Ubuntu Linux. Для установки Apache2:

  1. В терминале введите следующую команду:

sudo apt-get install apache2

Настройка

Apache2 настраивается помещением инструкций (directives) в обычные тестовые файлы настроек. Эти инструкции разделены между следующими файлами и каталогами:

  1. apache2.conf: основной файл настроек Apache2. Содержит глобальные настройки для всего Apache2.

  2. conf.d: (каталог) содержит файлы настроек, которые применяются глобально к Apache2. Другие пакеты, которые используют Apache2 для предоставления контента, могут добавлять файлы или символьные ссылки в этот каталог.

  3. envvars: файл, где устанавливаются переменные окружения Apache2.

  4. httpd.conf: устаревший основной файл настроек Apache2, названный по имени сервиса httpd. Теперь этот файл обычно пустой, поскольку большинство опций настроек были перемещены в каталоги, упомянутые далее. Файл может быть использован для для специфичных настроек пользователя, имеющих глобальный эффект в Apache2.

  5. mods-available: этот каталог содержит конфигурационные файлы как для загрузки модулей, так и для их настройки. Тем не менее не все модули имеют отдельные файлы настройки.

  6. mods-enabled: содержит символьные ссылки на файлы в /etc/apache2/mods-available. Когда создается символьная ссылка на файл настроек модуля, он включается при следующем рестарте apache2.

  7. ports.conf: содержит инструкции, которые определяют какие TCP порты прослушивает Apache2.

  8. sites-available: этот каталог содержит файлы настроек для виртуальных сетевых узлов (Virtual Hosts) Apache2. Виртуальные сетевые узлы позволяют настраивать Apache2 на множество сайтов с отдельными конфигурациями.

  9. sites-enabled: подобно mods-enabled содержит символьные ссылки на каталог /etc/apache2/sites-available. Аналогично, когда файл настроек из sites-available получает здесь символьную ссылку, соответствующий ему сайт будет активен при следующем перезапуске Apache2.

В дополнение к этому другие файлы настроек могут быть добавлены с использованием инструкции Include, а символы группировок могут использоваться для включения множества файлов настроек. Любая инструкция может быть добавлена в любой из этих файлов настроек. Изменения в основных конфигурационных файлах распознаются только после старта или рестарта Apache2.

Сервер также читает файлы, содержащие типы mime документов; имя файла задается инструкцией TypesConfig, обычно через /etc/apache2/mods-available/mime.conf, который также может включать дополнения и переопределения, а по умолчанию используется /etc/mime.types.

Общие настройки

Этот раздел рассматривает существенные параметры настройки сервера Apache2. Обратитесь к документации по Apache2 для уточнения деталей.

1. Apache2 по умолчанию поставляется с конфигурацией, дружественной к виртуальным хостам. Это означает, что он изначально настроен с единственным виртуальным хостом (используя инструкцию VirtualHost) который может быть изменен или использоваться как есть, если у вас единственный сайт, либо использоваться как шаблон для дополнительных виртуальных хостов, если у вас несколько сайтов. Если оставить его единственным, изначальный виртуальный хост будет обслуживать ваш сайт по умолчанию или пользователи сайта заметят, что введенный ими URL не совпадает с инструкцией ServerName любого из ваших созданных сайтов. Для изменения начального виртуального хоста отредактируйте файл /etc/apache2/sites-available/default.

Инструкции, установленные для виртуального хоста, влияют только на соответствующий виртуальный хост. Если инструкция установлена на весь сервер и не установлена в настройках виртуального хоста, используется общая настройка. Например, вы можете определить email адрес вебмастера и не определять его отдельно для каждого виртуального хоста.

Если вы хотите настроить новый виртуальный хост или сайт, скопируйте этот файл в тот же каталог с новым именем. Например:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite

Отредактируйте новый файл для настройки нового сайта, используя инструкции, описанные ниже.

2. Инструкция ServerAdmin определяет адрес email для оповещения администратора сервера. Изначальное значение webmaster@localhost. Его надо изменить на ваш email адрес (если именно вы являетесь администратором сервера). Если возникает проблема с сайтом, Apache2 показывает сообщение об ошибке, содержащее этот адрес для оповещения о проблеме. Ищите эту инструкцию в файле настроек вашего сайта в каталоге /etc/apache2/sites-available.

3. Инструкция Listen определяет порт, и в общем случае IP адрес, на которых Apache2 должен ожидать соединения. Если IP адрес не определен, Apache2 будет прослушивать все IP адреса, которые назначены компьютеру, где он запущен. Значение по умолчанию для Listen 80. Замените его на 127.0.0.1:80 чтобы Apache2 прослушивал только интерфейс внутренней петли, что сделает его недоступным из интернета; на 81 (например) для изменения порта доступа или оставьте как есть для стандартного функционирования. Эта инструкция может быть найдена и изменена в единственном файле /etc/apache2/ports.conf.

4. Инструкция ServerName необязательная и определяет на какой адрес FQDN ваш сайт должен отвечать. Изначальный виртуальный хост не имеет ServerName, поэтому отвечает на все запросы не соответствующие директивам ServerName других виртуальных хостов. Если вы приобрели доменное имя ubunturocks.com и хотите прописать его на вашем Ubuntu сервере, значение ServerName для файла настроек вашего виртуального хоста должно быть ubunturocks.com. Добавьте эту инструкцию в файл нового виртуального хоста, который вы создавали ранее (/etc/apache2/sites-available/mynewsite).

Возможно вы захотите, чтобы ваш сайт откликался на www.ubunturocks.com, поскольку многие пользователи считают префикс www необходимым. Используйте для этого инструкцию ServerAlias. Вы можете также применять для ServerAlias групповые символы.

Например, следующая конфигурация заставит ваш сайт отвечать на любые запросы с доменом, оканчивающимся на .ubunturocks.com.

ServerAlias *.ubunturocks.com

5. Инструкция DocumentRoot определяет где Apache2 будет искать файлы, которые являются содержимым сайта. По умолчанию используется значение /var/www, как определено в /etc/apache2/sites-available/default. Если желаете, можете изменить это значение в файле сайта вашего виртуального хоста и не забудьте создать этот каталог, если необходимо!

Включите новый VirtualHost, используя утилиту a2ensite, и перезапустите Apache2:

sudo a2ensite mynewsite
sudo service apache2 restart
Убедитесь, что заменили mynewsite на более понятное имя для VirtualHost. Один из способов это называть файл по значению ServerName виртуального хоста.

Аналогично используйте утилиту a2dissite для выключения сайтов. Это может быть полезным при разрешении проблем с несколькими виртуальными хостами:

sudo a2dissite mynewsite
sudo service apache2 restart

Настройки по умолчанию

Этот раздел раскрывает возможности настроек значений по умолчанию сервера Apache2. Например, если вы добавили виртуальный хост, значения, которые вы определите в его конфигурации переопределят значения для данного виртуального хоста. Для инструкций, не определенных в настройках виртуального хоста, будут использоваться значения по умолчанию.

1. DirectoryIndex - это страница по умолчанию, выдаваемая сервером, когда пользователь запрашивает индекс каталога указанием прямого слеша (/) после его имени.

Например, когда пользователь запрашивает страницу http://www.example.com/this_directory/, он (или она) получит либо страницу, определяемую DirectoryIndex, если она существует, список файлов в каталоге, сгенерированный сервером, если не существует и определена опция Indexes, или страницу Permission Denied (недостаточно прав доступа) в остальных случаях. Сервер попытается найти один из файлов, перечисленных в инструкции DirectoryIndex и вернет первый найденный. Если не найдет ни одного и если установлено Options Indexes для данного каталога, сервер создаст и вернет список в формате HTML подкаталогов и файлов в этом каталоге. Значение по умолчанию, находящееся в /etc/apache2/mods-available/dir.conf это «index.html index.cgi index.pl index.php index.xhtml index.htm». Поэтому, если Apache2 найдет файл в запрашиваемом каталоге, соответствующий любому из этих имен, первый же из них будет показан [клиенту].

2. Инструкция ErrorDocument позволяет вам определить файл для Apache2, используемый при определенных ошибочных событиях. Например, если пользователь запросил ресурс, который не существует, возникнеи ошибка 404. По умолчанию Apache2 просто вернет код возврата HTTP 404. Прочитайте /etc/apache2/conf.d/localized-error-pages для детальных инструкций по использованию ErrorDocument, включающий расположение файлов примеров.

3. По умолчанию сервер пишет журнал обмена в файл /var/log/apache2/access.log. Вы можете поменять это для каждого сайта в файлах настроек ваших виртуальных хостов с помощью инструкции CustomLog или спуститься на уровень настроек по умолчанию, определяемых в /etc/apache2/conf.d/other-vhosts-access-log. Вы можете также определить файл, в который будут сохраняться ошибки, через инструкцию ErrorLog, которая изначально указывает на var/log/apache2/error.log. Они хранятся отдельно от журнала обмена чтобы помочь в решении проблем с вашим сервером Apache2. Вы можете также определить LogLevel (изначально значение "warn") и LogFormat (смотрите /etc/apache2/apache2.conf для значений по умолчанию).

4. Некоторые опции задаются на уровне каталогов вместо уровня сервера. Options - одна из таких директив. Раздел Directory заключается в XML-подобные теги, как показано ниже:

<Directory /var/www/mynewsite>
...
</Directory>

Инструкция Options внутри раздела Directory принимает одно или несколько из следующих значений (среди прочего), разделенные пробелами:

  • ExecCGI - Разрешает выполнение CGI сценариев. CGI сценарии не выполняются, если данная опция не выбрана.

Большинство файлов не должны выполняться как CGI сценарии. Это может быть очень опасно. CGI сценарии должны находиться в отдельном каталоге и вне вашего DocumentRoot. И только для этого каталога должна указываться опция ExecCGI. Так сделано изначально и по умолчанию CGI сценарии располагаются в /usr/lib/cgi-bin.
  • Includes - Позволяет включения на стороне сервера. Включения на стороне сервера позволяют фалам HTML включать другие файлы. Смотрите документацию Apache SSI (сообщества Ubuntu) для дополнительных деталей.

  • IncludesNOEXEC - Позволяет включения на стороне сервера, но блокирует команды #exec и #include в CGI сценариях.

  • Indexes - Показывает форматированный список содержимого каталога, если не найдены DirectoryIndex (как например index.html) в запрашиваемом каталоге.

По соображениям безопасности эта опция обычно не устанавливается и обычно не должна присутствовать для вашего каталога DocumentRoot. Включайте эту опцию осторожно на уровне каталогов только если вы уверены, что хотите показать пользователям полное содержание этого каталога.
  • Multiview - Поддерживает зависящие от содержимого просмотры; эта опция по умолчанию выключена по соображениям безопасности. Смотрите документацию Apache2 по этой опции.

  • SymLinksIfOwnerMatch - Следует по символическим ссылкам если целевой файл или каталог имеет того же владельца, что и ссылка.

Настройки httpd

This section explains some basic httpd daemon configuration settings.

LockFile - The LockFile directive sets the path to the lockfile used when the server is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or USE_FLOCK_SERIALIZED_ACCEPT. It must be stored on the local disk. It should be left to the default value unless the logs directory is located on an NFS share. If this is the case, the default value should be changed to a location on the local disk and to a directory that is readable only by root.

PidFile - The PidFile directive sets the file in which the server records its process ID (pid). This file should only be readable by root. In most cases, it should be left to the default value.

User - The User directive sets the userid used by the server to answer requests. This setting determines the server's access. Any files inaccessible to this user will also be inaccessible to your website's visitors. The default value for User is «www-data».

Unless you know exactly what you are doing, do not set the User directive to root. Using root as the User will create large security holes for your Web server.

Group - The Group directive is similar to the User directive. Group sets the group under which the server will answer requests. The default group is also «www-data».

Модули Apache2

Apache2 is a modular server. This implies that only the most basic functionality is included in the core server. Extended features are available through modules which can be loaded into Apache2. By default, a base set of modules is included in the server at compile-time. If the server is compiled to use dynamically loaded modules, then modules can be compiled separately, and added at any time using the LoadModule directive. Otherwise, Apache2 must be recompiled to add or remove modules.

Ubuntu compiles Apache2 to allow the dynamic loading of modules. Configuration directives may be conditionally included on the presence of a particular module by enclosing them in an <IfModule> block.

You can install additional Apache2 modules and use them with your Web server. For example, run the following command from a terminal prompt to install the MySQL Authentication module:

sudo apt-get install libapache2-mod-auth-mysql

See the /etc/apache2/mods-available directory, for additional modules.

Use the a2enmod utility to enable a module:

sudo a2enmod auth_mysql sudo service apache2 restart

Similarly, a2dismod will disable a module:

sudo a2dismod auth_mysql sudo service apache2 restart

Настройка HTTPS

The mod_ssl module adds an important feature to the Apache2 server - the ability to encrypt communications. Thus, when your browser is communicating using SSL, the https: prefix is used at the beginning of the Uniform Resource Locator (URL) in the browser navigation bar. The mod_ssl module is available in apache2-common package. Execute the following command from a terminal prompt to enable the mod_ssl module: sudo a2enmod ssl There is a default HTTPS configuration file in /etc/apache2/sites-available/default-ssl. In order for Apache2 to provide HTTPS, a certificate and key file are also needed. The default HTTPS configuration will use a certificate and key generated by the ssl-cert package. They are good for testing, but the auto-generated certificate and key should be replaced by a certificate specific to the site or server. For information on generating a key and obtaining a certificate see Certificates To configure Apache2 for HTTPS, enter the following: sudo a2ensite default-ssl The directories /etc/ssl/certs and /etc/ssl/private are the default locations. If you install the certificate and key in another directory make sure to change SSLCertificateFile and SSLCertificateKeyFile appropriately. With Apache2 now configured for HTTPS, restart the service to enable the new settings: sudo service apache2 restart Depending on how you obtained your certificate you may need to enter a passphrase when Apache2 starts. You can access the secure server pages by typing https://your_hostname/url/ in your browser address bar. ====Права разделения записи==== For more than one user to be able to write to the same directory it will be necessary to grant write permission to a group they share in common. The following example grants shared write permission to /var/www to the group «webmasters». sudo chgrp -R webmasters /var/www sudo find /var/www -type d -exec chmod g=rwxs «{}» \; sudo find /var/www -type f -exec chmod g=rws «{}» \; If access must be granted to more than one group per directory, enable Access Control Lists (ACLs). ====Ссылки==== Apache2 Documentation contains in depth information on Apache2 configuration directives. Also, see the apache2-doc package for the official Apache2 docs. See the Mod SSL Documentation site for more SSL related information. O'Reilly's Apache Cookbook is a good resource for accomplishing specific Apache2 configurations. For Ubuntu specific Apache2 questions, ask in the #ubuntu-server IRC channel on freenode.net. Usually integrated with PHP and MySQL the Apache MySQL PHP Ubuntu Wiki page is a good resource. —- <style float-right> <-назад | далее-></style>