Установка на CentOS 8 Stream

Устанавливаем PostgreSQL

export LC_ALL="ru_RU.UTF-8"

echo export LC_ALL="ru_RU.UTF-8" >> ~/.bashrc

yum install -y postgresql-server

Инициализируем базу данных и добавляем её в автозагрузку

service postgresql initdb

systemctl enable postgresql.service

systemctl start postgresql.service

Создаём базу данных и её владельца

su postgres

psql
CREATE USER scuser WITH PASSWORD '123456';

Создаём базу данных severcart

CREATE DATABASE severcart WITH ENCODING='UTF8' OWNER=scuser CONNECTION LIMIT=-1 template=template0;

UPDATE pg_database SET datcollate='ru_RU.UTF-8', datctype='ru_RU.UTF-8' WHERE datname='severcart';

Выходим из оболочки psql

\q

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

su -

Разрешаем доступ пользователю scuser подключаться к postgres. Для этого в файле /var/lib/pgsql/data/pg_hba.conf меняем строку

host    all             all             127.0.0.1/32            ident

на

host    all             all             127.0.0.1/32            md5

Закрепляем изменения в конфигурации

systemctl restart postgresql.service

Устанавливаем Python

yum install epel-release

yum install -y python38

python3.8 -m venv /var/venv/

mkdir -p /var/venv/severcart/

Скачиваем и распаковываем пакет Severcart

Скачиваем самый свежий файл *.zip архива с официального сайта продукта.

Далее распаковываем архив в каталог /var/venv/severcart

unzip 1_X_X.zip -d /var/venv/severcart

Установка python пакетов

source /var/venv/bin/activate

python3 /var/venv/severcart/tkinstaller/install.py

Установка web-сервисов

yum install nginx supervisor -y

systemctl enable nginx

systemctl disable httpd

systemctl enable supervisord

systemctl stop httpd

systemctl start nginx

Переопределим секцию server в файле /etc/nginx/nginx.conf содержимым

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    server {
        listen 80;
        server_name 0.0.0.0; #либо ip, либо доменное имя
        access_log  /var/log/nginx/severcart_access.log;
        error_log  /var/log/nginx/severcart_error.log;

        location = /favicon.ico {
            alias /var/venv/severcart/app/media/favicon.ico;
            expires 30d;
        }

        location /static/ {
            root /var/venv/severcart/;
            expires 30d;
        }

        location /media/ {
            root /var/venv/severcart/;
            expires 30d;
        }

        location / {
            proxy_pass http://127.0.0.1:9000;
            proxy_set_header Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

Назначаем нужные права доступа к файлам

chmod 755 -R /var/venv/severcart/
chown nobody:nobody -R /var/venv/severcart/
cd /etc/supervisord.d
touch severcart.ini
[program:severcart]
command=/var/venv/bin/gunicorn conf.wsgi_prod:application -c /var/venv/severcart/conf/gunicorn.conf.py
directory=/var/venv/severcart
user=nobody
autorestart=true
redirect_stderr=true
service supervisord start

supervisorctl reread
supervisorctl update
supervisorctl status severcart
supervisorctl restart severcart


systemctl restart nginx

Открываем 80 и 443 TCP порт в firewall

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

Далее проверяем в браузере открытие страницы. Если увидите приглашение ввести логин и пароль, значит установка успешно завершена.

Внимание!!! После успешно установки программы пароль пользователя PostgreSQL scuser рекомендуется поменять на более стойкий. Инструкция по смене пароля здесь.

Устранение неисправностей

Где хранятся отладочные сообщения приложения для просмотра ошибок?

Лог файл на ОС Линукс хранятся в файле /var/venv/severcart/logs/debug.log

После свежей установки страница логина доступна, но сам вход под пользователем, созданным при установке ПО, происходит не с первого раза и, после любого действия, выкидывает обратно на страницу логина.

Такая ошибка происходит из-за того, что у приложения нет прав доступа в каталог /var/venv/severcart/. Выполните в bash оболочке:

chmod 755 -R /var/venv/severcart/
chown nobody:nobody -R /var/venv/severcart/

Где nobody пользователь от имени которого работает supervisord процесс.

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

supervisorctl restart severcart
service nginx restart

Ещё одна причина блокировки записи данных в каталог /var/venv/severcart/ пользователя nobody может быть подсистемы безопасности Linux SELinux/cgroups. Настройте их.

Если установить приложение не получается, то свяжитесь с тех. поддержкой [email protected].