Установка на Ubuntu 20.04

В инструкции все команды по умолчанию выполняются от имени пользователя root.

Обновление ОС

apt -y update
apt -y upgrade

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

Настраиваем локаль ru_RU:

apt -y install language-pack-ru

export LC_ALL="ru_RU.UTF-8"

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

Перелогиниваемся в shell.

apt -y install postgresql unzip

В процессе установки будет создан новый пользователь postgres.

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

su postgres

Создадим нового пользователя scuser (владельца базы данных Severcart PostgreSQL) из командной оболочки psql:

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 -

Устанавливаем пакет virtualenv

apt -y install python3-venv

Создаём виртуальное окружение

python3 -m venv /var/venv/

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

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

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

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

Установка зависимостей

Активируем виртуальное окружение:

source /var/venv/bin/activate

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

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

В ходе установки будет произведена установка зависимостей, миграция схемы базы данных, создание администратора severcart.

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

apt -y install nginx supervisor

Заменяем содержимое файла /etc/nginx/sites-available/default следующим:

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/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;
    }
}

Активируем автозагрузку nginx и supervisord.

systemctl enable supervisor

systemctl enable nginx
chmod 755 -R /var/venv/severcart/
chown nobody:nogroup -R /var/venv/severcart/

Чтобы приложение автоматически запускалось после перезагрузки, необходимо настроить supervisor. Для этого создадим конфигурационный файл:

cd /etc/supervisor/conf.d/
touch severcart.conf

В файл записываем:

[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

Активируем конфигурацию:

supervisorctl reread
supervisorctl update
supervisorctl status severcart
supervisorctl restart severcart

Перезагружаем сервер Nginx:

service nginx restart

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

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

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

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

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

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

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

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

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

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

supervisorctl restart severcart
service nginx restart

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

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