Расширенная установка¶
Рассмотрим все шаги по установке PGHS подробно. ВАЖНО: все команды следует выполнять с правами суперпользователя (root).
Далее в руководстве подразумевается, что дистрибутив XSQUARE-LCDP находится в каталоге /root/xsquare.
Для загрузки дистрибутива выполните следующие шаги:
Создаем каталог для дистрибутива
Создаем
mkdir /root/xsquare
переходим в каталог
cd /root/xsquare
Скачиваем дистрибутив в созданный каталог
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"
}
}
]
}