Перейти к содержанию

Инструкция по переносу приложения с Windows на GNU/Linux

1. Выгрузка базы данных на Windows

Эта часть выполняется на исходном компьютере под Windows от пользователя с правами администратора.

1.1 Откройте командную строку (cmd).

1.2 Перейдите в каталог с утилитами PostgreSQL:

cd C:\sc\postgresql\bin\

1.3 Найдите параметры подключения к БД в файле:

C:\sc\app\conf\settings_prod.py
Обратите внимание на: - имя пользователя (обычно scuser) - хост (127.0.0.1) - порт (92) - имя базы данных (severcart)

1.4 Выполните выгрузку базы данных в SQL-файл:

pg_dump -U scuser -h 127.0.0.1 -p 92 -W severcart > C:\app\dump.sql
При запросе пароля введите: 123456.

Дождитесь завершения операции.

2. Подготовка целевой системы на Linux

Эта часть выполняется на новом сервере под Linux от пользователя root.

2.1 Установка приложения

Выполните установку как рассказано документации: Установка на GNU/Linux.

2.2. Настройка пользователя и базы данных

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

    sudo -u postgres psql
    

  2. Удалите старую базу (если существует) и создайте новую с нужными параметрами:

    DROP DATABASE IF EXISTS severcart;
    CREATE DATABASE severcart
      WITH ENCODING='UTF8'
      OWNER=scuser
      LC_COLLATE='ru_RU.UTF-8'
      LC_CTYPE='ru_RU.UTF-8'
      TEMPLATE=template0;
    

  3. Выйдите из psql:

    \q
    

3. Перенос медиафайлов

В приложении пользовательские файлы (изображения, документы и т.п.) хранятся в каталоге C:\sc\app\media на Windows. Этот каталог необходимо перенести на Linux-сервер и разместить в соответствующем месте файловой системы.

3.1 Архивирование медиафайлов на Windows

  1. Откройте командную строку (cmd) от имени администратора.

  2. Создайте архив с содержимым папки media:

    cd C:\sc\app
    tar -czf media.tar.gz media
    

    Примечание: если в системе нет tar, можно использовать архиватор (например, 7-Zip) или просто скопировать папку на флешку/облако.

  3. Скопируйте полученный архив (например, C:\sc\app\media.tar.gz) на Linux-сервер любым удобным способом:

  4. через scp:
    scp C:\sc\app\media.tar.gz user@linux-server:/home/user/
    
  5. через флешку, облако и т.д.

3.2 Размещение медиафайлов на Linux

  1. На Linux-сервере распакуйте архив в целевой каталог. Обычно это /opt/severcart/app/media:

    sudo mkdir -p /var/venv/severcart/app/media
    

  2. Убедитесь, что права доступа корректны — владелец должен быть пользователем, от которого запускается приложение (например, nobody:nogroup Ubuntu, Debian и nobody:nobody в Centos):

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

4. Импорт базы данных на Linux

Предупреждение

По умолчанию PostgreSQL в Linux слушает порт 5432, а не 92.

Если вы используете нестандартный порт (например, 92), убедитесь, что он указан в конфигурации PostgreSQL (postgresql.conf) и разрешён в pg_hba.conf.

4.1 Скопируйте файл dump.sql с Windows-машины на Linux-сервер (например, через scp, флешку или облако). Предположим, он находится в /home/user/dump.sql.

4.2 Импортируйте дамп в базу:

sudo -u postgres psql -U scuser -d severcart -f /home/user/dump.sql
Или, если требуется явный ввод пароля:
PGPASSWORD=123456 psql -U scuser -h localhost -p 5432 -d severcart -f /home/user/dump.sql

4.3 Перезапустите приложение.

   systemctl restart severcart