В этой статье мы будем настраивать web-сервер Apache на Ubuntu. Точнее это будет не Apache, а связка софта Linux — Apache — MySQL — PHP (так называемый LAMP). Но LAMP мы будем настраивать не одной командой, как это принято у новичков, а настраивать будем все по отдельности: то есть поставим отдельно каждый пакет, а затем настроим его. Зачем так сложно? Ведь все это можно сделать вообще не используя терминал. Мы делаем так сложно, чтобы глубже разобраться в работе Linux и уметь решать возникающие проблемы.
Как и в предыдущих статьях будем работать с этой схемой .
К серверу testServer подключаюсь с компьютера adminPС по SSH с помощью программы Putty.
Перед тем как устанавливать web-сервер обновим все пакеты командой:
$ sudo apt-get update
После того, как все обновилось, можно приступать к установке пакетов:
$ sudo apt-get install apache2 libapache2-mod-fastcgi php5 php5-fpm phpmyadmin mysql-clinet-5.6 mysql-server-5.6
Теперь разберем каждый модуль по порядку:
- Apache2 — собственно сам web-сервер Apache версии 2.4
- Libapache2-mod-fastcgi — модуль на Apache, который позволяет работать с пакетом php7.0-fpm
- Php7.0-fpm — служит для связи PHP с Apache
- Phpmyadmin — админская панель для работы с СУБД MySQL
- Mysql-clinet-5.7 — MySQL-клиент
- Mysql-server-5.7 — MySQL-сервер
Спустя некоторое время установки консоль выдаст следующее:
Здесь мы выбираем пароль для доступа к базе данных MySQL. Делаем его максимально сложным.
В следующем окне нас спрашивают под каким сервером поднимать phpMyAdmin: apache2, lighttpd.
Выбираем apache2 так как мы устанавливаем именно его.
Здесь у нас спрашивают, нужно ли конфигурировать базу данных для phpmyadmin:
Выбираем «Yes». Далее нас попросят ввести пароль для базы данных MySQL.
После того, как все пакеты установятся, пробуем зайти на сервер. В браузере вводим IP-адрес сервера (в моем случае это 172.16.1.2).
Должна открыться стартовая страничка Apache2.
Что делать дальше? А дальше будем отключать ненужные модули и включать нужные.
В первую очередь займемся модулем MPM.
Модуль MPM (Multi-Processing Module) — модуль мультипроцессовой обработки. Используется сервером Apache для обработки нескольких запросов пользователе несколькими процессами единовременно.
Чаще всего в Apache используют 3 основных варианта MPM – это Worker, PreFork или Event.
Apache MPM PreFork — данный модуль запускает по отдельному процессу на каждый запрос, каждый процесс единовременно обрабатывает только 1 поток (thread) на одно соединение. PreFork заранее создает определенное количество процессов, которые не требуют времени на отдельный вызов при поступлении запроса к серверу и не нуждаются в выполнении маршалинга (в технологии ORPC – процесс упаковки запроса, включая параметры, в стандартный формат, пригодный для передачи по сети) во время его обработки. Такой модуль является наиболее быстрым, по сравнению с другими модулями MPM. Это полезно когда на сервер Apache поступает ограниченное количество одновременных запросов. Каждый процесс ожидает, пока процессор сможет его обработать.
Минусом модуля MPM PreFork для web-сервера Apache, увеличения количество одновременно запускаемых процессов серьезно повлияет на используемую сервером память.
Плюсом модуля MPM PreFork для web-сервера Apache является его безопасность, каждый процесс изолирован от других. Его стоит использовать когда другие модули не поддерживают опцию MPM.
Apache MPM Worker – использует многопоточную систему обработки запросов, это дает возможность обработать большое количество соединений. MPM Worker запускает несколько процессов, которые, в свою очередь, запускают несколько потоков (threads).
Плюсом модуля MPM Worker для web-сервера Apache является не такое ресурсоемкий при потреблении оперативной памяти сервера, от модуля PreFork. Улучшается обработка большого количества одновременных запросов.
Минусом модуля MPM Worker для web-сервера Apache является его некоторая нестабильность, по сравнению с PreFork (проблемы в одном процессе могут затронуть другие соединения).Модуль Worker связывает каждое keep-alive соединение с потоком, а не с запросом, поток может выполнятся долгое время, пока соединение не будет полностью разорвано.
Apache MPM Event. Похож по своему подходу на MPM Worker. Отличие Event от Worker — он поддерживает выделенный поток для каждого установленного соединения, передает дочерним потокам запрос только после того, как он был непосредственно сделан. После обработки этого запроса – поток освобождается.
Плюсом модуля MPM Event для web-сервера Apache, после обработки запроса поток освобождается и выполняет следующие запросы. Если у вас не частые запросы клиентов, но поддерживают долгие keep-alive соединения с сервером, то этот модуль для вас.
Отключаем модуль MPM Event. Это делается командой:
$ sudo a2dismod mpm_event
Включаем модуль MPM Worker.
$ sudo a2enmod mpm_worker
Также включаем модуль Proxy FCGI (анонимайзер)
$ sudo a2enmod proxy_fcgi
Вся конфигурация сервера Apache находится в папке /etc/apache2:
$ cd /etc/apache2/
$ ls -l
Состав папки apache2:
-
apache2.conf: основной файл настроек Apache2. Содержит глобальные настройки для всего Apache2.
- envvars: файл, где устанавливаются переменные окружения Apache2.
- mods-available: этот каталог содержит конфигурационные файлы как для загрузки модулей, так и для их настройки. Тем не менее не все модули имеют отдельные файлы настройки.
- mods-enabled: содержит символьные ссылки на файлы в /etc/apache2/mods-available. Когда создается символьная ссылка на файл настроек модуля, он включается при следующем рестарте apache2.
- ports.conf: содержит инструкции, которые определяют какие TCP порты прослушивает Apache2.
- sites-available: этот каталог содержит файлы настроек для виртуальных сетевых узлов (Virtual Hosts) Apache2. Виртуальные сетевые узлы позволяют настраивать Apache2 на множество сайтов с отдельными конфигурациями.
- sites-enabled: подобно mods-enabled содержит символьные ссылки на каталог /etc/apache2/sites-available. Аналогично, когда файл настроек из sites-available получает здесь символьную ссылку, соответствующий ему сайт будет активен при следующем перезапуске Apache