Skip to content

Latest commit

 

History

History
671 lines (410 loc) · 20.2 KB

File metadata and controls

671 lines (410 loc) · 20.2 KB

Модуль 10. Урок 68. Установка необходимого ПО

Подключение к серверу по SSH. Установка окружения и базы данных

На прошлом занятии мы сделали фундаментальную вещь — подготовили инфраструктуру для нашего проекта cinemahub:

  • арендовали VPS-сервер с Ubuntu;
  • зарегистрировали домен;
  • связали домен с IP-адресом сервера;
  • убедились, что домен корректно делегирован.

С этого момента наш проект перестал быть «локальным». У него появился настоящий сервер в интернете.

Теперь пришло время сделать следующий логичный шаг — начать работать с сервером напрямую.


Зачем нам SSH и что это вообще такое

Наш VPS — это удалённый компьютер, к которому нет физического доступа. Мы не можем подключить к нему монитор, клавиатуру или мышь.

Взаимодействие с сервером происходит по протоколу SSH (Secure Shell) — это защищённый способ удалённого управления сервером через командную строку.

Через SSH мы будем:

  • устанавливать пакеты;
  • настраивать базу данных;
  • разворачивать Django-проект;
  • запускать серверные процессы.

SSH-клиенты: чем можно пользоваться

Для подключения к серверу нужен SSH-клиент. Существует множество вариантов:

  • PuTTY
  • WinSCP
  • Termius
  • MobaXterm

Мы будем использовать PuTTY — это один из самых распространённых и простых вариантов для Windows.

Скачать PuTTY можно по ссылке:

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Устанавливаем программу и запускаем её.


Первое подключение к серверу

После запуска PuTTY мы увидим главное окно настроек подключения.

В поле Host Name (or IP address) указываем:

  • IP-адрес вашего VPS-сервера
  • порт 22 (стандартный SSH-порт)

Пример:

Host Name: 123.123.123.123
Port: 22

Чтобы не вводить эти данные каждый раз, можно сохранить сессию:

  • в поле Saved Sessions указываем имя (например, cinemahub_server);
  • нажимаем Save.

Теперь при следующем подключении достаточно выбрать эту сессию и нажать Open.


Первое предупреждение безопасности

При первом подключении PuTTY покажет предупреждение о неизвестном ключе сервера.

Это нормально. PuTTY просто сообщает, что вы подключаетесь к этому серверу впервые.

Нажимаем Accept.


Ввод логина и пароля

После этого откроется терминал.

Сначала вводим логин (обычно root):

login as: root

Затем — пароль, который пришёл вам на почту после создания VPS (для вставки скопированной информации можно кликнуть правой кнопкой мыши).

⚠️ Пароль не отображается при вводе — это нормально.

Если всё введено правильно, вы попадёте в командную строку сервера.

С этого момента вы находитесь внутри Ubuntu-сервера.


Загрузка файлов на сервер с sqlite

Что мы будем делать дальше

Django — популярный фреймворк, и процесс его деплоя давно стандартизирован.

Хостинг Beget предоставляет подробную инструкцию по развертыванию Django-проекта с использованием:

  • Gunicorn
  • Nginx

Мы будем опираться на эту инструкцию, но адаптировать её под наш проект cinemahub, а также подробно разбирать, что и зачем мы делаем.


Шаг 1. Обновление системы и установка базовых пакетов

Первое, что всегда нужно делать на новом сервере — обновить список пакетов.

Выполняем команду:

sudo apt update

Эта команда не устанавливает ничего, она лишь обновляет информацию о доступных версиях пакетов.


Шаг 2: Установка Python и Nginx

Установим всё необходимое для Django-проекта:

sudo apt install python3-pip python3-dev python3-venv nginx

Разберём, что здесь устанавливается:

  • python3-pip — менеджер пакетов Python
  • python3-venv — создание виртуальных окружений
  • nginx — веб-сервер

Проверка: работает ли Nginx

После установки Nginx уже запущен.

Попробуем проверить это через браузер.

В адресной строке вводим:

http://IP_АДРЕС_СЕРВЕРА

Если вы видите стандартную страницу Welcome to nginx — значит:

сервер доступен

Nginx установлен и работает


Шаг 3: Подготовка каталога проекта. Использование Git и GitHub для переноса проекта

На сервере есть папка в которой мы будем размещать файлы проекта. Она называется var/www/.

Переходим в каталог проекта:

cd /var/www

На этом этапе нам нужно скопировать код Django-проекта на сервер.

Можно сделать это с помощью переноса файлов в Файловом менеджере Beget или Загрузить с помощью вашего проекта на сайте github.

Рассмотрим второй вариант.

В реальных проектах используется подход — Git + GitHub. Он позволяет:

  • хранить историю изменений;
  • синхронизировать код между компьютером и сервером;
  • обновлять сайт буквально одной командой.

Именно этот способ используется в реальном продакшене, поэтому мы обязательно его разберём.

Логика очень простая:

  1. локально вы работаете с проектом cinemahub;
  2. все изменения фиксируются через git commit;
  3. код отправляется на GitHub (git push);
  4. сервер забирает изменения одной командой (git pull).

Шаг 4. Инициализация Git в локальном проекте

Проверяем, установлен ли Git

На локальном компьютере в терминале выполните:

git --version

Если Git не установлен — установите его с официального сайта:

https://git-scm.com/

Инициализация репозитория

Переходим в корневую директорию проекта cinemahub, где лежит manage.py.

Выполняем команды:

git init
git add .
git commit -m "My first commit"

Что здесь происходит:

  • git init — превращает папку проекта в Git-репозиторий;
  • git add . — добавляет все файлы проекта под контроль версий;
  • git commit — фиксирует текущее состояние проекта.

На этом этапе Git уже работает локально, но сервер о проекте ещё ничего не знает.


Шаг 5. Создание репозитория на GitHub

Переходим на сайт:

https://github.com

Далее:

  1. нажимаем New repository;
  2. указываем имя репозитория (например, cinemahub);
  3. делаем репозиторий публичным (для учебного проекта);
  4. не добавляем README, .gitignore и лицензию (они уже есть локально или будут добавлены позже);
  5. нажимаем Create repository.

После создания GitHub покажет страницу с URL репозитория.

Пример:

https://github.com/your_username/cinemahub.git

Скопируйте этот адрес — он понадобится дальше.


Шаг 6. Связывание локального проекта с GitHub

Возвращаемся в терминал локального компьютера и выполняем:

git remote add origin https://github.com/ваш_username/ваш_репозиторий.git
git branch -M main
git push -u origin main

Что здесь происходит:

  • git remote add origin — связывает локальный проект с GitHub;
  • git branch -M main — задаёт основную ветку;
  • git push — отправляет код на GitHub.

После выполнения этих команд:

код проекта cinemahub появится на GitHub

репозиторий станет центральной точкой хранения кода


Шаг 7. Клонирование проекта на сервер

Теперь переходим на удалённый сервер по SSH.

Убедитесь, что вы находитесь в каталоге /var/www:

cd /var/www/

Клонируем проект:

git clone https://github.com/ваш_username/ваш_репозиторий.git cinemahub

Переходим в папку проекта:

cd cinemahub

На сервере у вас появится точная копия проекта, идентичная локальной версии.


Шаг 8. Установка зависимостей на сервере

Создаем виртуальное окружение для нашего проекта:

python3 -m venv venv

И активируем его:

source venv/bin/activate

Когда виртуальное окружение уже создано и активировано

Сначала установим Gunicorn:

pip install gunicorn

Затем основные библиотеки для работы проекта из файла requirements.txt:

pip install -r requirements.txt

После установки можно проверить:

pip list

Все зависимости проекта cinemahub должны установиться корректно.


Проверка результата

На этом этапе:

  • проект склонирован с GitHub;
  • код совпадает с локальной версией;
  • зависимости установлены.

Фактически, сервер теперь подключён к вашему рабочему процессу разработки.


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

Теперь начинается самое приятное.

Любые изменения в проекте вы делаете локально:

git add .
git commit -m "Описание изменений"
git push

А на сервере выполняете одну команду:

git pull

Если в изменениях были:

  • новые модели;
  • изменения в модели movies;
  • правки, влияющие на базу данных;

не забывайте выполнять миграции:

python manage.py migrate

Предыдущий урок | Следующий урок


Загрузка файлов на сервер с PostgreSQL

Django — популярный фреймворк, и процесс его деплоя давно стандартизирован.

Хостинг Beget предоставляет подробную инструкцию по развертыванию Django-проекта с использованием:

  • PostgreSQL
  • Gunicorn
  • Nginx

Мы будем опираться на эту инструкцию, но адаптировать её под наш проект cinemahub, а также подробно разбирать, что и зачем мы делаем.


Шаг 1. Обновление системы и установка базовых пакетов

Первое, что всегда нужно делать на новом сервере — обновить список пакетов.

Выполняем команду:

sudo apt update

Эта команда не устанавливает ничего, она лишь обновляет информацию о доступных версиях пакетов.


Установка Python, PostgreSQL и Nginx

Теперь установим всё необходимое для Django-проекта:

sudo apt install python3-pip python3-dev python3-venv libpq-dev postgresql postgresql-contrib nginx

Разберём, что здесь устанавливается:

  • python3-pip — менеджер пакетов Python
  • python3-venv — создание виртуальных окружений
  • postgresql — база данных
  • libpq-dev — драйвер для работы Django с PostgreSQL
  • nginx — веб-сервер

Дополнительные системные пакеты

Некоторые Python-пакеты требуют компиляции. Для этого нужен компилятор и заголовочные файлы.

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

sudo apt install build-essential libpython3-dev

Проверка: работает ли Nginx

После установки Nginx уже запущен.

Попробуем проверить это через браузер.

В адресной строке вводим:

http://IP_АДРЕС_СЕРВЕРА

Если вы видите стандартную страницу Welcome to nginx — значит:

✅ сервер доступен ✅ Nginx установлен и работает

Это первая важная визуальная проверка.


Шаг 2. Создание базы данных PostgreSQL для cinemahub

Наш проект cinemahub использует базу данных. На сервере мы будем работать с PostgreSQL.


Вход в консоль PostgreSQL

Подключаемся к PostgreSQL от имени системного пользователя postgres:

sudo -u postgres psql

Если вы увидели приглашение вида:

postgres=#

— значит, вы внутри консоли PostgreSQL.


Создание базы данных и пользователя

Создадим отдельную базу данных и пользователя для проекта cinemahub.

CREATE DATABASE cinemahub_db;
CREATE USER cinemahub_user WITH PASSWORD 'strong_password_here';

⚠️ В реальных проектах:

  • используйте сложный пароль;
  • не храните его в открытом виде;
  • позже мы вынесем эти данные в переменные окружения.

Настройка пользователя

Выполняем следующие команды:

ALTER ROLE cinemahub_user SET client_encoding TO 'utf8';
ALTER ROLE cinemahub_user SET default_transaction_isolation TO 'read committed';
ALTER ROLE cinemahub_user SET timezone TO 'UTC';

Это стандартные настройки, которые обеспечивают корректную работу Django с PostgreSQL.


Назначение прав

GRANT ALL PRIVILEGES ON DATABASE cinemahub_db TO cinemahub_user;
ALTER DATABASE cinemahub_db OWNER TO cinemahub_user;

Теперь база данных полностью готова к использованию нашим проектом.

Выходим из PostgreSQL:

\q

Шаг 3. Подготовка каталога проекта

На сервере уже есть каталог:

/var/www/

Именно здесь обычно размещаются сайты.

Перейдём в него и создадим отдельную папку под проект cinemahub:

cd /var/www
mkdir cinemahub

Шаг 4. Перенос файлов проекта

На этом этапе нам нужно скопировать код Django-проекта на сервер.

Для этого:

  1. В локальном проекте создайте файл зависимостей:
pip freeze > requirements.txt
  1. Проверьте, что файл находится в корне проекта.

  2. Упакуйте проект в архив (например, cinemahub.zip).

  3. Загрузите архив в каталог /var/www/cinemahub.

  4. Разархивируйте его на сервере.

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

  • manage.py
  • папка проекта cinemahub
  • приложения (в том числе с моделью movies)
  • requirements.txt

Шаг 5. Создание виртуального окружения

Переходим в каталог проекта:

cd /var/www/cinemahub

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

python3 -m venv venv

Активируем его:

source venv/bin/activate

Если всё сделано правильно, в начале строки появится (venv).


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

Установка базовых пакетов

Сначала установим Gunicorn и драйвер PostgreSQL:

pip install gunicorn psycopg2-binary

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

Теперь устанавливаем пакеты из requirements.txt:

pip install -r requirements.txt

Проверяем установку:

pip list

Вы должны увидеть Django и все библиотеки проекта cinemahub.


Предыдущий урок | Следующий урок