Latest News - ΡΡΠΎ API ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄Π»Ρ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π½ΠΎΠ²ΠΎΡΡΠ½ΡΡ ΡΡΠ°ΡΠ΅ΠΉ Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π±ΠΎΡΠΎΠΌ Telegram.
API ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΎΡΠ°ΠΌΠΈ Telegram ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ - Π½ΠΎΠ²ΠΎΡΡΠ½ΡΠΌΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΎΡΠ°ΠΌΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» API:
- ΠΠ°ΠΏΡΡΠΊ ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠ Π½ΠΎΠ²ΠΎΡΡΠ½ΡΠΌΠΈ ΡΡΠ°ΡΡΡΠΌΠΈ;
- ΠΡΠΈΡΡΠΊΠ° ΠΠ ΠΎΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π½ΠΎΠ²ΠΎΡΡΠ½ΡΡ ΡΡΠ°ΡΠ΅ΠΉ;
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ: ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΠ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ Π½ΠΎΠ²ΠΎΡΡΠ½ΡΠΌΠΈ ΡΡΠ°ΡΡΡΠΌΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΡΠ°ΡΡΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΠΌΠΈ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ° ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ ;
- Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ html-ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠ°ΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ InstantView Telegram.
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π½ΠΎΠ²ΠΎΡΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ²:
- Π ΠΠ;
- ΠΠ½ΠΎΠ‘ΠΠ.
ΠΠ°ΡΡΡΠΎΠ΅Π½Ρ:
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°;
- CI/CD (GitHub Actions + Docker-Compose).
- Π‘ΠΊΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
git clone git@github.com:AbbadonAA/Latest_News_Bot.git
- ΠΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ venv ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΉΠ» .env ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ:
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ API
APP_TITLE=LATEST_NEWS_PARSER # (ΠΏΡΠΈΠΌΠ΅Ρ) Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
DEBUG=False # True Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ
HOST=0.0.0.0 # Ρ
ΠΎΡΡ
PORT=8080 # ΠΏΠΎΡΡ
DOMAIN=False # ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ DOMAIN_NAME
DOMAIN_NAME=https://example.com # ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ (Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ SSL)
PARSER_FREQUENCY=5 # ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² (ΠΌΠΈΠ½ΡΡΡ)
STORAGE_DAYS=30 # ΡΡΠΎΠΊ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² ΠΠ
SECRET=539e2390-9cc3-4bc7-aec1-2e96471ba49f # (ΠΏΡΠΈΠΌΠ΅Ρ) uuid Π΄Π»Ρ Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
FIRST_SUPERUSER_EMAIL=admin@gmail.com # (ΠΏΡΠΈΠΌΠ΅Ρ) email ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
FIRST_SUPERUSER_PASSWORD=AdmiN_123456789 # (ΠΏΡΠΈΠΌΠ΅Ρ) ΠΏΠ°ΡΠΎΠ»Ρ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΠΎΡΠ°
IP=127.0.0.1 # (ΠΏΡΠΈΠΌΠ΅Ρ) Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°
WEBHOOK=False # True Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΎΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ webhook
BOT_TOKEN=5157247582:ATFpZanqlutiNMJfvO6tiNUDPnBkFAmiVi4 # (ΠΏΡΠΈΠΌΠ΅Ρ) ΡΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ° Telegram
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
POSTGRES_DB=news_db # Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΠ
POSTGRES_USER=postgres # ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΠ
POSTGRES_PASSWORD=postgres # ΠΏΠ°ΡΠΎΠ»Ρ ΠΠ
DB_HOST=localhost # Ρ
ΠΎΡΡ ΠΠ (Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ΅Π· docker-compose Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° ΠΈΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Ρ ΠΠ)
DB_PORT=6100 # ΠΏΠΎΡΡ ΠΠ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π»ΡΠ±ΠΎΠΉ, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ docker-compose)
Warning: ΠΠ»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄ΠΎΠΌΠ΅Π½ (DOMAIN=False) ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π±ΠΎΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ polling (WEBHOOK=False). Π ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΎΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ webhook ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ SSL. ΠΠ½Π°ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ngrok.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ngrok
Ngrok ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ (ΡΡΠ½Π½Π΅Π»Ρ) Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅: https://ngrok.com/
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Ngrok, ΡΠ»Π΅Π΄ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ:
-
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Ngrok ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ngrok http 8080
-
ΠΠ°Π΄Π°ΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ (.env):
DOMAIN_NAME=https://1234-56-78-9.eu.ngrok.io # ΠΡΠΈΠΌΠ΅Ρ
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ PostgreSQL (Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Docker):
cd infra/
docker-compose -f docker-compose.local.yml up -d news_db
- Π ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ Π² ΠΠ:
alembic upgrade head
- ΠΡΠΎΠ΅ΠΊΡ Π³ΠΎΡΠΎΠ² ΠΊ Π·Π°ΠΏΡΡΠΊΡ.
Π ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
python run.py
Π‘Π΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ:
(ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π² ΡΠ°ΠΉΠ»Π΅ .env: HOST=0.0.0.0, PORT=8080)
- http://127.0.0.1:8080 - API
- http://127.0.0.1:8080/docs - Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Swagger
- http://127.0.0.1:8080/redoc - Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ReDoc
Π’Π°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ Π±ΠΎΡ Telegram, ΡΠΎΠΊΠ΅Π½ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ Π² ΡΠ°ΠΉΠ»Π΅ .env.
Π ΠΠ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (email, password ΡΠΊΠ°Π·Π°Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ .env).
Π£ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
mkdir LATEST_NEWS (ΠΏΡΠΈΠΌΠ΅Ρ)
- Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΉΠ» .env ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ:
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ API
APP_TITLE=LATEST_NEWS_PARSER # (ΠΏΡΠΈΠΌΠ΅Ρ) Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
DEBUG=False # True Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ
HOST=0.0.0.0 # Ρ
ΠΎΡΡ
PORT=8080 # ΠΏΠΎΡΡ
DOMAIN=False # ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ DOMAIN_NAME
DOMAIN_NAME=https://example.com # ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ (Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ SSL)
PARSER_FREQUENCY=5 # ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² (ΠΌΠΈΠ½ΡΡΡ)
STORAGE_DAYS=30 # ΡΡΠΎΠΊ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² ΠΠ
SECRET=539e2390-9cc3-4bc7-aec1-2e96471ba49f # (ΠΏΡΠΈΠΌΠ΅Ρ) uuid Π΄Π»Ρ Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
FIRST_SUPERUSER_EMAIL=admin@gmail.com # (ΠΏΡΠΈΠΌΠ΅Ρ) email ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
FIRST_SUPERUSER_PASSWORD=AdmiN_123456789 # (ΠΏΡΠΈΠΌΠ΅Ρ) ΠΏΠ°ΡΠΎΠ»Ρ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΠΎΡΠ°
IP=127.0.0.1 # (ΠΏΡΠΈΠΌΠ΅Ρ) Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°
WEBHOOK=False # True Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΎΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ webhook
BOT_TOKEN=5157247582:ATFpZanqlutiNMJfvO6tiNUDPnBkFAmiVi4 # (ΠΏΡΠΈΠΌΠ΅Ρ) ΡΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ° Telegram
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
POSTGRES_DB=news_db # Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΠ
POSTGRES_USER=postgres # ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΠ
POSTGRES_PASSWORD=postgres # ΠΏΠ°ΡΠΎΠ»Ρ ΠΠ
DB_HOST=news_db # Ρ
ΠΎΡΡ ΠΠ
DB_PORT=6100 # ΠΏΠΎΡΡ ΠΠ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π»ΡΠ±ΠΎΠΉ, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ docker-compose)
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ /infra:
mkdir infra
- Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /infra ΡΠ°ΠΉΠ» docker-compose.local.yml
- Π Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /infra Π·Π°ΠΏΡΡΡΠΈΡΠ΅ docker-compose:
docker-compose -f docker-compose.local.yml up -d
- ΠΡΠΎΠ΅ΠΊΡ Π·Π°ΠΏΡΡΠ΅Π½ Π² Π΄Π²ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ :
- latest_news_bot
- latest_news_db
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
mkdir latest-news (ΠΏΡΠΈΠΌΠ΅Ρ)
- Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΉΠ» .env ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ:
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ API
APP_TITLE=LATEST_NEWS_PARSER # (ΠΏΡΠΈΠΌΠ΅Ρ) Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
DEBUG=False # True Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΡΠ»Π°Π΄ΠΊΠΈ
HOST=0.0.0.0 # Ρ
ΠΎΡΡ
PORT=8080 # ΠΏΠΎΡΡ
DOMAIN=True # ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ DOMAIN_NAME
DOMAIN_NAME=https://example.com # (ΠΏΡΠΈΠΌΠ΅Ρ)
PARSER_FREQUENCY=5 # ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² (ΠΌΠΈΠ½ΡΡΡ)
STORAGE_DAYS=30 # ΡΡΠΎΠΊ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² ΠΠ
SECRET=539e2390-9cc3-4bc7-aec1-2e96471ba49f # (ΠΏΡΠΈΠΌΠ΅Ρ) uuid Π΄Π»Ρ Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
FIRST_SUPERUSER_EMAIL=admin@gmail.com # (ΠΏΡΠΈΠΌΠ΅Ρ) email ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
FIRST_SUPERUSER_PASSWORD=AdmiN_123456789 # (ΠΏΡΠΈΠΌΠ΅Ρ) ΠΏΠ°ΡΠΎΠ»Ρ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΠΎΡΠ°
IP=127.0.0.1 # (ΠΏΡΠΈΠΌΠ΅Ρ) Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°
WEBHOOK=True # ΠΠ°ΠΏΡΡΠΊ Π±ΠΎΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ webhook
BOT_TOKEN=5157247582:ATFpZanqlutiNMJfvO6tiNUDPnBkFAmiVi4 # (ΠΏΡΠΈΠΌΠ΅Ρ) ΡΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ° Telegram
INSTANT_VIEW=True # ΠΠΊΡΠΈΠ²Π°ΡΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Instant View
RHASH=f4642197829222 # (ΠΏΡΠΈΠΌΠ΅Ρ) rhash Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° Instant View
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
POSTGRES_DB=news_db # Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΠ
POSTGRES_USER=postgres # ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΠ
POSTGRES_PASSWORD=postgres # ΠΏΠ°ΡΠΎΠ»Ρ ΠΠ
DB_HOST=news_db # Ρ
ΠΎΡΡ ΠΠ
DB_PORT=6100 # ΠΏΠΎΡΡ ΠΠ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π»ΡΠ±ΠΎΠΉ, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ docker-compose)
Warning: Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΡΠ΅ΠΆΠΈΠΌ Instant View ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Telegram. ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΡΠ°ΡΠ΅ΠΉ Π² Telegram ΡΠ΅ΡΠ΅Π· Π±ΡΠ°ΡΠ·Π΅Ρ ΠΈΠ»ΠΈ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ°ΠΌΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Instant View. ΠΠ»Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠ΅Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Instant View, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ» .env. - Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΡΡΠ»ΠΊΡ ΠΈ ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π΅Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
- Π ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Instant View - ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½ IV ΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π΅Π³ΠΎ rhash Π² ΡΠ°ΠΉΠ»Π΅ .env:
RHASH=f4642197829222 # (ΠΏΡΠΈΠΌΠ΅Ρ) rhash Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° IV
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ /infra:
mkdir infra
- Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /infra ΡΠ°ΠΉΠ» docker-compose.prod.yml
- Π£ΡΠΎΡΠ½ΠΈΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ docker-compose.prod.yml ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ:
VIRTUAL_HOST=example.com (ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½)
LETSENCRYPT_HOST=example.com (ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΠ°Ρ Π΄ΠΎΠΌΠ΅Π½)
LETSENCRYPT_EMAIL=your_email@example.com (ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΠ°Ρ email)
- Π Π°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /infra (Π»ΡΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ) ΡΠ°ΠΉΠ» docker-compose.nginx.yml
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΡ Docker:
docker network create nginx-proxy
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ:
docker-compose -f docker-compose.nginx.yml up -d
docker-compose -f docker-compose.prod.yml up -d
- ΠΡΠΎΠ΅ΠΊΡ Π·Π°ΠΏΡΡΠ΅Π½ Π² ΡΠ΅ΡΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ :
-
latest_news_bot
-
latest_news_db
-
nginx-proxy
-
letsencrypt
ΠΠΎΠ»ΡΡΠ΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ SSL ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ².
Pushkarev Anton