Приложение на Python с REST архитектурой для Школы Бэкенд Разработки Яндекса
1.Устанавливаем следующие пакеты:
- Python (3.6+)
- PostgreSQL (9.6+)
- Git
- libpq-dev
- postgresql-server-dev-all
2.Клонируем репозиторий на машину
user@machine:~$ mkdir YandexBackendSchool
user@machine:~$ cd YandexBackendSchool/
user@machine:~/YandexBackendSchool$ git clone https://github.com/cher-di/YandexBackendSchool.git
3.Создаем вирутальное окружение Python и устанавливаем в него все необходимые модули:
- psycopg2
- fastjsonschema
- flask
- numpy
- gunicorn
user@machine:~/YandexBackendSchool$ pip3 install virtualenv
user@machine:~/YandexBackendSchool$ python3 -m venv ybs_venv
user@machine:~/YandexBackendSchool$ source ybs_venv/bin/activate
(ybs_venv) user@machine:~/YandexBackendSchool$ pip3 install --upgrade pip setuptools
(ybs_venv) user@machine:~/YandexBackendSchool$ pip3 install psycopg2 fastjsonschema flask numpy gunicorn
4.Создаем пользователя и базу данных:
user@machine:~$ sudo -u postgres psql postgres
CREATE ROLE ybs_user LOGIN PASSWORD 'ybs_password' CREATEDB;
CREATE DATABASE ybs_db WITH owner = ybs_user;
5.Чтобы сгенерировать файл конфигурации /home/user/YandexBackendSchool/YandexBackendSchool/config.ini, запускаем скрипт config.py с ключом с:
(ybs_venv) user@machine:~/YandexBackendSchool/YandexBackendSchool/scripts$ python3 config.py с
После того, как файл конфигурации будет сгенерирован, записываем в него верные значения вместо значений по умолчанию.
6.Проверяем конфигурацию - запускаем скрипт config.py c режимом t:
(ybs_venv) user@machine:~/YandexBackendSchool/YandexBackendSchool/scripts$ python3 config.py t
Если результат исполнения скрипта выдал везде OK, то можно приступать к следующему шагу.
В противном случае скрипт выдаст ошибку FAIL.
7.Тестируем сервер:
(ybs_venv) user@machine:~/YandexBackendSchool/YandexBackendSchool/scripts$ gunicorn -c gunicorn_configuration.py server:app
Если все нормально, то переходим к следующему шагу.
Не забываем отключить виртуальное окружение:
(ybs_venv) user@machine:~/YandexBackendSchool/YandexBackendSchool/scripts$ deactivate
8.Создаем файл /etc/systemd/system/ybs.service, для запуска демона нашего приложения:
[Unit]
Description=Gunicorn instance to server YandexBackendSchoolApp
After=network.target
[Service]
User=user
Group=www-data
WorkingDirectory=/home/user/YandexBackendSchool/YandexBackendSchool/scripts
Environment="PATH=/home/user/YandexBackendSchool/ybs_venv/bin"
ExecStart=/home/user/YandexBackendSchool/ybs_venv/bin/gunicorn -c gunicorn_config.py server:app
[Install]
WantedBy=multi-user.target
9.Запускаем демона и делаем его автозапускаемым при запуске машины
user@machine:~$ sudo systemctl daemon-reload
user@machine:~$ sudo systemctl start ybs
user@machine:~$ sudo systemctl enable ybs
После этого сервер развернут и готов к работе
Чтобы запустить *.sql файлы в терминале, необходимо запустить следующую команду:
user@machine:~$ psql -h 127.0.0.1 -d ybs_db -U ybs_user -p 5432 -f sql_file.sql
Для создания таблиц необходимо использовать соотвественно: create_tables.sql
Для полной очистки базы данных (удаление всех данных и таблиц): clear_databse.sql
За дополнительной информацией по поводу запуска *.sql файлов через терминал обратитесь на сайт.