Учебники

Веб сервер Apache

What is Apache?

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

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

Учебные пособия по Apache для начинающих

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

Существует множество способов установки пакета или приложения. Есть зачисленные ниже –

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

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

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

Установите Apache: Linux Platform

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

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

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

[root@amsterdam ~]# yum install httpd

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

[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2

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

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

[root@amsterdam ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm

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

[root@amsterdam ~]# /usr/sbin/apachectl start

[root@amsterdam ~]# service httpd start

[root@amsterdam ~]# /etc/init.d/httpd start

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

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

[root@amserversterdam ~] cd /usr/local/src

[root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz

[root@amserversterdam ~] tar xvf httpd-2.2.26.tar

[root@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 ~] make install

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

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

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

сервис Iptables сохранить

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

 

Учебные пособия по Apache для начинающих

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

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

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

Учебные пособия по Apache для начинающих

 

Типы Apache Virtualhost

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

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

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

Учебные пособия по Apache для начинающих

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

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

NameVirtualHost *:80

<VirtualHost 192.168.0.108:80>

ServerAdmin webmaster@example1.com

DocumentRoot /var/www/html/example1.com      

ServerName www.example1.com

</VirtualHost>

<VirtualHost 192.168.0.108:80>

ServerAdmin admin@example2.com

DocumentRoot /var/www/html/example2.com

ServerName www.example2.com

</VirtualHost>

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

[root@amsterdam ~]#httpd –t
Syntax OK

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

[root@115 conf.d]# httpd -t

Syntax error on line 978 of /etc/httpd/conf/httpd.conf:

Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration

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

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

Учебные пособия по Apache для начинающих

 

 

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

Listen 192.168.0.100:80

<VirtualHost 192.168.10.108:80>

ServerAdmin webmaster@example1.com

DocumentRoot /var/www/html/example1.com      

ServerName www.example1.com

</VirtualHost>

<VirtualHost 192.168.10.109:80>

ServerAdmin admin@example2.com

DocumentRoot /var/www/html/example2.com

ServerName www.example2.com

</VirtualHost>

 

Что нужно 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"

Вывод будет похож на:

Учебные пособия по Apache для начинающих

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 passenger и настроить Apache для использования его для обслуживания страниц ruby.

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

Шаги для установки mod_ruby на вашем сервере -

cd /tmp

wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz

tar zxvf mod_ruby-1.2.6.tar.gz

cd mod_ruby-1.2.6/                    

./configure.rb --with-apr-includes=/usr/include/apr-1

make

make install

Как запустить Ruby с помощью Apache

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

LoadModule ruby_module modules / mod_ruby.so

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

Учебные пособия по Apache для начинающих

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

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

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

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

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

Учебные пособия по Apache для начинающих

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

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

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

vim /etc/httpd/conf/httpd.conf
ServerSignature Off

ServerTokens Prod

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

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

service httpd restart

Учебные пособия по Apache для начинающих

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

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

Учебные пособия по Apache для начинающих

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

<Directory /var/www/html>

    Options -Indexes

</Directory>

Учебные пособия по Apache для начинающих

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

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

[root@amsterdam ~]#httpd –M

perl_module (shared)

php5_module (shared)

proxy_ajp_module (shared)

python_module (shared)

ssl_module (shared)

Многие из перечисленных модулей могут быть отключены, такие как 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 restart

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

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

<Directory/>

Options None

AllowOverride None

Order deny,allow

Deny from all

</Directory>

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

Учебные пособия по Apache для начинающих

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

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

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

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

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

Учебные пособия по Apache для начинающих

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

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

<Directory "/var/www/html/uploads">

   LimitRequestBody 512000

</Directory>

 

Apache Log Format

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

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

В директории apache есть три директивы, т.е.

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

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

<VirtualHost www.example.com>

  ServerAdmin webmaster@example.com

  DocumentRoot /usr/www/example/httpd/htdocs/

  ServerName www.example.com

  ServerAlias example.com www.example

  ErrorLog /usr/www/example/httpd/logs/error_log

  TransferLog/usr/www/example/httpd/logs/accesslog

  CustomLog /usr/www/example/httpd/logs/accesslog combined

</VirtualHost>

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

  • Общий формат журнала
  • Формат комбинированного журнала.

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

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

LogFormat "%h %l %u %t \"%r\" %>s %b" common

CustomLog logs/access_log common

Общий журнал, сгенерированный Apache

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

Формат комбинированного журнала

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined

CustomLog log/access_log combined

Вот,

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

Объединенный журнал, сгенерированный Apache:

199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"

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

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

Учебные пособия по Apache для начинающих

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

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

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

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

Учебные пособия по Apache для начинающих

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

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

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

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

Учебные пособия по Apache для начинающих

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

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

Учебные пособия по Apache для начинающих

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

A task that needs expertise on core Linux/Unix based hosting like installing SSLs, recompiling Apache with different PHP modules, updating Web Security, configuring effective IPTABLE rules, Adding ftp users, creating mail accounts for each domain, scanning your document root with antivirus and creating databases are easy to complete with cPanel.

It provides a lot of scripts that fixes, install and troubleshoot common administrative tasks.

It provides a backup and restore functionality eliminating the need to manually copy files to backup storage.  If you are backing up your domain, cPanel will create a tar file that will contain document root folder, email accounts and mails, ftp accounts, databases, DNS records and other applications.

It also provides a robust documentation, andhas a very big community of users where you could discuss and get solution of your issues.

So, one can say that cPanel is a best application for managing your web server with required features.  It provides you, easy to use interface for managing your domain and a mechanism to avoid complexity of managing core Web Server.

There are many competing products to cPanel like Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel etc.