Рубрика: Linux-Windows

  • Запуск контейнера Docker

    Технология Docker набирает всё большую популярность среди разработчиков и DevOps-специалистов в наши дни, поскольку позволяет без особого труда настроить различные окружения один раз, а затем воспроизводить их на, казалось бы, совсем не совместимом оборудовании. Но начнём мы наш цикл статей о (далее…)

  • Ошибка add-apt-repository command not found

    В репозиториях Debian и Ubuntu есть множество различных программ, которых будет достаточно для удовлетворения потребностей большинства пользователей. Но есть специфичные программы, которых пока что нет в репозиториях, также там нет новых версий программ. Поэтому достаточно часто в Ubuntu, Debian, (далее…)

  • Анализ нагрузки на веб-сервер Linux

    Тематические термины: веб-сервер, nginx, Apache, PHP-FPM.

    В данной статье пойдет речь о мониторинге нагрузки, именно, в контексте веб-сервера. Мы не будем особо заострять внимание на проверке производительности системы, как, например, командами top, htop, free и так далее.

  • XTX Markets открывает исходный код TernFS, своей распределённой файловой системы экзабайтного масштаба

    XTX Markets открывает исходный код TernFS, своей распределённой файловой системы экзабайтного масштаба


    XTX Markets открывает исходный код TernFS, облачной распределённой файловой системы эксабайтного масштаба, созданной для работы с триллионами файлов и миллионами клиентов.

    XTX Markets объявила, (далее…)

  • Усиливаем защиту Windows с помощью GPO Microsoft Security Baseline

    В Microsoft Security Baseline содержатся рекомендованные настройки, которые Microsoft предлагает использовать на рабочих станциях и серверах Windows для обеспечения безопасной конфигурации для защиты контролеров домена, рядовых серверов, компьютеров и пользователей. На основе Microsoft Security (далее…)

  • Что такое ядро Linux

    Ядро Linux за авторством Линуса Торвальдса недавно отметило юбилей, вот уже три десятилетия оно используется в компьютерах по всему миру. Благодаря тому, что оно перенесено на множество платформ, его можно встретить практически везде, в персональных компьютерах, смартфонах, носимой электронике, (далее…)

  • Установка zabbix CentOS 7

    Zabbix — это система мониторинга сервера с открытым исходным кодом, который используется многими организациями для обеспечения бесперебойной работы серверов. Этот инструмент позволяет следить за состоянием огромного количества серверов, а также установленных на них программ, включая базы данных, (далее…)

  • Astra Linux + Apache + PHP + PostgreSQL

    Используемые термины: Astra LinuxApachePHPPostgreSQL.

    В данной инструкции мы рассмотрим небольшой пример, как быстро поднять веб сервер на Astra Linux с использованием:

    • Веб-сервера Apache.
    • Интерпретатора PHP 7.
    • СУБД Postgres Pro / PostgreSQL (рассмотрим оба варианта) версии 14.
    • PhpPgAdmin для управления PostgreSQL.

    В моем примере использовался дистрибутив Орел. С большой долей вероятности, команды будут работать для SE.

    Предварительная настройка

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

    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

    Чтобы настройки применились после перезагрузки сети или сервера, создаем файл:

    vi /etc/network/if-pre-up.d/iptables

    #!/bin/bash
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

    iptables-restore < /etc/iptables.rules
    exit 0

    И разрешаем его запуск на выполнение:

    chmod +x /etc/network/if-pre-up.d/iptables

    Apache

    Установим веб-сервер командой:

    apt install apache2

    Запрещаем модуль mpm_event:

    a2dismod mpm_event

    * по умолчанию, 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:

    * в нашем примере мы настроим доступ к серверу только по http. Для настройки https читайте инструкцию Настройка Apache + SSL для работы сайта по HTTPS.

    При получении ошибки 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

    Теперь открываем настройку модуля dir:

    vi /etc/apache2/mods-available/dir.conf

    И добавляем впереди индексных файлов index.php:

    <IfModule dir_module>
        DirectoryIndex index.php index.html …
    </IfModule>

    * если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить 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 — она без проблем устанавливается на данную систему. Сначала необходимо настроить репозиторий. Разработчик предоставляет готовый скрипт — скачаем его командой: 

    curl -o pgpro-repo-add.sh https://repo.postgrespro.ru/pgpro-14/keys/pgpro-repo-add.sh

    * обратите внимание, что в нашем примере мы хотим установить 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):

    apt install git

    Теперь клонируем сам проект phppgadmin:

    git clone https://github.com/phppgadmin/phppgadmin.git /var/www/html/phppgadmin

    * в нашем примере мы берем с официального репозитория проект phppgadmin и помещаем его в каталог /var/www/html/phppgadmin.

    Задаем в качестве владельца созданного каталога с файлами пользователя www-data:

    chown www-data:www-data -R /var/www/html/phppgadmin

    Копируем шаблон конфигурационного файла в config.inc.php и помещаем в каталог conf:

    cp /var/www/html/phppgadmin/conf/config.inc.php-dist /var/www/html/phppgadmin/conf/config.inc.php

    Открываем его на редактирование:

    vi /var/www/html/phppgadmin/conf/config.inc.php

    Приводим опцию $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 мы открываем на редактирование следующий файл:

    vi /etc/php/7.0/apache2/php.ini

    И правим следующее:

    post_max_size = 1G

    upload_max_filesize = 512M

    short_open_tag = On

    date.timezone = "Europe/Moscow"

    И перезапускаем apache:

    systemctl restart apache2

    Читайте также

    Другие полезные материалы:

    1. Установка и настройка связки NGINX + PHP + СУБД на Astra Linux.

    2. Настройке полноценного веб-сервера на Ubuntu.

    3. Настройка Apache + SSL для работы сайта по HTTPS.

    4. Как работать с пользователями в PostgreSQL.

    5. Как настроить удаленное подключение к PostgreSQL.

    6. Резервное копирование PostgreSQL.

    7. Установка и настройка vsFTPd на Ubuntu.

  • Выпущен GNU Coreutils 9.8 с поддержкой SHA3

    Выпущен GNU Coreutils 9.8 с поддержкой SHA3


    Выпущен GNU Coreutils 9.8 с поддержкой SHA3, Base58, nproc cgroup v2 и исправлениями ошибок в ключевых утилитах.

    Проект GNU объявил о выпуске coreutils 9.8, новой стабильной версии основной коллекции утилит для работы с файлами, оболочкой и текстом, (далее…)

  • Блокировка экрана компьютера при бездействии через GPO

    Общепринятые практики информационной безопасности требуют обязательной блокировки экрана компьютера при неактивности пользователя. Пользователь Windows может самостоятельно заблокировать экран компьютера (сочетанием клавиш Win+L). Но лучше внедрить групповую политику, которая обеспечит (далее…)