Учебники по Apache для начинающих
Что такое Апач?
Apache — замечательное прикладное программное обеспечение. Это наиболее широко используемое приложение веб-сервера в мире, занимающее более 50% рынка коммерческих веб-серверов. Apache — наиболее широко используемое приложение веб-сервера в Unix-подобных операционных системах, но его можно использовать практически на всех платформах, таких как Windows, OS X, OS/2 и т. д. Слово Apache произошло от названия индейского племени апачей, известного своими навыками ведения войны и разработки стратегии.
Это модульное приложение веб-сервера, основанное на процессах, которое создает новый поток при каждом одновременном соединении. Он поддерживает ряд функций; многие из них скомпилированы как отдельные модули и расширяют его основные функциональные возможности, а также могут предоставлять все: от поддержки языка программирования на стороне сервера до механизма аутентификации. Виртуальный хостинг — это одна из таких функций, которая позволяет одному веб-серверу 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@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 может размещать несколько веб-сайтов на SAME сервер. Вам не нужен отдельный сервер и программное обеспечение Apache для каждого веб-сайта. Этого можно достичь, используя концепцию Виртуальный хост or VHost.
Любой домен, который вы хотите разместить на своем веб-сервере, будет иметь отдельную запись в файле конфигурации Apache.
Типы виртуального хоста Apache
- Виртуальный хост на основе имени
- Виртуальный хост на основе адреса или 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.
На приведенной выше диаграмме двум веб-сайтам 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"
Результат будет похож на:
Обработчики 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 и прокомментировать или раскомментировать эти модули, если веб-сервер уже скомпилирован с этими модулями.
Как защитить веб-сервер Apache
Безопасность вашего веб-сервера очень важна: это означает, что вы позволяете другим видеть только нужную информацию, а также защищаете ваши данные и ограничиваете доступ.
Это обычные вещи, которые повышают безопасность ваших веб-серверов Apache.
1) Скрытие версии Apache и информации об ОС:
Apache отображает свою версию и название операционной системы в ошибках, как показано на снимке экрана ниже.
Хакер может использовать эту информацию для запуска атаки с использованием общедоступных уязвимостей в конкретной версии сервера или ОС.
Чтобы запретить веб-серверу Apache отображать эту информацию, нам необходимо изменить
Опция «подпись сервера» доступна в файле конфигурации Apache. По умолчанию он включен, нам нужно его отключить.
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
Мы также установили «ServerTokens Prod», который сообщает веб-серверу возвращать только Apache и подавлять основную и второстепенную версии ОС.
После изменения файла конфигурации вам необходимо перезагрузить/перезагрузить веб-сервер Apache, чтобы он вступил в силу.
service httpd restart
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 можно установить с помощью менеджера пакетов по умолчанию вашего дистрибутива.
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)"
Пользовательский журнал создает отдельный файл журнала для каждого виртуального хоста на вашем сервере. Его необходимо указать в разделе виртуального хоста файла конфигурации.
Вы можете увидеть ниже упомянутую конфигурацию виртуального хоста, сгенерированный журнал будет индивидуальным для этого виртуального хоста, а формат будет объединен.
Настройте свой самый первый производственный веб-сервер
1. Чтобы иметь работающий рабочий веб-сервер, вам нужен выделенный узел (Физический/виртуальный или облачный экземпляр) под управлением Linux/Unix, Windows, MacOS и т. д.
2. Веб-сервер должен иметь прямое подключение к сети и еще один статическийIP-адрес настроен на нем.
3. В нем должны быть все модули требуется для запуска веб-страниц. Если веб-сервер обрабатывает страницы PHP, на нем должен быть включен модуль PHP.
- Также необходимо иметь хорошее Антивирус приложение, настроенное и работающее для защиты веб-сервера от вредоносных программ или вирусных атак. Вам также нужен механизм для обновление настроенное антивирусное/антивредоносное приложение на регулярной основе без какого-либо ручного вмешательства, чтобы получить от них максимальную выгоду.
- Если у вас есть сотни доменов, которые будут размещены на вашем веб-сервере, вам необходимо реализовать ограничения на квоту файловой системы для каждого домена, количество баз данных, которые может создать каждый домен, количество учетных записей электронной почты на домен и т. д.
- Если ваш веб-сервер настроен для услуги общего хостинга, количество пользователей на вашем веб-сервере должно быть ограничено. Пользователь общего хостинга должен иметь минимальные права пользователя, чтобы он не повредил важные файлы и не сломал весь сервер. Apache не предоставляет такой функциональности и для достижения этой цели требуются различные сторонние приложения и настройка ОС.
- Если вы добавляете новый домен на вашем веб-сервере необходимо отредактировать сотни файлов конфигурации, чтобы включить все функции добавленного домена.
- Если один из размещенных доменов требует другая настройка PHP чем в остальных доменах, реализация этого в ядре веб-сервера Apache очень сложна и требует значительной настройки вашего веб-сервера.
- Производственному веб-серверу требуется брандмауэр для блокировки нежелательного трафика, который может вызвать высокую нагрузку на ваш сервер. Реализация ИПТАБЛИЦА правила с командной строкой очень сложны. Для написания эффективных правил брандмауэра для блокировки нежелательного трафика необходимы знания базовой среды Linux/Unix. IPTABLE основан на модуле netfilter; это брандмауэр уровня ОС, который позволяет администратору создавать правила для входящего/исходящего трафика на сервере.
- Для рабочего веб-сервера требуется несколько различных приложений, таких как Эл. адрес, Ftp для загрузки файла, Система имен доменов для припаркованных доменов. Управление всеми этими приложениями в базовой системе Linux/Unix требует знаний в соответствующих технологиях.
Итак, можно сказать, что управление веб-сервером для нескольких доменов — очень сложная задача, требующая редактирования сотен файлов конфигурации, настройки каждого приложения для достижения желаемого результата. Устранение ошибок в любой конфигурации будет очень трудным для новичков.
Решение с использованием Cpanel или аналогичного программного обеспечения
Cpanel предоставляет графический способ управления вашим веб-сервером.. Он предназначен для предоставления услуг массового хостинга, которые просты в использовании и настройке. cPanel снизила технические барьеры для входа в систему управления хостингом и веб-серверами. Он упрощает сложную задачу и предоставляет множество полезных и простых в использовании веб-интерфейсов, которые выполняют общие задачи системного администрирования, необходимые для работы веб-сервера.
cPanel компилирует собственную версию программного обеспечения.
Если вам необходимо перекомпилировать ваш веб-сервер, то есть Apache, на обычной платформе Linux, вам придется вручную выбрать/найти необходимый модуль. cPanel предоставляет функциональность Easyapache, которая представляет собой метод компиляции веб-сервера на основе сценариев.
Он не только предоставляет вам веб-сервисы, но и Mail, DNS, FTP и многие другие службы, необходимые для вашего веб-приложения.
Задача, требующая опыта работы с базовым хостингом на базе Linux/Unix, например установка SSL, перекомпиляция Apache с различными модулями PHP, обновление веб-безопасности, настройка эффективных правил IPTABLE, добавление пользователей ftp, создание почтовых учетных записей для каждого домена, сканирование корня вашего документа антивирусом и создание баз данных легко выполнить с помощью cPanel.
Он предоставляет множество сценариев, которые исправляют, устанавливают и устраняют распространенные административные задачи.
Он обеспечивает функции резервного копирования и восстановления, устраняя необходимость вручную копировать файлы в хранилище резервных копий. Если вы создаете резервную копию своего домена, cPanel создаст tar-файл, который будет содержать корневую папку документов, учетные записи электронной почты и письма, учетные записи FTP, базы данных, записи DNS и другие приложения.
Он также предоставляет надежную документацию и имеет очень большое сообщество пользователей, где вы можете обсудить и получить решение своих проблем.
Итак, можно сказать, что Cpanel лучшее приложение для управления вашим веб-сервером с требуемыми функциями. Оно предоставляет вам простой в использовании интерфейс для управления вашим доменом и механизм, позволяющий избежать сложности управления основным веб-сервером.
Существует множество конкурирующих продуктов cPanel, таких как Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel и т. д.