Astra linux apache php mysql

Настройка Apache2 в Astra Linux

Сразу после установки сервер настроен и готов к приему запросов на всех сетевых интерфейсах на 80 порту. Если по каким-то причинам он не работоспособен, следует проверить минимально необходимые настройки сервера. В файле /etc/apache2/ports.conf должны быть указаны параметры:
NameVirtualHost *:80
Listen 80
В каталоге /etc/apache2/sites-available должны находиться файлы с настройками виртуальных хостов и как минимум один из них должен быть разрешен к использованию командой:
a2ensite config_filename
Минимальное содержимое таких файлов с конфигурациями виртуальных хостов выглядит следующим образом:

ServerAdmin webmaster@localhost
ServerName server.domain.name
DocumentRoot /path/to/root/dir/

Options Indexes FollowSymLinks MultiViews
AllowOverride None

ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined

После окончания правки конфигурационных файлов необходимо перезапустить сервер командой:
/etc/init.d/apache2 restart
ВНИМАНИЕ! Для обеспечения нормальной работы пользователя с сетевыми сервисами должны быть явно заданы диапазоны его мандатных уровней и категорий с помощью соответствующих утилит, даже если ему не доступны уровни и категории выше 0.

Настройка авторизации

Если не настроена авторизация через Kerberos, по умолчанию для всех ресурсов будет использоваться авторизация через PAM, при этом будет использоваться пользовательская БД, прописанная в настройках ОС. Логин и пароль пользователя будут передаваться от пользователя к серверу в открытом виде с использованием метода аутентификации Basic. Для корректного функционирования авторизации через PAM пользователю, от которого работает web-сервер (по умолчанию — www-data), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках. Например, добавить права на чтение файла /etc/shadow:
usermod -a -G shadow www-data
и права на чтение каталога /etc/parsec/macdb:
setfacl -d -m u:www-data:r /etc/parsec/macdb
setfacl -R -m u:www-data:r /etc/parsec/macdb
setfacl -m u:www-data:rx /etc/parsec/macdb

Читайте также:  php-generated 503

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

Для обеспечения совместной работы web-сервера Apache 2.2 с ALD необходимо:

– наличие в системе, на которой функционирует web-сервер, установленного пакета клиента ALD — ald-client; – разрешение имен должно быть настроено таким образом, чтобы имя системы разрешалось, в первую очередь, как полное имя (например, myserver.example.ru); – клиент ALD должен быть настроен на используемый ALD домен; – в системе должен быть установлен модуль web-сервера Apache 2.2 auth_kerb из пакета libapache2-mod-auth-kerb.

Наличие модуля web-сервера Apache 2.2 auth_kerb предоставляет возможность организации совместной работы с ALD с использованием для аутентификации пользователей посредством Kerberos метода GSSAPI. Для проведения операций по настройке ALD и администрированию Kerberos необходимо знание паролей администраторов ALD и Kerberos. Для обеспечения возможности работы web-сервера Apache 2.2 с ALD необходимо:

  • активировать модуль web-сервера Apache 2.2 auth_kerb при помощи команды:
  • в конфигурационных файлах виртуальных хостов web-сервера Apache 2.2 для областей, требующих авторизации, указать:
  • создать в БД ALD с помощью утилиты администрирования ALD принципала, соответствующего настраиваемому web-серверу Apache. Принципал создается с автоматически сгенерированным случайным ключом:
  • ввести созданного принципала в группу сервисов mac, используя следующую команду:
  • создать файл ключа Kerberos для web-сервера Apache с помощью утилиты администрирования ALD ald-client, используя следующую команду:

Полученный файл должен быть доступен web-серверу Apache по пути, указанному в конфигурационном параметре Krb5Keytab (в данном случае — /etc/apache2/keytab). Права доступа к этому файлу должны позволять читать его пользователю, от имени которого работает web-сервер Apache (как правило, владельцем файла назначается пользователь www-data);

  • сменить владельца полученного на предыдущем шаге файла keytab на пользователя www-data, выполнив следующую команду:
  • сделать файл /etc/apache2/keytab доступным на чтение для остальных пользователей:
  • перезапустить web-сервер Apache, выполнив команду:
Читайте также:  Sun java or openjdk

Источник

Astra Linux + Apache + PHP + PostgreSQL

Обновлено и опубликовано

Опубликовано: 17.04.2023

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

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

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

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

1. Обновление списка пакетов в репозитории

Для корректной установка пакетов из репозитория необходимо обновить его кэш. Для этого вводим команду:

На чистой системе также стоит обновить все пакеты:

2. Настройка времени

Для веб-сервера важно, чтобы системное время было правильное.

Сначала зададим правильный часовой пояс:

timedatectl set-timezone Europe/Moscow

* в данном примере будет установлено московское время.

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

Устанавливаем утилиту для синхронизации времени:

3. Настройка брандмауэра

По умолчанию, в большинстве систем на основе deb брандмауэр настроен в режиме «Разрешить все», и он не требует никакой настройки. Если в нашей системе брандмауэр не настроен на запрет пакетов, то настройки из данного раздела выполнять не обязательно.

iptables -I INPUT -p tcp —dport 80 -j ACCEPT

Если мы планируем использовать https, то также открываем 443 порт:

iptables -I INPUT -p tcp —dport 443 -j ACCEPT

Для сохранения правил используем команду:

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

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

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

Apache

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

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

* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль устарел и не поддерживает php 7 и выше, которая является наиболее актуальной и устанавливается по умолчанию.

Разрешаем модуль мультипроцессовой обработки mpm_prefork:

Если ваш сайт работает только на устаревшей версии PHP, то модуль мультипроцессовой обработки mpm_event нужно оставить, а модуль mpm_prefork нет необходимости активировать.

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

systemctl restart apache2

Проверим работоспособность apache. Для этого откроем браузер и перейдем по адресу http:// — должна открыться стартовая страница Apache:

Стартовая страница веб-сервера Apache

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

При получении ошибки 500 Internal Server Error, смотрим в лог:

Скорее всего, мы увидим ошибку:

. Authentication not configured

Проблема в том, что в Astra Linux веб-сервер Apache требует предварительной аутентификации. Для решения проблемы открываем конфигурационный файл:

systemctl restart apache2

Веб-сервер установлен. Идем дальше.

PHP

Устанавливаем интерпретатор php и модуль для связки apache и php:

apt install php libapache2-mod-php

Будет установлена нативная версия PHP для используемой операционной системы. То есть, будет взята самая последняя версия, доступная в репозитории. Посмотреть версию PHP после установки можно командой:

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:

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

* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html и так далее.

Разрешаем модуль для установленной версии PHP:

Для применения настроек перезапустим апач:

systemctl restart apache2

Для проверки создадим файл:

Снова переходим по адресу http:// — теперь мы должны увидеть страницу с подробной информацией о PHP:

Страница с информацией о 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. Исправить это можно так:

Выполним скачанный скрипт:

Теперь можно установить postgres pro:

apt install postgrespro-std-14

Сервис будет автоматически запущен, а также будет инициализирована база. В данной инструкции мы не будет рассматривать, как работать с СУБД, но в конце я приведу список полезных материалов по работе с PostgreSQL.

б) PostgreSQL

Ванильный PostgreSQL устанавливается одной командой, но в репозитории Astra Linux доступна только старая версия. Установить более свежую версию PostgreSQL на данную систему потребует ручной установки некоторых пакетов из сторонних репозиториев и не будет рассмотрено в рамках данной инструкции.

И так, нам нужно ввести одну команду:

Сервис будет автоматически запущен, а также будет инициализирована база.

PostgreSQL + PHP

Мы можем обращаться к PostgreSQL из PHP с помощью функции pg_connect или PDO (PHP Data Objects). В зависимости от этого нам нужно поставить либо один пакет, либо другой.

а) Для работы с помощью pg_connect:

б) Для работы через PDO:

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

systemctl restart apache2

PhpPgAdmin

Дополнительно, добавим на наш сервер веб-инструмент для работы с базой PostgreSQL. К сожалению, данный инструмент не работает с Postgres Pro. Также есть некоторые нюансы установки и запуска. Обо всем по порядку.

Сначала установим git (он понадобиться для загрузки проекта phppgadmin):

Теперь клонируем сам проект 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

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

Приводим опцию $conf[‘servers’][0][‘host’] к виду:

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

Комментируем следующие строки:

// 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:

systemctl restart apache2

Переходим по адресу http:///phppgadmin — откроется страница портала управления PostgreSQL.

Тюнинг

Внесем небольшие изменения в нашу конфигурацию PHP:

  • post_max_size — максимальный объем отправляемых на сервер данных;
  • upload_max_filesize — максимально допустимый размер одного загружаемого файла;
  • short_open_tag — разрешение использования короткого способа открытия php ();
  • date.timezone — временная зона, которая будет использоваться веб-сервером, если ее не переопределить настройками в коде php или в файле .htaccess.

Данные изменения вносятся в разные файлы в зависимости от версии PHP. Например, для нашей php версии 7.0 мы открываем на редактирование следующий файл:

post_max_size = 1G
.
upload_max_filesize = 512M
.
short_open_tag = On
.
date.timezone = «Europe/Moscow»

systemctl restart apache2

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

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

Источник

Оцените статью