Руководства по Apache для начинающих

Содержание:

Anonim

Что такое апач?

Apache - замечательное прикладное программное обеспечение. Это наиболее широко используемое приложение для веб-серверов в мире, на долю которого приходится более 50% рынка коммерческих веб-серверов. Apache - это наиболее широко используемое приложение веб-сервера в Unix-подобных операционных системах, но его можно использовать практически на всех платформах, таких как Windows, OS X, OS / 2 и т. Д. Слово Apache было взято из названия Native. Американское племя апачей, известное своими военными и стратегическими навыками.

Это модульное приложение веб-сервера на основе процессов, которое создает новый поток при каждом одновременном подключении. Он поддерживает ряд функций; многие из них скомпилированы как отдельные модули и расширяют его основные функции и могут предоставлять все, от поддержки языка программирования на стороне сервера до механизма аутентификации. Виртуальный хостинг - одна из таких функций, которая позволяет одному веб-серверу Apache обслуживать несколько разных веб-сайтов.

Как установить Apache

Есть множество способов установить пакет или приложение. Ниже перечислены -

  1. Одна из особенностей этого веб-приложения с открытым исходным кодом заключается в том, что любой может создать установщик для своей собственной среды. Это позволило различным поставщикам, таким как Debian, Red Hat, FreeBSD, Suse и т. Д., Настраивать расположение файлов и конфигурацию apache с учетом других установленных приложений и базовой ОС.
  2. Помимо установки из установщика на основе поставщика, всегда есть возможность собрать и установить его из исходного кода. Установка Apache из исходного файла не зависит от платформы и работает для всех ОС.

Веб-сервер apache - это модульное приложение, в котором администратор может выбрать необходимую функциональность и установить различные модули в соответствии со своими требованиями.

Все модули могут быть скомпилированы как динамические общие объекты (DSO - это объектный файл, который может использоваться несколькими приложениями во время их выполнения), который существует отдельно от основного файла apache. Настоятельно рекомендуется подход DSO, он упрощает задачу добавления / удаления / обновления модулей из конфигурации серверов.

Установите Apache: платформа Linux

В системах на базе Red Hat или rpm

Если вы используете дистрибутив Linux на основе rpm (RedHat Package Manager - это утилита для установки приложений в системах Linux), то есть Red Hat, Fedora, CentOs, Suse, вы можете установить это приложение либо с помощью диспетчера пакетов, зависящего от поставщика, либо напрямую создав файл rpm. из доступного архива с исходными кодами.

Вы можете установить Apache через диспетчер пакетов по умолчанию, доступный во всех дистрибутивах на основе Red Hat, таких как CentOs, Red Hat и Fedora.

[root @ a Amsterdam ~] # ням установить httpd

Архив с исходным кодом apache можно преобразовать в файл rpm с помощью следующей команды.

[корень @ амстердам ~] # rpmbuild -tb httpd-2.4.x.tar.bz2

На вашем сервере обязательно должен быть установлен пакет -devel для создания файла .rpm из исходного кода.

После преобразования исходного файла в установщик rpm вы можете использовать следующую команду для установки Apache.

[корень @ амстердам ~] # об / мин -ivh httpd-2.4.4-3.1.x86_64.rpm

После установки сервер не запускается автоматически, чтобы запустить службу, вы должны использовать любую из следующих команд в Fedora, CentOs или Red Hat.

[корень @ амстердам ~] # / usr / sbin / apachectl start[root @ a Amsterdam ~] # запуск службы httpd[root @ a Amsterdam ~] # /etc/init.d/httpd start

Установить Apache из исходного кода

Для установки apache из исходного кода на вашем сервере должен быть установлен пакет -devel… Вы можете найти последнюю доступную версию Apache, вы можете скачать ее здесь. После загрузки исходного файла переместите его в папку / usr / local / src.

[root @ amserversterdam ~] cd / usr / local / src[корень @ amserversterdam ~] gzip -d httpd-2.2.26.tar.gz[корень @ amserversterdam ~] tar xvf httpd-2.2.26.tar[корень @ amserversterdam ~] httpd-2.2.26

Чтобы увидеть все параметры конфигурации, доступные для Apache, вы можете использовать параметр ./configure -help. Наиболее распространенная опция конфигурации - -prefix = {имя каталога установки}.

[root @ amserversterdam ~] ./ configure --help[root @ amserversterdam ~] ./ configure -prefix = / usr / local / apache -enable-so[root @ amserversterdam ~] make[root @ amserversterdam ~] сделать установку

В приведенном выше примере показана компиляция Apache в каталоге / usr / local / apache с возможностью DSO. Параметр -enable-so может загружать необходимые модули в apache во время выполнения через механизм DSO, вместо того, чтобы требовать перекомпиляции.

После завершения установки вы можете просматривать страницу веб-серверов по умолчанию в своем любимом браузере. Если на вашем сервере включен брандмауэр, вам необходимо сделать исключение для порта 80 в брандмауэре вашей ОС. Вы можете использовать следующую команду, чтобы открыть порт 80.

iptables -I ВВОД -p tcp --dport 80 -j ПРИНЯТЬ

сервис iptables save

Вы можете увидеть экран приветствия Apache2 по умолчанию , просмотрев IP-адрес своего сервера.

Что такое виртуальный хост?

Веб-сервер Apache может размещать несколько веб-сайтов на ОДНОМ сервере. Вам не нужны отдельные серверные машины и программное обеспечение apache для каждого веб-сайта. Этого можно достичь с помощью концепции виртуального хоста или VHost.

Любой домен, который вы хотите разместить на своем веб-сервере, будет иметь отдельную запись в файле конфигурации apache.

Типы виртуального хоста Apache

  1. Виртуальный хост на основе имени
  2. Виртуальный хост на основе адреса или IP и.

Виртуальный хост на основе имени

Виртуальный хостинг на основе имени используется для размещения нескольких виртуальных сайтов на одном IP-адресе.

Чтобы настроить виртуальный хостинг на основе имени, вы должны установить IP-адрес, на который вы собираетесь получать запросы Apache для всех желаемых веб-сайтов. Вы можете сделать это с помощью директивы NameVirutalHost в конфигурации apache, то есть в файле httpd.conf / apache2.conf.

Пример виртуального хоста Apache:

ИмяVirtualHost *: 80ServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.DocumentRoot /var/www/html/example1.comServerName www.example1.comServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. DocumentRoot /var/www/html/example2.com ServerName www.example2.com 

Вы можете добавить столько виртуальных хостов, сколько вам нужно. Вы можете проверить свои файлы веб-конфигурации с помощью:

[корень @ амстердам ~] #httpd -tСинтаксис ОК

Если файл конфигурации имеет неправильный синтаксис, он выдаст ошибку

[root @ 115 conf.d] # httpd -tСинтаксическая ошибка в строке 978 файла /etc/httpd/conf/httpd.conf:Неверная команда '*', возможно, неправильно написана или определена модулем, не включенным в конфигурацию сервера

Виртуальный хост на основе IP

Чтобы настроить виртуальный хостинг на основе IP, вам необходимо настроить более одного IP-адреса на вашем сервере. Итак, количество vhost apache будет зависеть от количества IP-адресов, настроенных на вашем сервере. Если у вашего сервера 10 IP-адресов, вы можете создать 10 виртуальных хостов на основе IP.

На приведенной выше диаграмме двум веб-сайтам example1.com и example2.com были назначены разные IP-адреса, и они используют виртуальный хостинг на основе IP.

Слушайте 192.168.0.100:80ServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.DocumentRoot /var/www/html/example1.comServerName www.example1.comServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. DocumentRoot /var/www/html/example2.com ServerName www.example2.com 

Что нужно Apache для запуска файла Php?

Для запуска файлов Php на Apache необходимо, чтобы на вашем сервере был включен mod_php . Это позволяет Apache интерпретировать файлы .Php. У него есть обработчики Php, которые интерпретируют код Php в apache и отправляют HTML на ваш веб-сервер.

Если на вашем сервере включен mod_php, у вас будет файл с именем php.conf в каталоге /etc/httpd/conf.d/. Вы также можете проверить это с помощью:

httpd -M | grep "php5_module"

Результат будет примерно таким:

Обработчики php в Apache

  • mod_php
  • CGI
  • FastCGI
  • suPHP

mod_php - самый старый обработчик PHP, он делает PHP частью apache и не вызывает никаких внешних процессов PHP. Этот модуль устанавливается по умолчанию в каждый репозиторий дистрибутива Linux, поэтому включить / отключить этот модуль очень просто.

Если вы используете FastCGI в качестве обработчика PHP, вы можете установить несколько версий PHP для использования разными учетными записями на вашем сервере.

FastCGI, то есть mod_fastcgi - это расширение mod_fcgid , где mod_fcgid - высокопроизводительная альтернатива CGI, то есть mod_cgi. Он запускает достаточное количество экземпляров CGI для обработки одновременных веб-запросов. Он также использует suexec для поддержки разных пользователей с их собственными экземплярами PHP и улучшает веб-безопасность.

Для запуска файлов ruby ​​на Apache необходимо включить mod_ruby. Apache также может обрабатывать рубиновые файлы через FastCGI. Можно использовать несколько версий ruby ​​с помощью mod_fcgid, т.е. FastCGI.

Вы также можете установить apache пассажира и настроить Apache для использования его для обслуживания рубиновых страниц.

(Phusion Passenger, также известный как « пассажир », представляет собой бесплатный модуль веб-сервера, предназначенный для интеграции с Apache и Nginx)

Шаги по установке mod_ruby на ваш сервер -

cd / tmpwget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gztar zxvf mod_ruby-1.2.6.tar.gzcd mod_ruby-1.2.6 /./configure.rb --with-apr-includes = / usr / include / apr-1делатьсделать установку

Как запустить Ruby с Apache

Мы должны добавить модуль mod_ruby в конфигурацию Apache, т.е. /etc/httpd/conf.d/ruby.conf, и добавить следующую строку.

LoadModule модули ruby_module / mod_ruby.so

Если вы хотите включить или отключить эти модули, вам необходимо отредактировать файл конфигурации apache и прокомментировать или раскомментировать эти модули, если веб-сервер уже скомпилирован с этими модулями.

Как защитить веб-сервер Apache

Защита вашего веб-сервера очень важна, это означает, что другие могут видеть только нужную информацию, а также защищать ваши данные и ограничивать доступ.

Это обычные вещи, которые повышают безопасность ваших веб-серверов Apache.

1) Скрытие версии Apache и информации об ОС:

Apache отображает свою версию и название операционной системы в сообщениях об ошибках, как показано на снимке экрана ниже.

Хакер может использовать эту информацию для запуска атаки с использованием общедоступных уязвимостей в конкретной версии сервера или ОС.

Чтобы предотвратить отображение этой информации веб-сервером Apache, мы должны изменить

Параметр «подпись сервера» доступен в файле конфигурации apache. По умолчанию он включен, нам нужно отключить его.

vim /etc/httpd/conf/httpd.conf
Сервер Подпись Выкл.ServerTokens Prod

Мы также установили «ServerTokens Prod», который сообщает веб-серверу, что он должен возвращать только apache и подавлять основную и вспомогательную версию ОС.

После изменения файла конфигурации вам необходимо перезапустить / перезагрузить веб-сервер Apache, чтобы он вступил в силу.

перезапуск службы httpd

2) Отключить список каталогов

Если корневой каталог вашего документа не имеет индексного файла, по умолчанию ваш веб-сервер apache будет отображать все содержимое корневого каталога документов.

Эту функцию можно отключить для определенного каталога с помощью «директивы параметров», доступной в файле конфигурации Apache.

<Каталог / var / www / html>Параметры -Индексы

3) Отключение ненужных модулей

Рекомендуется отключить все ненужные модули, которые не используются. Вы можете увидеть список включенных модулей, доступных в вашем файле конфигурации apache -

[root @ a Amsterdam ~] #httpd -Mperl_module (общий)php5_module (общий)proxy_ajp_module (общий)python_module (общий)ssl_module (общий)

Многие из перечисленных модулей могут быть отключены, например mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, поскольку они почти не используются какими-либо производственными веб-серверами.

vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module modules / mod_auth_digest.so

После того, как вы прокомментировали модуль, сохраните файл.

Перезапустите службы apache с помощью следующей команды.

/etc/init.d/httpd перезапуск

4) Ограничение доступа к файлам за пределами корневого веб-каталога

Если вы хотите убедиться, что файлы, находящиеся за пределами корневого веб-каталога, недоступны, вы должны убедиться, что каталог ограничен параметрами «Разрешить» и «Запретить» в файле конфигурации вашего веб-сервера.

<Каталог />Опции НетAllowOverride НетЗаказать отказать, разрешитьЗапретить всем

Как только вы ограничите доступ за пределами корневого веб-каталога, вы не сможете получить доступ ни к одному файлу, расположенному в любой другой папке на вашем веб-сервере, вы получите код возврата 404.

5) Использование mod_evasive для отражения DoS-атаки

Если вы хотите защитить свой веб-сервер от Dos (т.е. отказа в обслуживании), вы должны включить модуль mod_evasive. Это сторонний модуль, который обнаруживает атаку Dos и предотвращает нанесение ею такого же ущерба, как если бы она продолжалась. Его можно скачать здесь.

Загрузите указанный выше файл

6) Использование mod_security для повышения безопасности apache

Этот модуль работает как брандмауэр для Apache и позволяет отслеживать трафик в режиме реального времени. Это также защищает веб-сервер от атак грубой силы. Модуль mod_security можно установить вместе с менеджером пакетов по умолчанию вашего дистрибутива.

7) Ограничение размера запроса

Apache не имеет ограничений на общий размер HTTP-запроса, который может привести к DoS-атаке. Вы можете ограничить размер запроса директивы Apache «LimitRequestBody» с помощью тега каталога. Значение может быть установлено от 0 до 2 ГБ (т.е. 2147483647 байт) в соответствии с вашими требованиями.

<Каталог "/ var / www / html / uploads">LimitRequestBody 512000

Формат журнала Apache

Журналы Apache предоставляют подробную информацию, которая помогает обнаруживать общие проблемы с сервером.

Для создания журналов доступа необходимо включить модуль mod_log_configmodule.

В конфигурационном файле apache доступны три директивы, т.е.

  • TransferLog: Создание файла журнала.
  • LogFormat: указание настраиваемого формата.
  • CustomLog: создание и форматирование файла журнала.

Директива TransferLog доступна в файле конфигурации apache и вращает файлы журнала виртуального хоста в соответствии с заданными параметрами.

ServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.DocumentRoot / usr / www / example / httpd / htdocs /ServerName www.example.comServerAlias ​​example.com www.exampleЖурнал ошибок / usr / www / example / httpd / logs / error_logTransferLog / usr / www / пример / httpd / журналы / accesslogCustomLog / usr / www / example / httpd / logs / accesslog в сочетании

Два типа формата журнала Apache

  • Общий формат журнала
  • Комбинированный формат журнала.

Вы можете включить их, отредактировав файл конфигурации apache, например файл apache2.conf (Debian / ubuntu) или httpd.conf (системы на основе rpm).

Общий формат журнала

LogFormat "% h% l% u% t \"% r \ "%> s% b" общийЖурналы CustomLog / access_log общие

Общий журнал, созданный Apache

[Среда, 11 октября, 14:32:52 2000] [ошибка] [клиент 127.0.0.1] клиент отклонен конфигурацией сервера: / export / home / live / ap / htdocs / test

Комбинированный формат журнала

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-agent} i \ "" вместеCustomLog log / access_log объединены

Здесь,

  • % h - удаленный хост
  • % l - это идентификатор пользователя, определенный с помощью identd.
  • % u - это имя пользователя, определенное HTTP-аутентификацией.
  • % t - время, когда сервер завершил обработку запроса.
  • % r - это строка запроса от клиента. ("GET / HTTP / 1.0")
  • %> s - это код состояния, отправленный с сервера клиенту (500, 404 и т. д.)
  • % b - размер ответа клиенту (в байтах)
  • Referer - это страница, связанная с этим URL-адресом.
  • User-agent - это строка идентификации браузера.

Комбинированный журнал, созданный Apache:

199.187.122.91 - - [06 / мар / 2014: 04: 22: 58 +0100] "GET /robots.txt HTTP / 1.1" 404 1228 "-" "Mozilla / 4.0 (совместимо; MSIE 6.0; Windows NT 5.1; SV1 ; .NET CLR 2.0.50727) "

Custom Log создает отдельный файл журнала для каждого виртуального хоста на вашем сервере. Его нужно указать в разделе виртуального хоста конфигурационного файла.

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

Настройте свой самый первый производственный веб-сервер

1. Чтобы иметь работающий производственный веб-сервер, вам понадобится выделенный узел (физический / виртуальный или облачный) под управлением Linux / Unix, Windows, MacOS и т. Д.

2. Веб-сервер должен иметь прямое сетевое соединение и настроенный на нем статический IP-адрес .

3. Он должен иметь все модули, необходимые для работы веб-страниц. Если веб-сервер обрабатывает страницы PHP, на нем должен быть включен модуль PHP.

  1. Также необходимо иметь хорошее антивирусное приложение, настроенное и работающее для защиты веб-сервера от вредоносных программ или вирусных атак. Вам также необходим механизм для обновления настроенного антивирусного / антивирусного приложения на регулярной основе без какого-либо ручного вмешательства, чтобы получить от них максимальную пользу.
  2. Если у вас есть сотни доменов, которые будут размещены на вашем веб-сервере, вам необходимо установить ограничения на квоту файловой системы для каждого домена, количество баз данных, которые может создать каждый домен, количество учетных записей электронной почты на домен и т. Д.
  3. Если ваш веб-сервер настроен для предоставления услуг общего хостинга, пользователи на вашем веб-сервере должны быть ограничены . Пользователь виртуального хостинга должен иметь минимум прав, чтобы он не повредил важные файлы и не сломал весь сервер. Apache не предоставляет такой функциональности и требует различных сторонних приложений и настройки ОС для достижения этой цели.
  4. Если вы добавляете новый домен на свой веб-сервер, ему необходимо отредактировать сотни файлов конфигурации, чтобы включить все функции для добавленного домена.
  5. Если для одного из размещенных доменов требуются другие настройки PHP, чем для остальных доменов, реализация этого на основном веб-сервере Apache очень сложна и требует значительной настройки вашего веб-сервера.
  6. Производственному веб-серверу необходим брандмауэр, чтобы блокировать нежелательный трафик, который может вызвать высокую нагрузку на ваш сервер. Реализовать правила IPTABLE с помощью командной строки очень сложно. Для написания эффективных правил брандмауэра для блокировки нежелательного трафика требуется опыт работы с ядром среды Linux / Unix. IPTABLE основан на модуле netfilter; это брандмауэр уровня ОС, который позволяет администратору создавать правила для входящего / исходящего трафика на сервере.
  7. Производственный веб-сервер требует нескольких различных приложений, таких как электронная почта , FTP для загрузки файлов, система доменных имен для припаркованных доменов. Управление всеми этими приложениями в базовой системе Linux / Unix требует опыта в соответствующих технологиях.

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

Решение с использованием Cpanel или аналогичного программного обеспечения

Cpanel предоставляет графический способ управления вашим веб-сервером . Он предназначен для предоставления услуг массового хостинга, которые просты в использовании и настройке. cPanel снизила технические барьеры для входа в управление хостингом и веб-сервером. Он упрощает сложные задачи, он предоставляет множество полезных и простых в использовании веб-интерфейсов, которые выполняют общие задачи системного администрирования, необходимые для работы веб-сервера.

cPanel компилирует собственную версию программного обеспечения.

Если вам нужно перекомпилировать свой веб-сервер, то есть apache на обычной платформе Linux, вы должны вручную выбрать / выполнить поиск необходимого модуля. cPanel предоставляет функциональность Easyapache, которая представляет собой метод компиляции веб-сервера на основе сценариев.

Он предоставляет вам не только веб-службы, но также почту, DNS, FTP и многие другие службы, необходимые для вашего веб-приложения.

Задача, требующая опыта в базовом хостинге на базе Linux / Unix, например, установка SSL, перекомпиляция Apache с различными модулями PHP, обновление веб-безопасности, настройка эффективных правил IPTABLE, добавление ftp-пользователей, создание почтовых учетных записей для каждого домена, сканирование корня вашего документа с помощью антивируса и создание баз данных легко выполнить с помощью cPanel.

Он предоставляет множество сценариев, которые исправляют, устанавливают и устраняют общие административные задачи.

Он обеспечивает функции резервного копирования и восстановления, устраняя необходимость вручную копировать файлы в хранилище резервных копий. Если вы создаете резервную копию своего домена, cPanel создаст tar-файл, который будет содержать корневую папку документов, учетные записи электронной почты и сообщения электронной почты, учетные записи ftp, базы данных, записи DNS и другие приложения.

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

Итак, можно сказать, что cPanel - лучшее приложение для управления вашим веб-сервером с необходимыми функциями. Он предоставляет вам простой в использовании интерфейс для управления вашим доменом и механизм, позволяющий избежать сложности управления основным веб-сервером.

Для cPanel существует множество конкурирующих продуктов, таких как Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel и т. Д.