Управление проектом на удаленном сервере Flashcards
Сервер
это компьютер, предназначенный для непрерывного выполнения определённых задач.
SSH (англ. Secure SHell — «безопасная оболочка»)
это сетевой протокол для зашифрованного соединения между двумя компьютерами. По этому протоколу можно безопасно передавать данные или выполнять команды на удалённом компьютере так, как если бы терминал запускался непосредственно на нём.
SSH-клиент
это программа, которая умеет устанавливать соединение с серверами по протоколу SSH.
В Windows встроенного SSH-клиента нет, но он включён в пакет установки Git Bash.
ssh username@server_address
Команда для подключения к серверу
Аутентификация с помощью ключей происходит так:
- сервер отправляет компьютеру зашифрованное через открытый ключ сообщение;
- компьютер расшифровывает его через закрытый ключ.
выведите SSH-ключ в консоль командой:
cat ~/.ssh/id_rsa.pub
Как сгенерировать SSH-ключ?
- Отройте терминал или Git Bash и выполните команду ssh-keygen.
Консоль попросит ввести путь к файлу, в который будут сохранены сгенерированные ключи.Enter file in which to save the key (/home/ваш_пользователь/.ssh/id_rsa):
- При создании ключей система попросит придумать пароль для доступа к ключам.
Enter passphrase (empty for no passphrase):
- Создайте пароль и запомните его — это дополнительная мера безопасности на тот случай, если ваш приватный ключ (например, вместе с компьютером) попадёт не в те руки.
- Выведите SSH-ключ в консоль командой
cat ~/.ssh/id_rsa.pub.
pwd (англ. print working directory — «вывести рабочий каталог»)
На экран будет выведен полный путь до текущей директории.
Команда ls (англ. list — «список»)
выведет на экран список всех файлов и папок той директории, в которой вы находитесь.
-p
это ключ, который нужен, чтобы указать номер порта для подключения. После ключа написано значение
Для чего предназначены эти ключи?
-R
-r
- рекурсивно отобразит содержимое поддиректорий
- отсортирует директории и файлы в обратном порядке
Команда touch
создаёт один или несколько файлов сразу.
Команда mkdir
Создать директорию
Команда rm (англ. remove— «удалить»)
служит для удаления одного или нескольких файлов и/или директорий.
Команда cp (англ. copy — «копировать»)
дублирует выбранный каталог или файл. После команды через пробел указывают:
* Адрес и имя файла, который будет копирован.
* Адрес, куда будет копирован файл и, если необходимо, новое имя копии.
Команда mv
перемещает папку или файл (от англ. move — «переместить»). Она работает по такой же логике, что и команда cp
команда nano
Для просмотра и редактирования файлов есть консольные текстовые редакторы. Один из самых популярных — nano. Чтобы открыть файл в таком редакторе, используется команда nano, а после неё пишется название нужного файла или путь к нему:
apt update
обновление списка доступных пакетов.
apt install имя пакета
автоматическое скачивание и установка запрошенного пакета.
apt upgrade имя пакета
обновление пакета.
apt remove имя пакета
удаление пакета из системы.
sudo apt upgrade -y
Ключ -y, даёт команду отвечать на все вопросы системы положительно — yes.
sudo apt install python3-pip python3-venv git -y
На сервер этой командой можно установить:
* менеджер пакетов pip;
* утилиту для создания виртуального окружения venv;
* систему контроля версий git, чтобы клонировать ваш проект.
python3 -m venv venv
. venv/bin/activate
Установка виртуального окружения под Линукс
Запуск виртуального окружения под Линукс
установите пакеты из requirements.txt
python -m pip install -r requirements.txt
WSGI (англ. Web-Server Gateway Interface)
стандарт взаимодействия Python-фреймворка и веб-сервера.
Чтобы веб-сервер nginx и Django-проект начали понимать друг друга, Django нужно запускать на WSGI-сервере. Например WSGI-сервер Gunicorn.
Ставим Gunicorn
pip install gunicorn
gunicorn –bind 0.0.0.0:8000 yatube.wsgi
Порт
Порт — это механизм маршрутизации пакетов данных, способ передать запрос тому приложению, которому он предназначен.
Номера портов для серверных приложений можно изменить, но традиционно веб-приложения работают на порте 80 (протокол HTTP, без шифрования) и 443 (протокол HTTPS, шифрованное соединение), FTP — на 21 порте, SSH — на 22. Свои стандартные порты есть и для других популярных серверных приложений.
Какой файерволл стоит в Ubuntu по умолчанию
ufw
Что такое файервол
Программа прослойка между внешним миром и сервером, которая решит, какие запросы пропустить на сервер, а какие сразу отклонить.
SSL
расшифровывается как Secure Socket Layer (англ. «уровень защищённых сокетов»). Сокет — это соединение между клиентом и сервером.
SSL-сертификат
это уникальный цифровой ключ, он выдаётся Центрами сертификации (Certificate Authority или CA).
sudo -u postgres psql
т имени пользователя postgres вызовите утилиту psql, это программа-клиент для подключения и управления СУБД Postgres
psycopg2-binary
драйвер для работы с postgres
Docker
инструмент для создания контейнеров, в которых работают ваши приложения.
Из чего создается контейнер
Контейнер создаётся из образа.
Образ (англ. image) — …
…это шаблон, который содержит всё необходимое для автономной работы контейнера: в образ может быть упакована операционная система, сервер, интерпретатор языка (в нашем случае — Python), виртуальное окружение проекта, файлы приложения.
Контейнер (англ. container) — …
…это окружение, которое создаётся из образа, как из шаблона. Из одного образа можно создать сколько угодно контейнеров.
Что делает команда - docker run имя-образа
докер создаёт контейнер, в котором запускается операционка и все остальные необходимые программы, приложение начинает работать в своей изолированной среде.
Что делает команда docker stop ID-контейнера
все процессы в контейнере останавливаются, но он сохраняется в системе и его можно запустить вновь, обратившись к нему по ID: нет необходимости заново выполнять run
для образа. Для окончательного удаления контейнера есть команда docker rm ID-контейнера
.
Dockerfile
это файл с инструкциями для создания образа. В докерфайле разработчик описывает, что должно быть включено в образ: какая операционная система, какой интерпретатор языка, где взять пакеты для приложения.
Команды Dockerfile
FROM - Она определяет базовый образ, на основе которого создаётся ваш локальный образ:
RUN - Выполняет команды внутри контейнера так, как если бы эти команды выполнялись в терминале.
COPY - Копирует файлы и директории из указанной локальной директории в директорию контейнера:
WORKDIR - Задаёт в образе директорию, из которой будут выполняться все команды, следующие за этой инструкцией.
CMD - Запускает что-нибудь, например bash-скрипт или сервер для приложения, при старте контейнера.
LABEL - Она задаёт служебную информацию об образе.
ENV - Инструкция ENV задаёт переменные окружения в контейнере:
Сборка образа
Из той же директории где находится Докефайлdocker build -t имя_образа .
build
— команда сборки образа по инструкциям из Dockerfile.-t имя_образа
— ключ, который позволяет задать имя образу, а потом и само имя..
— точка в конце команды — путь до Dockerfile, на основе которого производится сборка..
Менеджер образов docker image
docker image ls
какие образы есть на вашем компьютере.docker image rm IMAGE_ID
удаление
Запуск контейнера
docker run --name <имя контейнера> -it -p 8000:8000 имя_образа
run
— команда запуска нового контейнера.--name my_project
— ключ, который позволяет задать имя контейнеру, и само имя.-it
— комбинация этих ключей даёт возможность передавать в контейнер команды из вашего терминала.-p 8000:8000
— указывает публичный порт контейнера. Левая часть — внешний порт контейнера, правая — порт, на который будет перенаправлен запрос.имя_образа
— образ, из которого будет запущен контейнер.
Volume
Принцип работы volume можно сравнить с картой памяти, «флешкой». На флешку с компьютера можно слить какие-то данные, и если затем компьютер будет выключен или даже уничтожен, — данные останутся на флешке. То же и с volume: контейнер сохраняет данные в volume, и они остаются в сохранности вне зависимости от состояния контейнера.
docker-compose.yaml
Инструкции по развёртыванию проекта в нескольких контейнерах пишут в файле docker-compose.yaml.
DevOps (Development Operations)
это методика увеличения скорости, качества и безопасности разработки. Понятие DevOps определяет и техническую, и организационную стороны процесса разработки
Continuous Integration (англ. «непрерывная интеграция», сокращенно CI)
Идея состоит в том, чтобы после внесения изменений в любую часть кода проводилось тестирование не только того модуля, который был изменён, но и всего проекта. Если команда внесла в код десять изменений за день — значит, за день будет проведено десять сборок и тестов проекта.
GitHub Actions
это облачный сервис, инструмент для автоматизации процессов тестирования и деплоя ваших проектов. Он служит тестовой площадкой, на которой можно запускать и тестировать проекты в изолированном окружении.
Подключение репозитория к GitHub Actions
Для подключения GitHub Actions необходимо создать директорию .github/workflows, а в ней — yml-файл.