Технология Docker набирает всё большую популярность среди разработчиков и DevOps-специалистов в наши дни, поскольку позволяет без особого труда настроить различные окружения один раз, а затем воспроизводить их на, казалось бы, совсем не совместимом оборудовании. Но начнём мы наш цикл статей о (далее…)
В репозиториях Debian и Ubuntu есть множество различных программ, которых будет достаточно для удовлетворения потребностей большинства пользователей. Но есть специфичные программы, которых пока что нет в репозиториях, также там нет новых версий программ. Поэтому достаточно часто в Ubuntu, Debian, (далее…)
В данной статье пойдет речь о мониторинге нагрузки, именно, в контексте веб-сервера. Мы не будем особо заострять внимание на проверке производительности системы, как, например, командами top, htop, free и так далее.
XTX Markets открывает исходный код TernFS, своей распределённой файловой системы экзабайтного масштаба
XTX Markets открывает исходный код TernFS, облачной распределённой файловой системы эксабайтного масштаба, созданной для работы с триллионами файлов и миллионами клиентов.
В Microsoft Security Baseline содержатся рекомендованные настройки, которые Microsoft предлагает использовать на рабочих станциях и серверах Windows для обеспечения безопасной конфигурации для защиты контролеров домена, рядовых серверов, компьютеров и пользователей. На основе Microsoft Security (далее…)
Ядро Linux за авторством Линуса Торвальдса недавно отметило юбилей, вот уже три десятилетия оно используется в компьютерах по всему миру. Благодаря тому, что оно перенесено на множество платформ, его можно встретить практически везде, в персональных компьютерах, смартфонах, носимой электронике, (далее…)
Zabbix — это система мониторинга сервера с открытым исходным кодом, который используется многими организациями для обеспечения бесперебойной работы серверов. Этот инструмент позволяет следить за состоянием огромного количества серверов, а также установленных на них программ, включая базы данных, (далее…)
Прежде чем начать установку и настройку сервера, выполним следующие действия.
1. Обновление списка пакетов в репозитории
Для корректной установка пакетов из репозитория необходимо обновить его кэш. Для этого вводим команду:
apt update
На чистой системе также стоит обновить все пакеты:
apt upgrade
2. Настройка времени
Для веб-сервера важно, чтобы системное время было правильное.
Сначала зададим правильный часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере будет установлено московское время.
Полный список часовых поясов можно посмотреть командой:
timedatectl list-timezones
Устанавливаем утилиту для синхронизации времени:
apt install chrony
3. Настройка брандмауэра
По умолчанию, в большинстве систем на основе deb брандмауэр настроен в режиме «Разрешить все», и он не требует никакой настройки. Если в нашей системе брандмауэр не настроен на запрет пакетов, то настройки из данного раздела выполнять не обязательно.
Открываем порт 80 (http):
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
Если мы планируем использовать https, то также открываем 443 порт:
iptables -I INPUT -p tcp —dport 443 -j ACCEPT
Для сохранения правил используем команду:
iptables-save > /etc/iptables.rules
Чтобы настройки применились после перезагрузки сети или сервера, создаем файл:
* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль устарел и не поддерживает php 7 и выше, которая является наиболее актуальной и устанавливается по умолчанию.
Разрешаем модуль мультипроцессовой обработки mpm_prefork:
a2enmod mpm_prefork
Если ваш сайт работает только на устаревшей версии PHP, то модуль мультипроцессовой обработки mpm_event нужно оставить, а модуль mpm_prefork нет необходимости активировать.
Разрешаем модуль rewrite:
a2enmod rewrite
Для применения настроек перезапускаем веб-сервер:
systemctl restart apache2
Проверим работоспособность apache. Для этого откроем браузер и перейдем по адресу http://<IP-адрес сервера> — должна открыться стартовая страница Apache:
При получении ошибки 500 Internal Server Error, смотрим в лог:
tail /var/log/apache2/error.log
Скорее всего, мы увидим ошибку:
… Authentication not configured
Проблема в том, что в Astra Linux веб-сервер Apache требует предварительной аутентификации. Для решения проблемы открываем конфигурационный файл:
vi /etc/apache2/conf-enabled/astra.conf
Вводим:
AstraMode off
Перезапускаем сервис:
systemctl restart apache2
Ошибка должна исчезнуть.
Веб-сервер установлен. Идем дальше.
PHP
Устанавливаем интерпретатор php и модуль для связки apache и php:
apt install php libapache2-mod-php
Будет установлена нативная версия PHP для используемой операционной системы. То есть, будет взята самая последняя версия, доступная в репозитории. Посмотреть версию PHP после установки можно командой:
php -v
В моем случае был ответ:
PHP 7.0.33-0+deb9u12+astra1 (cli) (built: Apr 8 2022 22:40:22) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.33-0+deb9u12+astra1, Copyright (c) 1999-2017, by Zend Technologies
* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html и так далее.
Разрешаем модуль для установленной версии PHP:
a2enmod php7.0
* в моем примере 7.0.
Для применения настроек перезапустим апач:
systemctl restart apache2
Для проверки создадим файл:
vi /var/www/html/index.php
<?php
phpinfo();
?>
Снова переходим по адресу http://<IP-адрес сервера> — теперь мы должны увидеть страницу с подробной информацией о PHP:
Связка Apache + PHP настроена.
СУБД
Мы рассмотрим установку PostgreSQL в двух вариантах — российский Postgres Pro и ванильный PostgreSQL.
а) Postgres Pro
Postgres Pro хорошо подходит для Astra Linux — она без проблем устанавливается на данную систему. Сначала необходимо настроить репозиторий. Разработчик предоставляет готовый скрипт — скачаем его командой:
* обратите внимание, что в нашем примере мы хотим установить postgresql версии 14. Если вам нужна другая версия, заменить ее.
Команда может выдать ошибку, если не установлен curl. Исправить это можно так:
apt install curl
Выполним скачанный скрипт:
sh pgpro-repo-add.sh
Теперь можно установить postgres pro:
apt install postgrespro-std-14
Сервис будет автоматически запущен, а также будет инициализирована база. В данной инструкции мы не будет рассматривать, как работать с СУБД, но в конце я приведу список полезных материалов по работе с PostgreSQL.
б) PostgreSQL
Ванильный PostgreSQL устанавливается одной командой, но в репозитории Astra Linux доступна только старая версия. Установить более свежую версию PostgreSQL на данную систему потребует ручной установки некоторых пакетов из сторонних репозиториев и не будет рассмотрено в рамках данной инструкции.
И так, нам нужно ввести одну команду:
apt install postgresql
Сервис будет автоматически запущен, а также будет инициализирована база.
PostgreSQL + PHP
Мы можем обращаться к PostgreSQL из PHP с помощью функции pg_connect или PDO (PHP Data Objects). В зависимости от этого нам нужно поставить либо один пакет, либо другой.
а) Для работы с помощью pg_connect:
apt install php-pgsql
б) Для работы через PDO:
apt install php-pdo
Для применения настроек перезапускаем веб-сервер.
Вводим:
systemctl restart apache2
PhpPgAdmin
Дополнительно, добавим на наш сервер веб-инструмент для работы с базой PostgreSQL. К сожалению, данный инструмент не работает с Postgres Pro. Также есть некоторые нюансы установки и запуска. Обо всем по порядку.
Сначала установим git (он понадобиться для загрузки проекта phppgadmin):
Приводим опцию $conf['servers'][0]['host'] к виду:
$conf['servers'][0]['host'] = '127.0.0.1';
* в данном примере мы указываем, что будем подключаться к серверу PostgreSQL по сети, адресу локальной петли.
Также откроем файл:
vi /var/www/html/phppgadmin/libraries/lib.inc.php
Комментируем следующие строки:
// if (version_compare(phpversion(), $phpMinVer, '<')) // exit(sprintf('Version of PHP not supported. Please upgrade to version %s or later.', $phpMinVer));
* для работы PhpPgAdmin требуется PHP версии 7.2 и выше. В нашем же примере устанавливается PHP версии 7.0. Установить более свежую версию в Astra Linux — дело отдельной инструкции, поэтому для решения проблемы мы просто комментируем часть кода, которая отвечает за проверку версии PHP. Это очень плохое решение, но ничего лучше я не нашел.
Устанавливаем расширение PHP mbstring:
apt install php-mbstring
Перезапускаем апач:
systemctl restart apache2
Переходим по адресу http://<IP-адрес сервера>/phppgadmin — откроется страница портала управления PostgreSQL.
Тюнинг
Внесем небольшие изменения в нашу конфигурацию PHP:
post_max_size — максимальный объем отправляемых на сервер данных;
upload_max_filesize — максимально допустимый размер одного загружаемого файла;
short_open_tag — разрешение использования короткого способа открытия php (<?);
date.timezone — временная зона, которая будет использоваться веб-сервером, если ее не переопределить настройками в коде php или в файле .htaccess.
Данные изменения вносятся в разные файлы в зависимости от версии PHP. Например, для нашей php версии 7.0 мы открываем на редактирование следующий файл:
Общепринятые практики информационной безопасности требуют обязательной блокировки экрана компьютера при неактивности пользователя. Пользователь Windows может самостоятельно заблокировать экран компьютера (сочетанием клавиш Win+L). Но лучше внедрить групповую политику, которая обеспечит (далее…)