Расширенная установка

Рассмотрим все шаги по установке PGHS подробно. ВАЖНО: все команды следует выполнять с правами суперпользователя (root).

Далее в руководстве подразумевается, что дистрибутив XSQUARE-LCDP находится в каталоге /root/xsquare.

Для загрузки дистрибутива выполните следующие шаги:

  1. Создаем каталог для дистрибутива

Создаем

mkdir /root/xsquare

переходим в каталог

cd /root/xsquare
  1. Скачиваем дистрибутив в созданный каталог

::

wget https://lcdp.xsquare.ru/files/pghs/xsquare.lcdp.v5/xsquare.lcdp.5.0_latest_release.zip

3. Распаковываем дистрибутив

unzip xsquare.lcdp.5.0.0.0.0.0_release.zip

Примечание: для установки утилиты unzip выполните

apt -y install unzip (DEB-based ОС)
dnf install -y unzip (RPM-based ОС)

4. Переходим в каталог с файлами дистрибутива PGHS

cd xsquare.lcdp.5.0.0.0.0.0_release

Для корректного функционирования разработанного веб-приложения необходимо сконфигурировать региональные настройки ОС (локаль) и часовой пояс.

Настройка DEB-based ОC

Для ручной настройки часового пояса необходимо запустить утилиту dpkg-reconfigure c параметром tzdata:

dpkg-reconfigure tzdata

Для ручной настройки локали необходимо запустить утилиту dpkg-reconfigure c параметром locale:

dpkg-reconfigure locale

Эти же действия можно автоматизировать: Записываем наименование необходимого часового пояса в файл /etc/timezone.

Например:

echo "Europe/Moscow" > /etc/timezone

применяем указанные настройки часового пояса:

dpkg-reconfigure -f noninteractive tzdata

Для настройки локали необходимо записать наименование локалей в файл /etc/locale.gen

Например для установки локалей en_US.UTF-8 и ru_RU.UTF-8 необходимо привести содержимое файла /etc/locale.gen к следующему виду: en_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8

Так как чаще всего /etc/locale.gen уже содержит закомментированый список локалей, можно автоматизировать раскомментирование необходимых строк с помощью утилиты sed. Например:

sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen

Для установки локали по умолчанию необходимо записать наименовение локали в файл /etc/default/locale.

Например для установки по умолчанию локали ru_RU.UTF-8:

LANG=ru_RU.UTF-8

Установить локаль по умолчанию можно также с помощью утилиты update-locale.

Например:

update-locale LANG=ru_RU.UTF-8

После того, как файлы /etc/locale.gen и /etc/default/locale приведены к правильному содержимому – необходимо запустить автоматическое переконфигурирование с помощью утилиты dpkg-reconfigure:

dpkg-reconfigure --frontend=noninteractive locales

Заключительным шагом подготовки ОС является запись переменной окружения LANG значением локали по умолчанию.

Например:

export LANG=ru_RU.UTF-8

Настройка RPM-based ОC

Для настройки часового пояса необходимо запустить утилиту timedatectl c параметром timezone и необходимым часовым поясом.

Например:

timedatectl set-timezone Europe/Moscow

Для получения текущего часового пояса:

timedatectl status

Для получения списка возможных часовых поясов:

timedatectl list-timezones

Для настройки локали необходимо запустить утилиту localectl c параметром set-locale и необходимой локалью:

localectl set-locale LANG=ru_RU.UTF-8

Для получения текущей локали:

localectl status

Для получения списка возможных локалей:

localectl list-locales

Также включить поддержку локали можно путем добавления строки LANG=locale в файл /etc/sysconfig/i18n.

Например:

echo "LANG=ru_RU.UTF-8" > /etc/sysconfig/i18n

Заключительным шагом подготовки ОС является запись переменной окружения LANG значением локали по умолчанию.

Например:

export LANG=ru_RU.UTF-8

Установка и настройка PostgreSQL

Установка PostgreSQL на DEB-based ОC

Для установки postgreSQL выполните:

apt install postgresql

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

apt update
apt upgrade

Установка PostgreSQL на RPM-based ОC

Для установки postgreSQL выполните:

dnf install postgresql

Также необходимо запустить инизициализацию базы данных:

postgresql-setup initdb

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

dnf update
dnf upgrade

Настройка PostgreSQL

После установки PostgreSQL добавляем службу в автозагрузку и запускаем:

systemctl enable postgresql
systemctl start postgresql

Проверяем успешность запуска:

systemctl status postgresql

postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Wed 2024-10-09 09:05:17 CDT; 1 month 1 day ago
Process: 1052 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1052 (code=exited, status=0/SUCCESS)
CPU: 5ms

Переключаемся на пользователя postgres

su - postgres

Создаем пользователей БД xrad_user и app_user

psql -c "create user xrad_user with encrypted password 'xrad_user';"
psql -c "create user app_user with encrypted password 'app_user';"

Создаем базы appdb и xraddb

psql -c "CREATE DATABASE \"appdb\" WITH OWNER \"app_user\" ENCODING 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8';"
psql -c "CREATE DATABASE \"xraddb\" WITH OWNER \"xrad_user\" ENCODING 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8';"

Назначаем пользователям xrad_user и app_user максимальные привилегии

psql -c "ALTER USER xrad_user WITH SUPERUSER;"
psql -c "ALTER USER app_user WITH SUPERUSER;"

выходим из сеанса учетной записи postgres

exit

Импортируем базы данных

export PGPASSWORD='xrad_user';
psql -U xrad_user -h 127.0.0.1 xraddb < db/xraddb.xsquare.pgsql
export PGPASSWORD='app_user';
psql -U app_user -h 127.0.0.1 appdb < db/appdb.xsquare.pgsql

Примечание: может понадобиться настроить удаленное подключение и политику доступа PostgreSQL.

Для включения возможности удаленного подключения необходимо в файле /etc/postgresql/[версия postgresql]/main/postgresql.conf расскомментировать и отредактировать строку listen_addresses:

listen_addresses = '*'

Для настройки политики доступа необходимо в файл /etc/postgresql/[версия postgresql]/main/pg_hba.conf добавить строку:

host all all 0.0.0.0/0 md5

Данная строка позволит подключаться ко всем базам данных, всем пользователям с любым IP-адресом, с использованием MD5-хешированных паролей.

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

systemctl restart postgresql

Установка и настройка HTTP Server (NGINX/Apache2)

Для работы PGHS необходимо установить HTTP-сервер. Рассмотрим установку HTTP-сервера на примере двух самых популярных решений NGINX и Apache2.

Примечание: для обеспечения доступности веб-приложения по имени необходимо добавить имя сервера в файл /etc/hosts. Например:

127.0.0.1 pghs.xsquare

Установка и настройка NGINX

Установка NGINX на DEB-based ОС:

apt install nginx

Установка NGINX на RPM-based ОС:

dnf install -y nginx

Настройка NGINX

Отключаем сайт по умолчанию

rm -f /etc/nginx/sites-enabled/default

копируем из дистрибутива файлы веб-контроллера PGHS

cp -R ./var/www/pghs.xsquare* /var/www/

копируем из дистрибутива конфигурационные файлы nginx

cp -R ./etc/nginx /etc/

и редактируем файл /etc/nginx/conf.d/pghs.xsquare.conf, внося необходимые изменения vi /etc/nginx/conf.d/pghs.xsquare.conf

server {
    listen 80;
    server_name pghs.xsquare;

    root /var/www/pghs.xsquare;
    index index.html;

    location /files{
            alias /var/www/pghs.xsquare.files.local;
            try_files $uri $uri/ =404;
    }

    location /pghs{
            proxy_pass http://127.0.0.1:8888/pghs;
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

Для RPM-based систем отключаем Security-Enhanced Linux для HTTP запросов

setsebool -P httpd_can_network_connect 1

Для применения новых настроек перезапускаем nginx

systemctl restart nginx
systemctl enable  nginx

проверяем его состояние

systemctl --no-pager status nginx

Установка и настройка Apache2

Установка Apache2 на DEB-based ОС

apt-get install apache2

добавляем в автозагрузку и запускаем apache2

systemctl enable apache2
systemctl start apache2

проверяем состояние:

systemctl status apache2

устанавливаем дополнительные модули для apache2:

a2enmod proxy
a2enmod proxy_http

копируем из дистрибутива файлы веб-контроллера PGHS

cp -R ./var/www/pghs.xsquare* /var/www/

копируем из дистрибутива конфигурационные файлы apache2

cp -R ./etc/apache2 /etc/

и редактируем файл конфигурации VirtualHost /etc/apache2/sites-available/pghs.xsquare.conf, внося необходимые изменения: vi /etc/apache2/sites-available/pghs.xsquare.conf

<VirtualHost *:80>
       ServerAdmin info@xsquare.ru
       ServerName  pghs.xsquare
       ServerAlias pghs.xsquare
       DocumentRoot /var/www/pghs.xsquare

       Alias /files "/var/www/pghs.xsquare.files.local"
       <Directory /var/www/pghs.xsquare.files.local>
               Options FollowSymLinks
               AllowOverride None
               Require all granted
       </Directory>

       ProxyPass        /pghs http://127.0.0.1:8888/pghs
       ProxyPassReverse /pghs http://127.0.0.1:8888/pghs

       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Применяем новую конфигурацию

a2ensite pghs.xsquare.conf

и перезапускаем apache2

systemctl restart apache2

Установка Apache2 на RPM-based ОС

dnf install httpd

добавляем в автозагрузку и запускаем:

systemctl enable httpd
systemctl start httpd

проверяем состояние:

systemctl status httpd

копируем из дистрибутива файлы веб-контроллера PGHS

cp -R ./var/www/pghs.xsquare* /var/www/

копируем из дистрибутива конфигурационные файлы apache2

cp -R ./etc/httpd /etc/

и редактируем файл конфигурации VirtualHost /etc/httpd/conf.d/pghs.xsquare.conf, внося необходимые изменения: vi /etc/httpd/conf.d/pghs.xsquare.conf

<VirtualHost *:80>
       ServerAdmin info@xsquare.ru
       ServerName  pghs.xsquare
       ServerAlias pghs.xsquare
       DocumentRoot /var/www/pghs.xsquare

       Alias /files "/var/www/pghs.xsquare.files.local"
       <Directory /var/www/pghs.xsquare.files.local>
               Options FollowSymLinks
               AllowOverride None
               Require all granted
       </Directory>

       ProxyPass        /pghs http://127.0.0.1:8888/pghs
       ProxyPassReverse /pghs http://127.0.0.1:8888/pghs

       ErrorLog  /etc/httpd/logs/pghs-error.log
       CustomLog /etc/httpd/logs/pghs-access.log combined
</VirtualHost>

Отключаем Security-Enhanced Linux для HTTP запросов

setsebool -P httpd_can_network_connect 1

и перезапускаем apache

systemctl restart httpd

Установка и настройка PGHS

Для установки PGHS копируем исполняемые файлы из дистрибутива в каталог /usr/local/xsquare.pghs

Например:

cp -R ./usr /

Примечание: если необходимо назначьте права на исполнение chmod +x /usr/local/xsquare.pghs/pghs

Создаем сервис vi /etc/systemd/system/xsquare.pghs.service

[Unit]
Description=PGHS Services
After=syslog.target network.target
After=postgresql.service

[Service]
Type=simple
ExecStart=/usr/local/xsquare.pghs/pghs
WorkingDirectory=/usr/local/xsquare.pghs
Restart=on-failure
RestartSec=3

[Install]
WantedBy=default.target

Примечание: файл сервиса по умолчанию можно скопировать из дистрибутива.

Например:

cp -R ./etc/systemd /etc/

Запускаем PGHS как службу и проверяем статус systemctl start xsquare.pghs.service systemctl enable xsquare.pghs.service systemctl –no-pager status xsquare.pghs.service

Настраиваем конфигурацию PGHS для этого редактируем файл config.json в каталоге сервера приложений: vi /usr/local/xsquare.pghs/config.json

{
    "app": {
        "port": "8888"
    },
    "XRAD": {
        "login": "xrad_user",
        "password": "xrad_user",
        "host": "localhost",
        "port": 5432,
        "minCons": 1,
        "maxCons": 15,
        "dbName":"xraddb",
        "runtimeOptions":{
            "LC_NUMERIC":"ru_RU.UTF-8"
        }
    },
    "datasources": [
       {
        "login": "app_user",
        "password": "app_user",
        "host": "localhost",
        "name":"DEFAULT_APP",
        "port": 5432,
        "minCons":1,
        "maxCons":15,
        "dbName":"appdb",
        "runtimeOptions":{
            "LC_NUMERIC":"ru_RU.UTF-8"
         }
       }
    ]
}