Рейтинг@Mail.ru

NetCloud

Простыми словами о сетевых технологиях

Настройка web-сервера в Ubuntu

В этой статье мы будем настраивать web-сервер Apache на Ubuntu. Точнее это будет не Apache, а связка софта Linux — Apache — MySQL — PHP (так называемый LAMP). Но LAMP мы будем настраивать не одной командой, как это принято у новичков, а настраивать будем все по отдельности: то есть поставим отдельно каждый пакет, а затем настроим его. Зачем так сложно? Ведь все это можно сделать вообще не используя терминал. Мы делаем так сложно, чтобы глубже разобраться в работе Linux и уметь решать возникающие проблемы.

Как и в предыдущих статьях  будем работать с этой схемой .

j2nlpo3n

К серверу testServer подключаюсь с компьютера adminPС по SSH с помощью программы Putty.

g0h5aay4

Перед тем как устанавливать 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

Теперь разберем каждый модуль по порядку:

  1. Apache2 — собственно сам web-сервер Apache версии 2.4
  2. Libapache2-mod-fastcgi — модуль на Apache, который позволяет работать с пакетом php7.0-fpm
  3. Php7.0-fpm — служит для связи PHP с Apache
  4. Phpmyadmin — админская панель для работы с СУБД MySQL
  5. Mysql-clinet-5.7 — MySQL-клиент
  6. Mysql-server-5.7 — MySQL-сервер

Спустя некоторое время установки консоль выдаст следующее:

2ael7qur

Здесь мы выбираем пароль для доступа к базе данных MySQL. Делаем его максимально сложным.

В следующем окне нас спрашивают под каким сервером поднимать phpMyAdmin: apache2, lighttpd.

bhkaozss

Выбираем apache2 так как мы устанавливаем именно его.

Здесь у нас спрашивают, нужно ли конфигурировать базу данных для phpmyadmin:

jocu7odi

Выбираем «Yes». Далее нас попросят ввести пароль для базы данных MySQL.

После того, как все пакеты установятся, пробуем зайти на сервер. В браузере вводим IP-адрес сервера (в моем случае это 172.16.1.2).

pr9ljwc9

Должна открыться стартовая страничка 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

skrinshot-17-02-2018-171101

Состав папки apache2:

  1. apache2.conf: основной файл настроек Apache2. Содержит глобальные настройки для всего Apache2.
  2. envvars: файл, где устанавливаются переменные окружения Apache2.
  3. mods-available: этот каталог содержит конфигурационные файлы как для загрузки модулей, так и для их настройки. Тем не менее не все модули имеют отдельные файлы настройки.
  4. mods-enabled: содержит символьные ссылки на файлы в /etc/apache2/mods-available. Когда создается символьная ссылка на файл настроек модуля, он включается при следующем рестарте apache2.
  5. ports.conf: содержит инструкции, которые определяют какие TCP порты прослушивает Apache2.
  6. sites-available: этот каталог содержит файлы настроек для виртуальных сетевых узлов (Virtual Hosts) Apache2. Виртуальные сетевые узлы позволяют настраивать Apache2 на множество сайтов с отдельными конфигурациями.
  7. sites-enabled: подобно mods-enabled содержит символьные ссылки на каталог /etc/apache2/sites-available. Аналогично, когда файл настроек из sites-available получает здесь символьную ссылку, соответствующий ему сайт будет активен при следующем перезапуске Apache