128 lines
3.2 KiB
Markdown
128 lines
3.2 KiB
Markdown
# youtube-microservice
|
||
|
||
Примечание: сервис не имеет каких либо ограничении с точки зрения верификации => её нужно реализовать самому, как пример доступ к API только через внутренний IP адрес или составить белый список IP, который может взаимодействовать через Traefik/NGINX
|
||
|
||
### uv
|
||
```
|
||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||
```
|
||
|
||
|
||
### Deno
|
||
```
|
||
curl -fsSL https://deno.land/install.sh | sh
|
||
```
|
||
|
||
### Redis
|
||
```
|
||
sudo apt install redis
|
||
```
|
||
|
||
### Environment
|
||
|
||
- Переименовать `.env.example` в `.env`
|
||
- Добавить конфигурацию для Redis (объязательно)
|
||
- По желанию добавить (если включен в app.core.config работу с S3 как uploader_backend) конфигурацию для S3
|
||
|
||
### Конфигурация для systemd
|
||
|
||
* **Получить полный путь к директории проекта**
|
||
|
||
```bash
|
||
pwd
|
||
# /home/.../youtube-microservice
|
||
```
|
||
|
||
* **Получить полный путь к uv**
|
||
|
||
```bash
|
||
which uv
|
||
# /home/.../.local/bin/uv
|
||
```
|
||
|
||
#### Для FastAPI (`/etc/systemd/system/fastapi-service.service`):
|
||
|
||
```ini
|
||
[Unit]
|
||
Description=FastAPI Service
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=your_username # Замените на имя вашего пользователя
|
||
WorkingDirectory=/path/to/your/project # Замените на путь к проекту
|
||
ExecStart=/usr/bin/uv run fastapi run --host 0.0.0.0 --port 1234
|
||
Restart=always
|
||
RestartSec=10
|
||
StandardOutput=journal
|
||
StandardError=journal
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
```
|
||
|
||
#### Для Celery (``):
|
||
|
||
```ini
|
||
[Unit]
|
||
Description=Celery Worker
|
||
After=network.target fastapi-service.service # Зависимость от FastAPI (опционально)
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=your_username # Замените на имя вашего пользователя
|
||
WorkingDirectory=/path/to/your/project # Замените на путь к проекту
|
||
ExecStart=/usr/bin/uv run celery -A app.core.celery.celery_app worker --loglevel=info
|
||
Restart=always
|
||
RestartSec=10
|
||
StandardOutput=journal
|
||
StandardError=journal
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
#### Активация и запуск
|
||
|
||
```bash
|
||
# Перезагружаем конфигурацию systemd
|
||
sudo systemctl daemon-reload
|
||
|
||
# Включаем автозапуск при загрузке системы
|
||
sudo systemctl enable fastapi-service.service
|
||
sudo systemctl enable celery-worker.service
|
||
|
||
# Запускаем сервисы
|
||
sudo systemctl start fastapi-service.service
|
||
sudo systemctl start celery-worker.service
|
||
```
|
||
|
||
#### Мониторинг и управление
|
||
|
||
* **Проверить статус**:
|
||
|
||
```bash
|
||
sudo systemctl status fastapi-service.service
|
||
sudo systemctl status celery-worker.service
|
||
```
|
||
|
||
* **Посмотреть логи**:
|
||
|
||
```bash
|
||
sudo journalctl -u fastapi-service.service -f
|
||
sudo journalctl -u celery-worker.service -f
|
||
```
|
||
|
||
* **Остановить сервис**:
|
||
|
||
```bash
|
||
sudo systemctl stop fastapi-service.service
|
||
```
|
||
|
||
* **Перезапустить сервис**:
|
||
|
||
```bash
|
||
sudo systemctl restart celery-worker.service
|
||
```
|