Python — перенос локального проекта на удаленный сервер

Admin Python, Ubuntu

Переносим приложение python с локального компьютера на свой удаленный сервер.

Этот материал из цикла статей по разработке сайтов на python: от локальной разработки до развертывания на удаленном сервере.

Перед этим должен быть создан локальный проект на python.

Затем настроен удаленный сервер для Flask.

И только после этого можно приступать к переносу зависимостей и проекта на python на удаленный сервер.

У себя на компьютере

У себя на компьютере создаем файл, в котором находятся все зависимости необходимые для проекта:

pip freeze > requirements.txt

или выводим локальные зависимости и сохраняем их потом в том же файле:

pip freeze -- local
Если какие-то модули были установлены в обход стандартной процедуры (pip install модуль), то такие модули в этом файле сейчас следует закомментировать и установить на сервере отдельно.

На сервере

Если директория для сайта еще не сделана, то заходим в папку пользователя:

cd /home/ploshadka

Здесь создаем новую директорию для проекта, например, по названию сайта:

mkdir ploshadka.net
cd ploshadka.net
Дальше закидываем локальные данные в гит и подтягиваем их у себя на сервере: инструкция по быстрой миграции через гит. Или переносим любым другим способом.

Затем в этой директории создаем виртуальное окружение:

python3 -m venv venv

Входим в виртуальное окружение:

source venv/bin/activate

Обязательно обновляем pip:

pip install --upgrade pip

Иначе есть вероятность получить при установке других модулей ошибки вроде:

… error
ERROR: Command errored out with exit status 1:
command:

error: invalid command ‘bdist_wheel’
—————————————-
ERROR: Failed building wheel

Устанавливаем необходимые зависимости:

pip install -r requirements.txt

Выше в статье было упоминание, что некоторые модули может потребоваться установить дополнительно вручную. Сделайте это для этих модулей теми командами, которыми вы их раньше устанавливали.

Например:

pip install -i https://test.pypi.org/simple/ --extra-index-url=https://pypi.org/simple/ модуль

Выходим из окружения:

deactivate

Конфиги

Переносим или создаем файл конфигов для сервера

Для сервера должен быть свой файл конфига, в котором используются переменные окружения, пароль для подключения к БД и т.д.

У меня это файл configs/private/main.py. Его надо перенести на сервер и расскоментировать строки предназначенные для сервера, а для локалки закомментировать.

В целом различия будут здесь:

# Set environment
os.environ['SERVER_ENV'] = 'prod'

А для подключения к БД изменить пароль:

SQLALCHEMY_DATABASE_URI = 'postgresql://ploshadka:пароль@localhost/ploshadka'
Значение pbkdf2_sha512 для SECURITY_PASSWORD_HASH не трогать!

SECRET_KEY и SECURITY_PASSWORD_SALT — если будем экспортировать БД с локалки для последующего импорта на прод, то эти значения такие же как и для локалки.

Дополнительная настройка на сервере

PostgreSQL

Статья про настройку PostgreSQL.

Если пользователь для БД уже был создан раннее, то создаем только новую БД:

Заходим в postgres:

sudo -u postgres psql

Вводим пароль от пользователя Linux.

Для русской версии лучше БД создать так:

CREATE DATABASE ploshadka TEMPLATE=template0 ENCODING 'UTF-8' LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8';

Назначаем привелегии новой таблице:

GRANT ALL PRIVILEGES ON DATABASE ploshadka TO ploshadka;

Также можно было создать БД так (но для ру лучше делать как выше)

createdb ploshadka --owner ploshadka

Выходим из postgres окружения:

\q

Обновляем БД

В SQLAlchemy нам потребуется только одна команда обновления БД. Т.к. все коммиты мы отправляем только на локалке, а затем это закидываем в git.

Заходим в окружение python:

source venv/bin/activate

Обновляем БД:

flask db upgrade

Запускаем сайт

Для запуска нового сайта руководствуемся инструкцией настройка сервера под Flask на Ubuntu из раздела:
«5. Настраиваем службу systemd».

Сертификат для нового домена

Для нового домена получить сертификат

Остальное

Если что-то осталось для переноски сайта, то руководствоваться прочитав оставшиеся разделы из основной статьи «Python и Flask: от локальной разработки до серверной раскатки».

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Python — перенос локального проекта на удаленный сервер"