Kittygram - веб сервис предназначеный для всех, кто любит котиков и хочет поделиться фотографиями и достижениями своих питомцев с другими пользователями.
- Подключиться к удалённому серверу:
$ ssh -i путь_до_файла_с_SSH_ключом/название_файла_с_SSH_ключом_без_расширения login@ip
- Кланировать репозиторий:
$ git clone git@github.com:EvKutyashov/kittigram.git
- Создать и активировать виртуальное окружение:
$ cd kittigram/backend/
$ python -m venv venv
$ source venv/bin/activate
- Установить зависимости:
pip install -r requirements.txt
- Выполнить миграции:
python manage.py migrate
- Устанвоить Gunicorn:
pip install gunicorn==20.1.0
- Создать юнит для Gunicorn:
sudo nano /ect/systemd/system/gunicorn_kittygram.service
Прописать:
[Unit]
Description=<описание юнита>
After=network.target
[Service]
User=<Имя пользователя>
WorkingDirectory=<Путь к директории проекта>
ExecStart=<директория-с-проектом>/<путь-до-gunicorn-в-виртуальном-окружении> --bind 0.0.0.0:8000 kyttygram_backend.wsgi
[Install]
WantedBy=multi-user.target
- Запустить созданый юнит и добавить процесс Gunicorn в список автозапуска операционной системы на удалённом сервере:
sudo systemctl start gunicorn_kittygram
sudo systemctl enable gunicorn
- Установка и запуск Nginx:
sudo apt install nginx -y
sudo systemctl start nginx
- Настройка и запуск файрвола:
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
- Собрать статику фронтенд-приложения и разместить её в той директории, которую Nginx использует по умолчанию для доступа к статическим файлам:
-
Перейти в директорию
/infra_sprint1/frontend/
и выполнить команду:npm run build
-
Скопировать созданую папку в
/var/www/
sudo cp -r /home/<your_username>r/infra_sprint1/frontend/build/. /var/www/kittygramm/
-
- Описать конфигурационные настройки Nginx:
sudo nano /etc/nginx/sites-enabled/default
server {
server_name ***.***.***.*** https://kittygrampro.sytes.net;
location /api/ {
proxy_pass http://127.0.0.1:9000;
}
location /admin/ {
proxy_pass http://127.0.0.1:9000;
}
location /media/ {
alias /var/www/kittygram/media/;
}
location / {
root /var/www/kittygram;
index index.html index.htm;
try_files $uri /index.html;
}
}
- Проверить файл конфигурации на ошибки:
sudo nginx -t
- Перезагрузить Nginx:
sudo systemctl reload nginx
- Собрать статику бекенда и перенести в директорию с которой работает Nginx:
python manage.py collectstatic
sudo cp -r infra_sprint1/backend/static_backend/ /var/www/kittygram/
-
Создать директорию
media
в директории/var/www/kittygramm/
для хранения пользовательских картинок -
В директории
/infra_sprint1/backend/kittygram/backend/
создать.env
и поместить переменные окруженияSECRET_KEY
ИDEBUG
в формате<КЛЮЧ: значение>
-
Получить SSL сертификат:
- Установить пакетный менеджер snapd:
sudo apt install snapd
- Установить и обновить зависимости для пакетного менеджера snap:
sudo snap install core; sudo snap refresh core
- Установить пакет certbot:
sudo snap install --classic certbot
- Создать ссылки на certbot в системной директории:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
- Запустить certbot и получить SSL-сертификат:
sudo certbot --nginx
- Перезагрузить конфигурацию Nginx:
sudo systemctl reload nginx
- Установить пакетный менеджер snapd: