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

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

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

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

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@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 save

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

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

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

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

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

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

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

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

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

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

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

Чтобы настроить виртуальный хостинг на основе имени, вам необходимо установить 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.

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

На приведенной выше диаграмме двум веб-сайтам 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-файла

Обработчики 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 также может обрабатывать файлы Ruby через FastCGI. Можно использовать несколько версий Ruby с помощью mod_fcgid, т.е. FastCGI.

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

(Phusion 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/mod_ruby.so

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

Запуск Ruby с помощью 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.

<Directory /var/www/html>

    Options -Indexes

</Directory>

Отключить листинг каталогов

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.

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

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

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

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

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

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

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

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

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

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

   LimitRequestBody 512000

</Directory>

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

Журналы 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 — личность пользователя, определяемая identd
  • % u - это имя пользователя, определяемое HTTP-аутентификацией.
  • %t — время, когда сервер завершил обработку запроса.
  • %r — строка запроса от клиента. («GET/HTTP/1.0»)
  • %> s - это код состояния, отправленный с сервера клиенту (500, 404 и т. д.)
  • % b - размер ответа клиенту (в байтах)
  • Реферер — это страница, которая связана с этим 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)"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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