- Установка на Astra Linux
- Создание базы данных на сервере postgresql
- Изменения в файлах с версией ядра
- УСТАНОВКА ЯДРА
- УСТАНОВКА И НАСТРОЙКА СЕРВЕРА ПРИЛОЖЕНИЙ
- Установка сервера приложений ApacheTomee
- Установка ApacheTomEE
- Настройка Apache Tomee в качестве системного сервиса
- Сопряжение БД и сервера приложений
- Astra Linux + Apache + PHP + PostgreSQL
- Предварительная настройка
- 1. Обновление списка пакетов в репозитории
- 2. Настройка времени
- 3. Настройка брандмауэра
- Apache
- PHP
- СУБД
- а) Postgres Pro
- б) PostgreSQL
- PostgreSQL + PHP
- PhpPgAdmin
- Тюнинг
- Читайте также
Установка на Astra Linux
Из под учетной записи суперпользователя сервера postgresql, необходимо создать пользователя БД:
postgres=# CREATE ROLE xm_user NOINHERIT NOREPLICATION LOGIN PASSWORD »xm_user_pass’;
xm_user — имя пользователя,
Создание базы данных на сервере postgresql
postgres=# CREATE DATABASE database_name
database_name — имя базы,
xm_user — пользователь из пункта 1
Изменения в файлах с версией ядра
- Архивы VER1 и VER2 по умолчанию содержат схему sys_cubs. Необходимо разархивировать архивы и в файлах \DB_PG\script.sql заменить sys_cubs на имя схемы БД по умолчанию.
- Архивы VER1 и VER4 по умолчанию содержат имя пользователя dev_user. Необходимо разархивировать архивы и в файлах \DB_PG\script.sql заменить dev_user на имя созданного пользователя БД.
- Заархивировать версию с изменениями.
УСТАНОВКА ЯДРА
Файл bases.xml должен лежать рядом с папкой lib и Installer2##2.8.64
Содержимое файла bases.xml:
user — имя пользователя для подключения к БД;
password — пароль для подключения к БД;
database_name — имя БД;
host — ip адрес хоста БД;
scheme_name — имя схемы БД.
Параметр baseType не менять!
1) С любого компьютера с ОС Windows, у которого есть доступ к БД и установлена Oracle Java Runtime Environment 8 (JRE 8), выполнить.
2) Installer2##2.8.64 двойным кликом, выбрать подключение к БД, нажать «Далее».
3) Поставить галочку на «Единичная версия», выбрать файл с версией VER1.zip, нажать «Далее».
4) Проставить галочку «Я ознакомлен с изменениями в версии». Нажать «Установить».
5) Установка завершена. Нажать «Далее» для просмотра логов и «Закрыть» для выхода.
6) Установить остальные файлы с архивами версий (VER2.zip, VER3.zip, VER4.zip, VER5.zip).
УСТАНОВКА И НАСТРОЙКА СЕРВЕРА ПРИЛОЖЕНИЙ
Установка сервера приложений ApacheTomee
На каждом сервере приложений устанавливается идентичным образом.
Установка ApacheTomEE
Скачать apache-tomee-8.0.6-plus.tar.gz и распаковать архив:
xmapp*# tar zxvf apache-tomee-8.0.6-plus.tar.gz
Перенести распакованное дерево папок на постоянное место:
xmapp*# mv apache-tomee-8.0.6-plus.tar.gz /opt/tomee
Создать учетную запись пользователя, под которым будет исполняться сервер приложений:
xmapp*# useradd -r tomee --shell /bin/false
Передать её права на дерево папок:
xmapp*# chown -R tomee:tomee /opt/tomee/
Настройка Apache Tomee в качестве системного сервиса
Создать файл /etc/systemd/system/tomee.service следующего содержания:
# Systemd unit file for default tomee
# To create clones of this service:
# DO NOTHING, use tomee@.service instead.
Environment=’CATALINA_OPTS=-Xms4096M –Xmx8192M -server -XX:+UseParallelGC’
После сохранения файла, обновить статус системных служб:
xmapp*# systemctl daemon-reload
Открыть порты в файерволе:
xmapp*# iptables -A INPUT -p tcp -m state —state NEW -m tcp —dport 8080 -j ACCEPT
В файле \opt\tomee\conf\tomcat-users.xml добавить логин для доступа к менеджеру веб-сервера:
xmapp*# systemctl start tomee
xmapp*# systemctl enable tomee
xmapp*# systemctl status tomee
Вывод команды должен показать состояние сервиса «Active» и отсутствие ошибок.
Проверить работу ApacheTomee в браузере вызвав соответствующий адрес http://server-ip-address:8080/ , где server-ip-address — адрес сервера
Сопряжение БД и сервера приложений
На каждом сервере приложений, в конфигурационный файл Tomee /opt/tomee/conf/server.xml добавить ресурс в GlobalNamingResources:
где: server-ip-address ip адрес сервера, port порт базы database_name имя базы, xm_user пользователь из пункта 1
В конфигурационный файл Tomee /conf/context.xml добавить в контекст:
Для доступа к manager, в файлe
Tomee /webapps/manager/META-INF/context.xml закомментировать строку:
Удалить из install/tomee/lib файл ejb-core-1.0.jar
Скопировать из дистрибутива библиотеки:
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:
* в нашем примере мы настроим доступ к серверу только по 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:
Связка 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
Читайте также
Другие полезные материалы: