Инструкция по переносу приложения с 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. Настройка пользователя и базы данных
-
Переключитесь на пользователя
postgres:sudo -u postgres psql -
Удалите старую базу (если существует) и создайте новую с нужными параметрами:
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; -
Выйдите из
psql:\q
3. Перенос медиафайлов
В приложении пользовательские файлы (изображения, документы и т.п.)
хранятся в каталоге C:\sc\app\media на Windows. Этот каталог необходимо
перенести на Linux-сервер и разместить в соответствующем месте файловой системы.
3.1 Архивирование медиафайлов на Windows
-
Откройте командную строку (
cmd) от имени администратора. -
Создайте архив с содержимым папки
media:cd C:\sc\app tar -czf media.tar.gz mediaПримечание: если в системе нет
tar, можно использовать архиватор (например, 7-Zip) или просто скопировать папку на флешку/облако. -
Скопируйте полученный архив (например,
C:\sc\app\media.tar.gz) на Linux-сервер любым удобным способом: - через
scp:
scp C:\sc\app\media.tar.gz user@linux-server:/home/user/ - через флешку, облако и т.д.
3.2 Размещение медиафайлов на Linux
-
На Linux-сервере распакуйте архив в целевой каталог. Обычно это
/opt/severcart/app/media:sudo mkdir -p /var/venv/severcart/app/media -
Убедитесь, что права доступа корректны — владелец должен быть пользователем, от которого запускается приложение (например,
nobody:nogroupUbuntu, 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