0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Поднимаем веб-сервер с максимальной изоляцией сервисов

Поднимаем веб-сервер с максимальной изоляцией сервисов

Содержание статьи

  • Введение
  • Виртуальный LAMP
  • Шаг 1. Установка libvirt и создание шаблонов ВМ
  • Шаг 2. Поднимаем MySQL
  • Шаг 3. Поднимаем memcached
  • Шаг 4. Поднимаем Apache/PHP
  • Шаг 5. Поднимаем nginx в режиме реверс-прокси
  • Дальнейшие шаги
  • INFO
  • Выводы

Обычно, когда встает задача поднять среднестатистический веб-сервер, администратор выбирает одну достаточно производительную виртуальную или физическую машину, которая способна справиться с ожидаемой нагрузкой, и поднимает на ней стек LAMP, включающий в себя Apache, PHP, MySQL, а также, возможно, memcached, nginx и реверс-прокси. Однако это далеко не самый эффективный и безопасный сценарий, лучшим решением будет разнести все компоненты стека по разным виртуальным машинам.

Шаг 2: настройка фаервола

Перед тестированием nginx необходимо настроить фаервол для того, чтобы дать доступ сервису. Nginx регистрирует себя как сервис с утилитой ufw — благодаря этому дать доступ nginx довольно легко.

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

Вам высветится вот такой список:

То есть для nginx доступны 3 профиля:

  • Nginx Full: профиль открывает два порта – 80 (обычный, незашифрованный веб-трафик) и 443 (TLS/SSL зашифрованный трафик)
  • Nginx HTTP: профиль открывает только порт 80 (обычный, незашифрованный веб-трафик)
  • Nginx HTTPS: профиль открывает только порт 443 (TLS/SSL зашифрованный трафик)

Рекомендуется включать наиболее ограниченный профиль, но при условии, что он будет пропускать тот трафик, который вы настроили. Так как SSL-протокол пока еще не настроен, вам нужно открыть порт 80 для обычного трафика.

Проверить изменения можно командой:

В выводе вы увидите, что HTTP-трафик разрешен:

Чтобы отображать веб-страницы посетителям нашего сайта, мы собираемся использовать Nginx, быстрый и современный веб-сервер.

Все программное обеспечение, используемое в этой процедуре, будет взято из репозиториев пакетов Ubuntu по умолчанию. Это означает, что мы можем использовать пакет apt для установки.

Установить Nginx можно командой.

Важно. Как мы уже говорили, чем лучше скорость сайта, тем лучше он ранжируется в поисковиках. Поэтому настоятельно рекомендую ознакомиться со статьей по сборке Nginx с модулем ngx_pagespeed. Данный модуль уменьшает размер страниц и повышает скорость сайта. Несмотря на то, что инструкция написана для Debian, она также должна работать и на Ubuntu. Такая оптимизация позволила мне набрать 99 балов на Google PageSpeed Insights.

Читать еще:  Vk com вконтакте социальная сеть зарегистрироваться. Регистрация и вход на свою страницу в Контакте — что делать если войти в ВК не получается. Вконтакте Моя Страница. Вконтакте вход на страницу

После установки Nginx автоматически запустится, поэтому проверить установку можно просто введя ваш IP адрес в браузере.

Если вы все сделали правильно, то должны увидеть следующее.

Приветственная страница Nginx

Шаг 4 — Управление процессом Nginx

Теперь, когда Nginx установлен и мы убедились в его работоспособности, ознакомимся с некоторыми базовыми командам для управления нашим веб-сервером.

Для остановки веб-сервера используйте команду:

Для запуска остановленного веб-сервера наберите:

Для перезапуска веб-сервера можно использовать следующую команду:

Если вы вносите изменения в конфигурацию Nginx, часто можно перезапустить его без закрытия соединений. Для этого можно использовать следующую команду:

По умолчанию Nginx настроен на автоматический старт при запуске сервера. Если такое поведение веб-сервера вам не нужно, вы можете отключить его следующей командой:

Для повторного включения запуска Nginx при старте сервера введите:

Шаг 4: Настройка Nginx для использования PHP Processor

Теперь у нас установлены все необходимые компоненты. Но нам ещё нужно настроить Nginx, чтобы он использовал PHP processor для динамичного содержимого.

Мы делаем это на уровне блока сервера (блоки сервера это как виртуальные хосты в Apache). Откройте стандартный файл конфигурации блоков сервера Nginx:

В настоящее время, если удалить комментарии, стандартный блок сервера Nginx выглядит примерно так:

В этом файле для нашего сайта нам нужно сделать некоторые изменения.

  • Для начала нам нужно добавить index.php в качестве первого значения нашей директивы index, чтобы файлы с названием index.php обрабатывались, когда запрошена директория.
  • Мы можем изменить директиву server_name для указания на доменное имя нашего сервера или на внешний IP адрес.
  • Для обработки PHP нам нужно просто раскомментировать сегмент, который отвечает за PHP запросы. Это блок location

.php$, включая сниппет fastcgi-php.conf и ассоциированный с php-fpm сокет.

  • Мы раскомментируем блок location по работе с .htaccess файлами. Nginx не работает с этими файлами. Если так случиться, что какие-либо из них попадут в корень документов, они будут доступны для посетителей.
  • После изменений рассмоменированные строки выглядят так:

    После того, как вы сделали указанные выше изменения, сохраните и закройте этот файл.

    Проверьте синтаксис файла конфигурации командой:

    Если будет сообщено о каких-либо ошибках, перед тем как продолжить вернитесь и перепроверьте ваш файл.

    Когда вы готовы, перезагрузите Nginx, чтобы изменения вступили в силу:

    Установка VestaCP

    Для установки перейдите на сайт https://vestacp.com/install/. На этой странице выбираем нужную нам конфигурацию. Рассмотрим пример установки nginx+php-fpm на сервер Centos 7.

    После нажатия кнопки «Generate Install Command», мы получим код для установки панели

    Далее, в соответствии с инструкцией подключаемся по ssh к нашему серверу. Вводим команду

    Запускаем скрипт установки.

    Вы должны запускать свой скрипт установки, со своими параметрами.

    Проверяем еще раз выбранные компоненты для установки, если все верно вводим “y”

    После чего вся установка пройдет в автоматическом режиме. Когда установка закончится вы увидите ссылку и данные для входа в web интерфейс VestaCP

    Набираем в строке поиска указанную ссылку, и после ввода логина с паролем попадаем в WEB интерфейс VestaCP.

    Что бы сменить язык на русский, кликните по ссылке admin и выберите в поле Language: ru

    Также здесь можно задать остальные настройки пользователя.

    Настройка NGINX

    Вся прелесть настройки сводится к тому что вы всегда можете проверить правильность своих настроек выполнив команду:

    Варианты конфигурации для сайтов

    Дальше надо определится как будем работать с настройкой сайтов.
    Существует два пути:

    • редактирование всё в одном файле;
    • для каждого сайта сделать свой файл настроек.

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

    Главный конфигурационный файл

    Скопируем оригинальный конфигурационный фал Nginx и приведем файл к следующему виду:

    Конфигурации Nginx для сайтов

    Связка c PHP осуществляется с использованием php-fpm. Узнать более подробно можно из статьи «PHP от Remi для CentOS 7«.

    Рассмотрим на примере конфигурации для сайта на котором работает phpMyAdmin. Конфигурационный файл выглядит следующим образом:

    Запросы на ресурс будут осуществятся с проксирующего сервира Nginx. О том как перевести ресурс на работу по https вы узнаете ниже.

    Доступ к ресурсу по паролю

    Иногда для безопасности необходимо закрыть ресурс на пароль. Сделаем это средствами Nginx используя механизм basic auth.

    Добавим в секцию server необходимого сайта код:

    Создаем файл с логином и паролем для доступа:

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

    Команды управления

    Шаг 3. Проверьте веб-сервер

    По окончании процесса установки Ubuntu 16.04 запускает Nginx. Веб-сервер должен быть запущен.

    Мы можем проверить systemd системы systemd init, чтобы убедиться, что служба запущена, набрав:

    Как вы видите выше, служба, похоже, успешно запущена. Однако лучший способ проверить это – фактически запросить страницу у Nginx.

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

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

    Попробуйте ввести это в командной строке вашего сервера:

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

    Альтернативой является типизация, которая должна дать вам ваш публичный IP-адрес, как видно из другого места в Интернете:

    Когда у вас есть IP-адрес или домен вашего сервера, введите его в адресную строку вашего браузера:

    Вы должны увидеть целевую страницу Nginx по умолчанию, которая должна выглядеть примерно так:

    Эта страница просто включена в Nginx, чтобы показать вам, что сервер работает правильно.

    Как в ISPmanager установить и обновить MySQL 5.7 и MariaDB 10.1

    В ISPmanager 5 версия MySQL по умолчанию — это 5.5. Другие версии устанавливаются из панели с помощью Docker. Звучит страшно, но всё решается парой кликов мыши.

    1. Слева в боковом меню находим Настройки — Серверы баз данных ;
    2. Добавляем новую базу данных с помощью Создать ;
    3. Выбираете нужную версию MySQL или MariaDB, вводите нужное название, пароль от сервера, остальное как есть;
    4. Docker автоматически всё установит. Вот как будет выглядеть список серверов баз данных после установки:
    5. Теперь при создании новой базы данных можно выбрать, на каком сервере создавать.
    6. При необходимости, базу данных можно вручную перенести из старого сервера MySQL на новый.

    Как в Docker запустить, перезапустить, остановить MySQL, MariaDB

    Все команды в Docker идут через docker . Обращаться надо к названию контейнера.
    Например, в ISPmanager переходим в Настройки — Серверы баз данных — в столбце Имя находим нужный сервер (в моём случае, это mysql-5.7), это и есть имя в Docker.

    Теперь, например, команда запустить сервер:

    Ошибка в запросe (1273): Unknown collation: ‘utf8mb4_unicode_520_ci’

    Чтобы решить подобную ошибку, достаточно обновить версию MySQL до версии 5.6 или 5.7, либо установить MariaDB 10.1 или выше.
    Если обновление невозможно, тогда поможет следующее:

    1. Открываем дамп базы данных текстовом редакторе, например, Notepad++ или Far Manager
    2. С помощью автозамены ( Ctrl + H в Notepad++) заменяем utf8mb4_unicode_520_ci на utf8_general_ci
    3. Затем, ещё раз массово заменяем utf8mb4 на utf8
    4. Сохраняем изменения и используем получившийся дамп для того, чтобы развернуть из него копию базы данных.
    Ссылка на основную публикацию
    Статьи c упоминанием слов:
    Adblock
    detector