В этом руководстве мы рассмотрим процедуру установки и настройки работы двух web-серверов с целью использования преимуществ каждого из них, руководство подразумевает как отдельное настраивание, так и взаимное. В этой статье будет идти речь о настройке сервера с использованием: Apache2, Nginx, ngx_pagespeed, PHP, PHP-FPM, MariaDB и MemCached. HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения. Установите пакеты, необходимые для подключения apt-репозитория: Для подключения apt-репозитория для стабильной версии nginx, выполните следующую команду: Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов: Проверьте, верный ли ключ был импортирован: Вывод команды должен содержать полный отпечаток ключа 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62: Чтобы установить nginx, выполните следующие команды:  Запускаем nginx Проверяем, что пользователь nginx user www-data: Проверим работу веб-сервера. Открываем браузер и вводим в адресной строке http://«IP-адрес сервера». В итоге мы должны увидеть заголовок «Welcome to nginx!». FastCGI — протоколу взаимодействия веб-сервера с программами. FPM расшифровывается как Fastcgi Process Manager. Устанавливаем PHP-FPM: Разрешаем автозапуск php-fpm и запускаем его: Обратите внимание, что мы запустили php-fpm версии 7.2. Но установлена может быть и другая версия — ее можно узнать по версии php командой php -v. ngx_pagespeed (или просто pagespeed) – это модуль Nginx, предназначенный для автоматической оптимизации работы сайта путём сокращения времени загрузки сайта в браузере. Дополнительную информацию о модуле можно найти на официальном сайте. Устанавливаем необходимые пакеты: Создаем и переходим в папку, в которой будем собирать ngx_pagespeed: Узнаем текущую версию nginx: Скачиваем необходимую версию: В нашем случае это nginx 1.18 Скачиваем репозиторий с ngx_pagespeed: Скачиваем папку psol: Собираем файл ngx_pagespeed.so: Копируем файл ngx_pagespeed.so: Для поддержки файла .htaccess, который используется многими сайтами, необходимо установить и настроить веб-сервер Apache. Устанавливаем apache и модуль для php: Заходим в настройки портов: И редактируем следующее: мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX. Запрещаем mpm_event: по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше. Разрешаем модуль мультипроцессовой обработки mpm_prefork: Разрешаем модуль php: Разрешаем модуль rewrite: Разрешаем модуль setenvif: Разрешаем автозапуск и запускаем службу: Открываем браузер и вводим в адресную строку http://«IP-адрес сервера»:8080. Мы должны увидеть привычную страницу. в разделе Server API мы должны увидеть Apache. Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip. Создаем конфигурационный файл со следующим содержимым: Записываем: Активируем модуль: Перезапускаем apache: Для проверки настройки открываем браузер и вводим в адресную строку http://«IP-адрес сервера», где откроется наша страница phpinfo. В разделе Apache Environment мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу в опции REMOTE_ADDR. Устанавливаем необходимые библиотеки для PHP и PHP-FPM: Установим MariaDB: Разрешаем автозапуск и запускаем СУБД: Зададим пароль для пользователя root: Перезапускаем apache2: Создаем и настраиваем пользователя: Настраиваем возможность входа в adminer.php Перезапускаем: Memcached — Программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы. Для начала, выполняем установку пакетов: После разрешаем автозапуск и запускаем сервис кэширования: Перезапускаем apache2: Для проверки, что модуль memcached появился в PHP, открываем наш сайт в браузере — в phpinfo должна появиться новая секция Memcached. Доступы и настройка находится в файле memcached.conf: Проверяем работу: Создаем пользователя: Добавляем пользователя в группу www-data: Даем права sudo пользователю: Создаем каталог: Задаем права на папки: Создаем индексный файл: С содержанием: Создаем ярлык: Все запросы будут переводится на локальный сервер по порту 8080, на котором работает apache, кроме обращений к статическим файлам (jpg, png, css и так далее). Создаем файл: Создаем ярлык: Проверяем корректность настроек конфигурационных файлов: Перезапускаем веб-сервер: Создаем файл: Все запросы будут переводится на локальный сервер по порту 8080, на котором работает apache, кроме обращений к статическим файлам (jpg, png, css и так далее). Создаем файл: Создаем ярлык: Проверяем корректность настроек конфигурационных файлов: Перезапускаем веб-сервер: Откройте файл nginx.conf: Добавляем в начало: Настраивается PageSpeed в http контексте, поэтому поместите эти директивы в новый файл конфигурации под названием example.com.conf в файле /etc/nginx/conf.d каталог. Создаем папку для хранения кэша: Проверяем конфигурацию Nginx и применяем настройки: