เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเปเบญเบเบเบฐเปเบเปเบเบเบฑเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเปเบญเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ CI / CD เปเบเบเปเบเป Plesk Control Panel เปเบฅเบฐ Github Actions. เบกเบทเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบฎเบฝเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเปเบฒเปเบเปเปเบเบเบเบฒเบเบเปเบฒเบเบเบฒเบเบเบตเปเบกเบตเบเบทเปเบเบตเปเบเปเปเบชเบฑเบเบชเบปเบ "Helloworld". เบกเบฑเบเปเบเปเบเบทเบเบเบฝเบเปเบงเปเปเบเบเบญเบ Flask Python, เบกเบตเบเบฐเบเบฑเบเบเบฒเบ Celery เปเบฅเบฐ Angular 8 frontend.
เบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเบเบฑเบ repositoriesโ:
เปเบเบชเปเบงเบเบเปเบฒเบญเบดเบเบเบญเบเบเบปเบเบเบงเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบดเปเบเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฅเบฐเบเบฒเบเบชเปเบงเบเบเบญเบเบกเบฑเบ. เปเบเบเบฑเปเบเบเบตเบชเบญเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบงเบดเบเบตเบเบฒเบเบเบดเบเบเบฑเปเบ Plesk เปเบฅเบฐเบเบดเบเบเบฑเปเบเบชเปเบงเบเบเบฐเบซเบเบฒเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบเปเบฒเปเบเบฑเบ (DB, RabbitMQ, Redis, Docker, เปเบฅเบฐเบญเบทเปเบเป).
เปเบเบชเปเบงเบเบเบตเบชเบฒเบก, เบชเบธเบเบเปเบฒเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบญเบเบซเบฒเบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก dev เปเบฅเบฐ prod. เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบตเบเบเบปเบงเปเบงเบฑเบเปเบเบเปเปเบเบดเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เปเบฅเบฐเปเบกเปเบเปเบฅเปเบง, เบเปเบญเบเบฅเบทเบกเปเบเบฐเบเปเบฒเบเบปเบงเปเบญเบ. เบเปเบญเบเบเบทเป Oleg Borzov, เบเปเบญเบเปเบเบฑเบเบเบนเปเบเบฑเบเบเบฐเบเบฒ fullstack เปเบเบเบตเบก CRM เบชเปเบฒเบฅเบฑเบเบเบนเปเบเบฑเบเบเบฒเบเบเปเบฒเบเบญเบเบเบตเป Domclick.
เบเบฒเบเบฅเบงเบกเปเบเบเบเบฒเบ
เบเปเบฒเบญเบดเบ, เปเบซเปเปเบเบดเปเบเบชเบญเบ repositories เปเบเบเบเบฒเบ - backend เปเบฅเบฐเบซเบเปเบฒ - เปเบฅเบฐเปเบเปเบเปเบฅเบเบฐเบฅเบฐเบซเบฑเบ.
เบเปเบฒเบเบซเบผเบฑเบ: Flask+Celery
เบชเปเบฒเบฅเบฑเบเบเปเบฒเบเบซเบฅเบฑเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบญเบปเบฒเบเปเปเบเบตเปเปเบเบฑเบเบเบตเปเบเบดเบเบปเบกเปเบเบเบฑเบเบเบฒเบเบฑเบเบเบฑเบเบเบฐเบเบฒ Python: เบเบญเบ Flask (เบชเปเบฒเบฅเบฑเบ API) เปเบฅเบฐ Celery (เบชเปเบฒเบฅเบฑเบเปเบเบงเบงเบฝเบ). SQLAchemy เบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบ ORM. Alembic เปเบกเปเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบ. เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบงเบเบชเบญเบ JSON เปเบ handles - Marshmallow.
ะ
/ping
- เบเบงเบโเบชเบญเบโเบเบฒเบโเบกเบตโ;- เบเบฑเบโเบเบฒเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบปเบโเบเบฐโเบเบฝเบโ, เบเบฒเบโเบญเบฐโเบเบธโเบเบฒเบโ, deโเบเบฒเบโเบญเบฐโเบเบธโเบเบฒเบโเปเบฅเบฐโเบเบฒเบโเปเบเปโเบฎเบฑเบโเบเบนเปโเปเบเปโเบญเบฐโเบเบธโเบเบฒเบโ;
- เปเบเบเบฑเบเบเบฒเบเบญเบตเปเบกเบฅเปเบเบตเปเบงเบฒเบเบงเบฝเบเบขเบนเปเปเบเปเบเบง Celery.
send_mail_task
.
เบขเบนเปเปเบเปเบเบเปเบเบต
docker
เบเบฑเบเบชเบญเบ Dockerfiles (base.dockerfile
เปเบเบทเปเบญเบชเปเบฒเบเบฎเบนเบเบเบฒเบเบเบทเปเบเบเบฒเบเบเบตเปเบเปเปเบเปเบญเบเบเปเบฝเบเปเบเบเปเบฅเบฐDockerfile
เบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเปเบซเปเบเบเบปเปเบเบเป);.env_files
- เบเบฑเบเปเบเบฅเปเบเบตเปเบกเบตเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
เบกเบตเบชเบตเปเปเบเบฅเป docker-compose เบขเบนเปเบฎเบฒเบเบเบญเบเปเบเบเบเบฒเบ:
docker-compose.local.db.yml
เบเบปเบเบชเบนเบเบเบฒเบเบเปเปเบกเบนเบเบเปเบญเบเบเบดเปเบเปเบเบทเปเบญเบเบฑเบเบเบฐเบเบฒ;docker-compose.local.workers.yml
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเปเบฝเบเบเปเบญเบเบเบดเปเบเบเบญเบเบเบฐเบเบฑเบเบเบฒเบ, เบเบฒเบเบเปเปเบกเบนเบ, Redis เปเบฅเบฐ RabbitMQ;docker-compose.test.yml
เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ;docker-compose.yml
เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเปโ.
เปเบฅเบฐเปเบเบเปเบเบตเบชเบธเบเบเปเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบปเบเปเบ -
deploy.sh
โ เบเบฒเบโเปเบเบตเบโเบเบปเบงโเบเบฒเบโเปเบเบทเปเบญเบโเบเปเบฒเบโเปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโ. เบเปเบฒเปเบเบตเบเบเบฒเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเปเบเปเบ Github Actions;rollback.sh
- rollback เบเบญเบเบเบฑเบเบเบธเบเบฑเบเบชเบฐเบเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบญเบเบชเบฐเบเบฒเปเบซเปเบ;curl_tg.sh
- เบชเบปเปเบโเบเบฒเบโเปเบเปเบโเบเบฒเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบฑเบ Telegramโ.
Frontend เบชเบธเบ Angular
- เบซเบเปเบฒเบซเบผเบฑเบเบเบตเปเบกเบตเปเบเบเบเบญเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบปเปเบเบญเบตเปเบกเบงเปเบฅเบฐเบเบธเปเบกเบญเบญเบ.
- เปเปเบฒเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ.
- เบซเบเปเบฒเบฅเบปเบเบเบฐเบเบฝเบ.
เปเปเบฒเบซเบผเบฑเบเปเบเบดเปเบเบงเปเบฒ:
เบกเบตเบชเบญเบเปเบเบฅเปเบขเบนเปเปเบเบฎเบฒเบ Dockerfile
ะธ docker-compose.yml
, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเปเบเบเปเบเบตเบเบตเปเบเบธเปเบเปเบเบตเบ .ci-cd
เบกเบต scripts เบซเบเปเบญเบเบเปเบงเบฒเบขเบนเปเปเบ repository เปเบฅเบฑเบเบเปเบญเบ (scripts เบเบญเบเบญเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเปเบ).
เปเบฅเบตเปเบกเปเบเบเบเบฒเบเปเบ Plesk
เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒ Plesk เปเบฅเบฐเบชเปเบฒเบเบเบฒเบเบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบเปเบงเบฑเบเปเบเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เบเบฒเบเบเบดเบเบเบฑเปเบเบชเปเบงเบเบเบฐเบซเบเบฒเบ
เปเบ Plesk, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบชเบตเปเบชเปเบงเบเบเบฐเบซเบเบฒเบ:
Docker
เปเบเบทเปเบญเบเบฑเบเบเบฒเบ เปเบฅเบฐเบชเบฐเปเบเบเบชเบฐเบเบฒเบเบฐเบเบญเบเบเบนเปเบเบญเบเปเบเบเปเบเบตเบเปเบงเบเบชเบฒเบเบเบฒเปเบเบเบฐเบเบฒเบ admin Plesk;Git
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฑเปเบเบเบญเบเบเบฒเบเปเบเปเบเบฒเบเปเบเบดเบเปเบเบตเบเปเบงเบต;Let's Encrypt
เปเบเบทเปเบญเบชเปเบฒเบ (เปเบฅเบฐเบเปเปเบญเบฒเบเบธเบญเบฑเบเบเบฐเปเบเบกเบฑเบ) เปเบเบฎเบฑเบเบฎเบญเบ TLS เบเบฃเบต;Firewall
เปเบเบทเปเบญเบเบฑเปเบเบเปเบฒเบเบฒเบเบเบฑเปเบเบเบญเบเบเบญเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฒเปเบเบปเปเบฒ.
เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเบดเบโเบเบฑเปเบโเปเบซเปโเปเบเบปเบฒโเปเบเบปเปเบฒโเปเบเบโเบเปเบฒเบโเบเบฒเบ Plesk admin panel เปเบโเบเบฒเบโเบชเปเบงเบโเบเบฐโเบซเบเบฒเบโ:
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเบฅเบฐเบญเบฝเบเบชเปเบฒเบฅเบฑเบเบชเปเบงเบเบเบฐเบซเบเบฒเบ, เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบฐเปเบฎเบฑเบเปเบเบทเปเบญเบเบธเบเบเบฐเบชเบปเบเบเบฒเบเบชเบฒเบเบดเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เบชเปเบฒเบเบเบฒเบเบชเบฐเปเบฑเบเปเบเป เปเบฅเบฐเปเบงเบฑเบเปเบ
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบเบฒเบเบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบเปเบงเบฑเบเปเบเบเป helloworld.ru เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฅเบฐเปเบเบตเปเบกเปเบเปเบกเบเบเปเบญเบ dev.helloworld.ru เบขเบนเปเบเบตเปเบเบฑเปเบ.
- เบชเปเบฒเบเบเบฒเบเบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบกเบ helloworld.ru เปเบฅเบฐเบฅเบฐเบเบธเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบนเปเปเบเปเบฅเบฐเบเบปเบ:
เบเบงเบเปเบเบดเปเบเบเปเบญเบเบขเบนเปเบเปเบฒเบเบฅเบธเปเบกเบเบญเบเบซเบเปเบฒ เบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบเบญเบเปเบเปเบเปเบกเบเบเปเบงเบ Let's Encryptเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒ HTTPS เบชเปเบฒเบฅเบฑเบเปเบงเบฑเบเปเบเบเป: - เบเปเปเปเบ, เปเบเบเบฒเบเบชเบฐเบซเบกเบฑเบเบเบตเป, เบชเปเบฒเบเปเบเปเบกเบเบเปเบญเบ dev.helloworld.ru (เบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเบญเบเปเบเบขเบฑเปเบเบขเบทเบ TLS เปเบเปเบเบฃเบต):
เบเบฒเบเบเบดเบเบเบฑเปเบเบญเบปเบเบเบฐเบเบญเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ
เบเบงเบเปเบฎเบปเบฒเบกเบตเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบกเบต OS Debian Stretch 9.12 เปเบฅเบฐเบเบดเบเบเบฑเปเบเปเบเบเบเบงเบเบเบธเบก Plesk Obsidian 18.0.27.
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบดเบเบเบฑเปเบเปเบฅเบฐ configure เบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
- PostgreSQL (เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบฐเบกเบตเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบเบถเปเบเบเบตเปเบกเบตเบชเบญเบเบเบฒเบเบเปเปเบกเบนเบเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก dev เปเบฅเบฐ prod).
- RabbitMQ (เบเบฝเบงเบเบฑเบ, เบเบปเบงเบขเปเบฒเบเบเบฝเบงเบเบฑเบเบเบฑเบ vhosts เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก).
- เบชเบญเบเบเบปเบงเบขเปเบฒเบ Redis (เบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก dev เปเบฅเบฐเบเบฐเบฅเบดเบเบเบฐเบเบฑเบ).
- Docker Registry (เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเบเปเบญเบเบเบดเปเบเบเบญเบเบฎเบนเบเบเบฒเบ Docker เบเบตเปเบชเปเบฒเบเบเบถเปเบ).
- UI เบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ Docker.
PostgreSQL
Plesk เบกเบฒเบเปเบญเบกเบเบฑเบ PostgreSQL DBMS เปเบฅเปเบง, เปเบเปเบเปเปเปเบกเปเบเบฎเบธเปเบเบซเบผเปเบฒเบชเบธเบ (เปเบเปเบงเบฅเบฒเบเบฝเบ Plesk Obsidian.
เบกเบตเบเปเบฒเปเบเบฐเบเปเบฒเบขเปเบฒเบเบฅเบฐเบญเบฝเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบ Postgres เปเบ Debian เปเบเบดเบเบชเบธเบเบเบด (
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
เบเบดเบเบฒเบฅเบฐเบเบฒเบงเปเบฒ PostgreSQL เบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเปเบญเบเบเปเบฒเบเบเบฒเบเบเบฒเบ, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ. เบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเบงเบเปเบฎเบปเบฒ /etc/postgresql/12/main/postgresql.conf
เปเบซเปเบเบฑเบเบเบนเปเบชเบฐเปเบซเบเบต. เบกเบฑเบเบเบงเบเบเบฐเบชเบฑเบเปเบเบเปเบซเบฑเบเบขเบนเปเบเบตเปเบเบตเปเบงเปเบฒเปเบเบทเปเบญเบเบเบดเบเปเบฅเบเบเบฑเปเบเบเปเบฒเบงเบเปเปเปเบกเปเบเบฅเบนเบเบเบทเบ magic, เปเบฅเบฐเบเบทเปเบเบเบฒเบเบเบงเบเบเบฐเบเบทเบเบเบฑเบเปเบซเปเบเบฑเบเปเบเบเบเบงเปเบฒ, เปเบเบเบญเบตเบเปเบชเปเบฎเบฒเบเปเบง, เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบเบญเบเบเปเบฒเบเบฒเบกเบเบญเบเบเปเบฒเบ. เปเบเปเบเบตเปเปเบกเปเบเบเบฝเบเบเปเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบปเปเบ.
เบเบญเบโเปเบซเบเบทเบญโเปเบโเบเบฒเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบเบตเปโเบชเบฐโเปเบซเบเบตโเปเบเบโเบเบฒเบโเบเบดเบโเปเบฅเปโ, เบเบงเบโเปเบฎเบปเบฒโเบเบฑเบโเบกเบตโเบเบฒเบโเบเปเบฝเบโเปเบเบโเปเบโ postgresql.conf
เบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ 5432 เปเบเบซเบฒเบเปเบญเบเบญเบทเปเบ (เปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ - 53983).
เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเปเบฝเบเปเบเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ, restart postgresql-server เบเปเบงเบเบเปเบฒเบชเบฑเปเบ:
service postgresql restart
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบดเบเบเบฑเปเบ เปเบฅเบฐเบเบฑเปเบเบเปเบฒ PostgreSQL. เบเบญเบเบเบตเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบ, เบเบนเปเปเบเปเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก dev เปเบฅเบฐเบเบฐเบฅเบดเบเบเบฐเบเบฑเบ, เปเบฅเบฐเปเบซเปเบชเบดเบเบเบนเปเปเบเปเปเบเบเบฒเบเบเบธเปเบกเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ:
$ su - postgres
postgres:~$ create database hw_dev_db_name;
CREATE DATABASE
postgres:~$ create user hw_dev_db_user with password 'hw_dev_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_dev_db_name to hw_dev_db_user;
GRANT
postgres:~$ create database hw_prod_db_name;
CREATE DATABASE
postgres:~$ create user hw_prod_db_user with password 'hw_prod_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_prod_db_name to hw_prod_db_user;
GRANT
เบเบฐเบเปเบฒเบ
เบเปเปเบซเปเบเปเบฒเบงเปเบเบชเบนเปเบเบฒเบเบเบดเบเบเบฑเปเบ RabbitMQ, เบเบฒเบเบซเบเปเบฒเบเปเปเบเบงเบฒเบกเบชเปเบฒเบฅเบฑเบ Celery. เบเบฒเบเบเบดเบเบเบฑเปเบเบกเบฑเบเบขเบนเปเปเบ Debian เปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบ:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install erlang erlang-nox
sudo add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install rabbitmq-server
เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบดเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ vhosts, เบเบนเปเปเบเปเปเบฅเบฐเปเบซเปเบชเบดเบเบเบดเบเบตเปเบเปเบฒเปเบเบฑเบ:
sudo rabbitmqctl add_user hw_dev_amqp_user hw_dev_amqp_password
sudo rabbitmqctl set_user_tags hw_dev_amqp_user administrator
sudo rabbitmqctl add_vhost hw_dev_vhost
sudo rabbitmqctl set_permissions -p hw_dev_vhost hw_dev_amqp_user ".*" ".*" ".*"
sudo rabbitmqctl add_user hw_prod_amqp_user hw_prod_amqp_password
sudo rabbitmqctl set_user_tags hw_prod_amqp_user administrator
sudo rabbitmqctl add_vhost hw_prod_vhost
sudo rabbitmqctl set_permissions -p hw_prod_vhost hw_prod_amqp_user ".*" ".*" ".*"
Redis
เบเบญเบเบเบตเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฑเปเบเปเบฅเบฐเบเบฑเปเบเบเปเบฒเบญเบปเบเบเบฐเบเบญเบเบชเบธเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ - Redis. เบกเบฑเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบ backend เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบงเบฝเบเบเบฒเบ Celery.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบปเบ Docker เบชเบญเบเบเบฑเบเบเบตเปเบกเบต Redis เบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก dev เปเบฅเบฐเบเบฐเบฅเบดเบเบเบฐเบเบฑเบเปเบเบเปเบเปเบชเปเบงเบเบเบฐเบซเบเบฒเบ Docker
เบชเปเบฒเบฅเบฑเบ Plesk.
- เบเบงเบเปเบฎเบปเบฒเปเบ Plesk, เปเบเบเบตเปเบชเปเบงเบเบเบฐเบซเบเบฒเบ, เบเบญเบเบซเบฒเบชเปเบงเบเบเบฐเบซเบเบฒเบ Docker เปเบฅเบฐเบเบดเบเบเบฑเปเบเบกเบฑเบ (เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบชเบฐเบเบฑเบเบเบฃเบต):
- เปเบเบเบตเปเบชเปเบงเบเบเบฐเบซเบเบฒเบเบเบตเปเบเบดเบเบเบฑเปเบ, เบเบญเบเบซเบฒเบฎเบนเบเบเบฒเบเปเบเบเบเปเบฒเบเบเบฒเบเบเบปเปเบเบซเบฒ
redis bitnami
เปเบฅเบฐเบเบดเบเบเบฑเปเบเปเบงเบตเบเบฑเบเบซเบผเปเบฒเบชเบธเบ: - เบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเปเบเปเบเบเบนเปเบเบญเบเปเบเบเปเบเบตเบเบตเปเบเบฒเบงเปเบซเบฅเบเปเบฅเปเบงเปเบฅเบฐเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ: เบฅเบฐเบเบธเบเบญเบ, เบเบฐเบซเบเบฒเบ RAM เบเบตเปเบเบฑเบเบชเบฑเบเบชเบนเบเบชเบธเบ, เบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก, เปเบฅเบฐเบเบดเบเบเบฑเปเบเบเบฐเบฅเบดเบกเบฒเบ:
- เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฑเบเบเบฑเปเบเบเบญเบ 2-3 เบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบฅเบดเบเบเบฐเบเบฑเบ, เปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบฝเบเบเบฒเบฅเบฒเบกเบดเปเบเบต: เบเบญเบ, เบฅเบฐเบซเบฑเบเบเปเบฒเบ, เบเบฐเบซเบเบฒเบ RAM เปเบฅเบฐเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเปเบเบตเบเบฐเบฅเบดเบกเบฒเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ:
Docker Registry
เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบทเปเบเบเบฒเบ, เบกเบฑเบเบเบฐเปเบเบฑเบเบเบฒเบเบเบตเบเบตเปเบเบฐเบงเบฒเบเบเปเบญเบเปเบเบฑเบเบฎเบนเบเบเบฒเบ Docker เบเบญเบเบเปเบฒเบเปเบญเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เปเบเบเบเบต, เบเบทเปเบเบเบตเปเปเบเบตเบเปเบงเบตเปเบเบเบฑเบเบเบธเบเบฑเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบฅเบฒเบเบฒเบเบทเบ (เปเบเปเบเบญเบเบงเปเบฒเบกเบตเบฅเบฒเบเบฒเบเบทเบเบเบงเปเบฒเบเบฒเบเบเบญเบ DockerHub), เปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเบชเปเบฒเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบชเปเบงเบเบเบปเบงเปเบกเปเบเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบ.
เบเบงเบโเปเบฎเบปเบฒโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเบกเบตโ:
- Docker repository เบเปเบญเบเบเบฑเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเปเบเปเบกเบเบเปเบญเบ
https://docker.helloworld.ru ; - UI เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบดเปเบเบฎเบนเบเบเบฒเบเปเบ repository, เบกเบตเบขเบนเปเปเบ
https://docker-ui.helloworld.ru .
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป:
- เปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบชเบญเบเปเบเปเบกเบเบเปเบญเบเปเบ Plesk เปเบเบเบฒเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ: docker.helloworld.ru เปเบฅเบฐ docker-ui.helloworld.ru, เปเบฅเบฐ configure Let's Encrypt เปเบเบขเบฑเปเบเบขเบทเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบเบปเบฒ.
- เปเบเบตเปเบกเปเบเบฅเปเปเบชเปเปเบเบเปเบเบตเบเปเบญเบ docker.helloworld.ru
docker-compose.yml
เบเปเบงเบโเปเบเบทเปเบญโเปเบโเบเบฑเปเบโเบเบตเปโ:version: "3" services: docker-registry: image: "registry:2" restart: always ports: - "53985:5000" environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_REALM: basic-realm REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data volumes: - ./.docker-registry.htpasswd:/auth/.htpasswd - ./data:/data docker-registry-ui: image: konradkleine/docker-registry-frontend:v2 restart: always ports: - "53986:80" environment: VIRTUAL_HOST: '*, https://*' ENV_DOCKER_REGISTRY_HOST: 'docker-registry' ENV_DOCKER_REGISTRY_PORT: 5000 links: - 'docker-registry'
- เบเบฒเบเปเบเป SSH, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเปเบเบฅเป .htpasswd เบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเบเบทเปเบเบเบฒเบเปเบ Docker repository:
htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
- เปเบเบฑเบโเบเปเบฒโเปเบฅเบฐโเบเบปเบโเบเบฒโเบเบฐโเบเบฐโ:
docker-compose up -d
- เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบ Nginx เปเบเบซเบฒเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเบฒเบ Plesk.
เบเบฑเปเบเบเบญเบเบเปเปเปเบเบเบตเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบกเบเบเปเบญเบ docker.helloworld.ru เปเบฅเบฐ docker-ui.helloworld.ru:
เบชเปเบงเบ เปเบเบทเปเบญเบเบกเบท Dev เปเบงเบฑเบโเปเบโเบเบญเบโเบเบงเบโเปเบฎเบปเบฒโเปเบโเบเบตเปโ เบเบปเบเบฅเบฐเบเบฝเบ Docker Proxy:
เปเบฅเบฐเปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฒเปเบเบปเปเบฒเบเบญเบเบเบปเบงเปเบเบเปเบเบเบฑเบเบเบนเปเบเบญเบเปเบเบเปเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
- เบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบเบดเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบเบฑเบเบเบธเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฒเบเปเบเบทเปเบญเบเบเบฑเบเบเปเบญเบเบเบดเปเบ:
$ docker login docker.helloworld.ru -u hw_docker_admin -p hw_docker_password WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded
- เปเบซเปเบเบงเบเปเบเบดเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเปเบเปเบกเบเบเปเบญเบ docker-ui.helloworld.ru:
เปเบกเบทเปเบญเบเปเบฒเบเบเบฅเบดเบเปเบชเป Browse repositories, เบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบฐเบชเบฐเปเบเบเบซเบเปเบฒเบเปเบฒเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเบเบตเปเบเปเบฒเบเบเบฐเบเปเบญเบเปเบชเปเบเบทเปเบเบนเปเปเบเปเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบ repository. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบทเบเปเบญเบเปเบเบซเบฒเบซเบเปเบฒเบเบตเปเบกเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบ repositories (เบชเปเบฒเบฅเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบ, เบกเบฑเบเบเบฐเบซเบงเปเบฒเบเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบเบเปเบฒเบ):
เบเบฒเบเปเบเบตเบเบเบญเบเปเบ Plesk Firewall
เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเบเปเบฒเบซเบเบปเบเบเปเบฒเบญเบปเบเบเบฐเบเบญเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเบเบเบญเบเปเบเบทเปเบญเปเบซเปเบญเบปเบเบเบฐเบเบญเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเบเบฒเบ Docker containers เปเบฅเบฐเปเบเบทเบญเบเปเบฒเบเบเบฒเบเบเบญเบ.
เปเบซเปเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบเบเปเบเป Firewall extension เบชเปเบฒเบฅเบฑเบ Plesk เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฑเปเบเบเปเบญเบเบซเบเปเบฒเบเบตเป.
- เปเบโเบซเบฒ เปเบเบทเปเบญเบเบกเบท เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒ > เบเบฒเบเบเบฑเปเบเบเปเบฒ > Firewall:
- เปเบโเบซเบฒ เปเบเปเปเบเบเบปเบเบฅเบฐเบเบฝเบ Plesk Firewall > เปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเปเบฒเบซเบเบปเบเปเบญเบ เปเบฅเบฐเปเบเบตเบเบเบญเบ TCP เบเปเปเปเบเบเบตเปเบชเปเบฒเบฅเบฑเบเปเบเบทเบญเบเปเบฒเบเบเปเบญเบ Docker (172.0.0.0 / 8):
RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
Redis: 32785, 32786 - เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฐเปเบเบตเบเบเบญเบ PostgreSQL เปเบฅเบฐเปเบเบเบเบธเปเบกเบเบญเบ RabbitMQ เบชเบนเปเปเบฅเบเบเบฒเบเบเบญเบ:
- เบเบณเปเบเปเบเบปเบเบฅเบฐเบเบฝเบเปเบเบเปเบเปเบเบธเปเบกเบเบณเปเบเปเบเบฒเบเบเปเบฝเบเปเบเบ:
เบเบฒเบเบเบฑเปเบเบเปเบฒ CI/CD เปเบ Github Actions
เปเบซเปเบเบงเบเปเบฎเบปเบฒเบฅเบปเบเปเบเบซเบฒเบชเปเบงเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบชเบธเบ - เบเบฒเบเบชเปเบฒเบเบเปเปเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฅเบฐเบชเบปเปเบเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบซเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เบเปเปโเบเบตเปโเบเบฐโเบเบฐโเบเบญเบโเบเปเบงเบโเบชเบญเบโเบเบฒเบโเบชเปเบงเบโ:
- เบเบฒเบเบชเปเบฒเบเบฎเบนเบเบเบฒเบเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเปเบ (เบชเปเบฒเบฅเบฑเบ backend) - เปเบเบเปเบฒเบ Github;
- เปเบฅเปเบเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบ (เบชเปเบฒเบฅเบฑเบ backend) เปเบฅเบฐ deploy containers - เบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เบชเบปเปเบเปเบ Plesk
เปเบซเปเบเบฑเบเบเบฒเบเบเบฑเบเบเบธเบเบเบตเบชเบญเบเบเปเบญเบ (เปเบเบฒเบฐเบงเปเบฒเบเปเปเบเปเบฒเบญเบดเบเปเบกเปเบเบเบถเปเบเบเบฑเบเบกเบฑเบ).
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเปเบเบเปเบฒเบเบฐเบเบงเบเบเบฒเบเบเบดเบเบเบฑเปเบเปเบเบเปเบเป Git extension เบชเปเบฒเบฅเบฑเบ Plesk.
เบเบดเบเบฒเบฅเบฐเบเบฒเบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบตเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก Prod เบชเปเบฒเบฅเบฑเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบ Backend.
- เบเบงเบเปเบฎเบปเบฒเปเบเบเบตเปเบเบฒเบเบชเบฐเปเบฑเบเปเบเปเปเบงเบฑเบเปเบเบเป Helloworld เบเบญเบเบเบงเบเปเบฎเบปเบฒ เปเบฅเบฐเปเบเบเบตเปเบเบฒเบเบชเปเบงเบเบเปเบญเบ Git:
- เปเบชเปเบฅเบดเปเบเปเบเบซเบฒเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบ Github เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเปเบเปเบเบเปเบญเบเบเปเปเบกเบนเบ "Remote Git repository" เปเบฅเบฐเบเปเบฝเบเปเบเปเบเบตเปเบฅเบตเปเบกเบเบปเปเบ.
httpdocs
เบเบฑเบเบเบปเบเบญเบทเปเบ (เบเบปเบงเบขเปเบฒเบ./httpdocs/hw_back
): - เบเบฑเบเบฅเบญเบเบฅเบฐเบซเบฑเบเบชเบฒเบเบฒเบฅเบฐเบเบฐ SSH เบเบฒเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบกเบฒเปเบฅเบฐ
เปเบเบตเปเบก เบกเบฑเบเบขเบนเปเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ Github. - เบเบปเบ OK เปเบเบซเบเปเบฒเบเปเปเบเบเบฑเปเบเบเบญเบ 2, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบทเบเปเบญเบเปเบเบซเบฒเบซเบเปเบฒ repository เปเบ Plesk. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเป configure repository เปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบเบธเบเบเปเบฝเบงเบเบฑเบเบเบฒเบ commits เบเบฑเบเบชเบฒเบเบฒเบเบปเปเบเบชเบฐเบเบฑเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบเบเบตเป เบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ เปเบฅเบฐเบเบฐเบซเบเบฑเบเบกเบนเบเบเปเบฒ
Webhook URL
(เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเบเบฒเบเบกเบฑเบเปเบเบเบฒเบเบซเบผเบฑเบเปเบกเบทเปเบญเบเบฑเปเบเบเปเบฒ Github Actions): - เบขเบนเปเปเบเบเปเบญเบเบเปเปเบกเบนเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบซเบเปเบฒเบเปเบเบฒเบเบงเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒ, เปเบชเปเบชเบฐเบเบฃเบดเบเปเบเบทเปเบญเปเบเบตเบเปเบเปเบเบฒเบเปเบเปเบเบฒเบ:
cd {REPOSITORY_ABSOLUTE_PATH} .ci-cd/deploy.sh {ENV} {DOCKER_REGISTRY_HOST} {DOCKER_USER} {DOCKER_PASSWORD} {TG_BOT_TOKEN} {TG_CHAT_ID}
เบเปเบญเบเบเบตเป:
{REPOSITORY_ABSOLUTE_PATH}
- เปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเปเบเบต prod เบเบญเบ backend repository เปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ;
{ENV}
- เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก (dev / prod), เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒprod
;
{DOCKER_REGISTRY_HOST}
- เปเบเบปเปเบฒเบเบฒเบเบเบญเบ docker repository เบเบญเบเบเบงเบเปเบฎเบปเบฒ
{TG_BOT_TOKEN}
- Telegram bot token;
{TG_CHAT_ID}
โ ID เบเบญเบโเบเบฒเบโเบชเบปเบโเบเบฐโเบเบฒ / เบเปเบญเบโเบเบฒเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบชเบปเปเบโเปเบเปเบโเบเบฒเบโ.เบเบปเบงเบขเปเบฒเบ script:
cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/ .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
- เปเบเบตเปเบกเบเบนเปเปเบเปเบเบฒเบเบเบฒเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบธเปเบก Docker (เบเบฑเปเบเบเบฑเปเบเปเบเบปเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบธ):
sudo usermod -aG docker helloworld_admin
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก dev เบชเปเบฒเบฅเบฑเบ backend repository เปเบฅเบฐ frontend เปเบเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบฝเบงเบเบฑเบ.
เบเบฒเบเบเบณเปเบเปเบเปเปเปเบ Github Actions
เบเปเปเบซเปเบเปเบฒเบงเปเบเบชเบนเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบงเบเบเปเบฒเบญเบดเบเบเบญเบเบเปเป CI/CD เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบ Github Actions.
backend
เบเปเปเปเบเปเบเบทเบเบญเบฐเบเบดเบเบฒเบเปเบงเปเปเบ
เปเบเปเบเปเบญเบเบเบตเปเบเบฐเบงเบดเปเบเบฒเบฐเบกเบฑเบ, เปเบซเปเบเบทเปเบกเบเปเปเบกเบนเบเปเบชเปเปเบเบเบปเบงเปเบเบฅเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบ Github. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบเบเบตเป เบเบฒเบเบเบฑเปเบเบเปเบฒ -> เบเบงเบฒเบกเบฅเบฑเบ:
DOCKER_REGISTRY
- เปเบเบปเปเบฒเบเบฒเบเบเบญเบ Docker repository เบเบญเบเบเบงเบเปเบฎเบปเบฒ (docker.helloworld.ru);DOCKER_LOGIN
- เปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ Docker repository;DOCKER_PASSWORD
- เบฅเบฐโเบซเบฑเบโเบเปเบฒเบโเบเบฑเบโเบกเบฑเบโ;DEPLOY_HOST
โ เปเบเบปเปเบฒโเบเบฒเบโเบเปเบญเบโเบเบตเปโเบเบฐโเบเบฒเบโเบเปโเบฅเบดโเบซเบฒเบ Plesk เบกเบตโเปเบซเป (เบเบปเบงโเบขเปเบฒเบโ:Helloworld.com : 8443 เบซเบผเบท123.4.56.78 :8443);DEPLOY_BACK_PROD_TOKEN
- token เบชเปเบฒเบฅเบฑเบ deployment เบเบฑเบ prod-repository เปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ (เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบกเบฑเบเบขเบนเปเปเบ Deployment เปเบ Plesk p. 4);DEPLOY_BACK_DEV_TOKEN
- token เบชเปเบฒเบฅเบฑเบ deployment เบเบฑเบ dev repository เปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เบเบฐโเบเบงเบโเบเบฒเบโเบเปเบฒโเปเบเปโเปเบกเปเบโเบเปเบฒเบโเบเบฒเบโเปเบฅเบฐโเบเบฐโเบเบญเบโเบเปเบงเบโเบชเบฒเบกโเบเบฑเปเบโเบเบญเบโเบเบปเปเบโเบเปโ:
- เบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบฐเปเบเบตเบเปเบเปเบฎเบนเบเบเบฒเบเปเบ repository เบเบญเบเบเบงเบเปเบฎเบปเบฒ;
- เปเบฅเปเบเบเบฒเบเบเบปเบเบชเบญเบเปเบเบเบฑเบเปเบเบเบญเบตเบเปเบชเปเบฎเบนเบเบเบฒเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบซเบกเป;
- เบเบณเปเบเปเบเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเบเปเบญเบเบเบฒเบเปเบเบเบเบถเปเบเบเบฑเบเบชเบฒเบเบฒ (dev/master).
frontend
เบเบฒเบโเบเบฑเปเบโเบเปเบฒโเปเบงเบฑเบโเปเบโ
เบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบปเบงเปเบเบเบเปเบฒเบ Nginx
เบเบต, เบเบงเบเปเบฎเบปเบฒเบกเบฒเบฎเบญเบเบเบตเปเบชเบธเบ. เบกเบฑเบเบเบฑเบเบเบปเบเปเบเบฑเบเบเบฝเบเปเบเปเบเบฒเบเบเปเบฒเบซเบเบปเบเบเปเบฒเบเบปเบงเปเบเบเบเบญเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฒเปเบเบปเปเบฒเปเบฅเบฐเบเบฒเบญเบญเบเปเบเบซเบฒเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบเบเปเบฒเบ Nginx. เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบงเบกเปเบญเบปเบฒเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบฅเปเบงเปเบเบเบฑเปเบเบเบญเบ 5 เบเบญเบเบเบฒเบเบเบดเบเบเบฑเปเบ Docker Registry. เบญเบฑเบเบเบฝเบงเบเบฑเบเบเบงเบเบเบทเบเปเบฎเบฑเบเบเปเบณเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบงเบเบเปเบฒเบเบซเบผเบฑเบ เปเบฅเบฐเบเปเบฒเบเปเปเบฒเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก dev เปเบฅเบฐเบเบฐเบฅเบดเบเบเบฐเบเบฑเบ.
เบเปเบญเบเบเบฐเปเบซเปเบเบฒเบเบซเบเปเบฒเบเปเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒ.
backend
frontend
เบเบงเบฒเบกเบเบฐเบเปเบฒเบเปเบเปเบเบเบตเปเบชเปเบฒเบเบฑเบ. URL เบเบฑเบเปเบปเบเบเบฐเบเบทเบเบชเบปเปเบเบเปเปเปเบเบซเบฒเบเปเบญเบเบเบฑเบเบเบธเบเปเบฒเบเปเปเบฒ, เบเบปเบเปเบงเบฑเปเบเบญเบฑเบเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ /api/
- เบเบงเบโเปเบเบปเบฒโเปเบเบปเปเบฒโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบ proxied เบเบฑเบโเบเบฒโเบเบฐโเบเบฐโเบซเบผเบฑเบ (เบชเบฐโเบเบฑเปเบโ เปเบเบเบนเปเบเบญเบเปเบเบเปเบเบตเบเปเบฒเบเบซเบฅเบฑเบ, เบเบนเปเบเบฑเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเปเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ /api/
).
เบเบปเบเปเบเปเบฎเบฑเบ
เปเบเบเบฑเบเบเบธเบเบฑเบเปเบงเบฑเบเปเบเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบงเบเบเบฐเบกเบตเบขเบนเปเปเบ helloworld.ru เปเบฅเบฐ dev.helloworld.ru (prod- เปเบฅเบฐ dev-environments, เบเบฒเบกเบฅเปเบฒเบเบฑเบ).
เปเบเบเปเบฒเบเบงเบเบเบฑเบเบซเบกเบปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฝเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเบฐเบเบฝเบกเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเบเปเบฒเบเบเบฒเบเปเบ Flask เปเบฅเบฐ Angular เปเบฅเบฐเบเบฑเปเบเบเปเปเปเบ Github Actions เปเบเบทเปเบญเบกเปเบงเบเบกเบฑเบเบญเบญเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเปเบเป Plesk.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ repositories เบเปเบงเบเบฅเบฐเบซเบฑเบ:
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com