Что такое апач?
Apache - замечательное прикладное программное обеспечение. Это наиболее широко используемое приложение для веб-серверов в мире, на долю которого приходится более 50% рынка коммерческих веб-серверов. Apache - это наиболее широко используемое приложение веб-сервера в Unix-подобных операционных системах, но его можно использовать практически на всех платформах, таких как Windows, OS X, OS / 2 и т. Д. Слово Apache было взято из названия Native. Американское племя апачей, известное своими военными и стратегическими навыками.
Это модульное приложение веб-сервера на основе процессов, которое создает новый поток при каждом одновременном подключении. Он поддерживает ряд функций; многие из них скомпилированы как отдельные модули и расширяют его основные функции и могут предоставлять все, от поддержки языка программирования на стороне сервера до механизма аутентификации. Виртуальный хостинг - одна из таких функций, которая позволяет одному веб-серверу Apache обслуживать несколько разных веб-сайтов.
Как установить Apache
Есть множество способов установить пакет или приложение. Ниже перечислены -
- Одна из особенностей этого веб-приложения с открытым исходным кодом заключается в том, что любой может создать установщик для своей собственной среды. Это позволило различным поставщикам, таким как Debian, Red Hat, FreeBSD, Suse и т. Д., Настраивать расположение файлов и конфигурацию apache с учетом других установленных приложений и базовой ОС.
- Помимо установки из установщика на основе поставщика, всегда есть возможность собрать и установить его из исходного кода. Установка 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
- Виртуальный хост на основе имени
- Виртуальный хост на основе адреса или IP и.
Виртуальный хост на основе имени
Виртуальный хостинг на основе имени используется для размещения нескольких виртуальных сайтов на одном IP-адресе.
Чтобы настроить виртуальный хостинг на основе имени, вы должны установить IP-адрес, на который вы собираетесь получать запросы Apache для всех желаемых веб-сайтов. Вы можете сделать это с помощью директивы NameVirutalHost в конфигурации apache, то есть в файле httpd.conf / apache2.conf.
Пример виртуального хоста Apache:
ИмяVirtualHost *: 80ServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.DocumentRoot /var/www/html/example1.comServerName www.example1.com ServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен 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.com ServerAdmin Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен 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.
- Также необходимо иметь хорошее антивирусное приложение, настроенное и работающее для защиты веб-сервера от вредоносных программ или вирусных атак. Вам также необходим механизм для обновления настроенного антивирусного / антивирусного приложения на регулярной основе без какого-либо ручного вмешательства, чтобы получить от них максимальную пользу.
- Если у вас есть сотни доменов, которые будут размещены на вашем веб-сервере, вам необходимо установить ограничения на квоту файловой системы для каждого домена, количество баз данных, которые может создать каждый домен, количество учетных записей электронной почты на домен и т. Д.
- Если ваш веб-сервер настроен для предоставления услуг общего хостинга, пользователи на вашем веб-сервере должны быть ограничены . Пользователь виртуального хостинга должен иметь минимум прав, чтобы он не повредил важные файлы и не сломал весь сервер. Apache не предоставляет такой функциональности и требует различных сторонних приложений и настройки ОС для достижения этой цели.
- Если вы добавляете новый домен на свой веб-сервер, ему необходимо отредактировать сотни файлов конфигурации, чтобы включить все функции для добавленного домена.
- Если для одного из размещенных доменов требуются другие настройки PHP, чем для остальных доменов, реализация этого на основном веб-сервере Apache очень сложна и требует значительной настройки вашего веб-сервера.
- Производственному веб-серверу необходим брандмауэр, чтобы блокировать нежелательный трафик, который может вызвать высокую нагрузку на ваш сервер. Реализовать правила IPTABLE с помощью командной строки очень сложно. Для написания эффективных правил брандмауэра для блокировки нежелательного трафика требуется опыт работы с ядром среды Linux / Unix. IPTABLE основан на модуле netfilter; это брандмауэр уровня ОС, который позволяет администратору создавать правила для входящего / исходящего трафика на сервере.
- Производственный веб-сервер требует нескольких различных приложений, таких как электронная почта , 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 и т. Д.