
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเปเบญเบเบเบฐเปเบเปเบเบเบฑเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเปเบญเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ 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.
ะ เบกเบตเปเบเบฅเป Readme.md เบเบตเปเบกเบตเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฝเบงเบเบฑเบเปเบเบเบชเปเบฒเบเปเบฅเบฐเบเปเบฒเปเบเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเบตเบเปเบเบเบเบฒเบ.
เบเปเบญเบเบเปเบฒเบเบเปเปเบชเบฑเบเบชเบปเบ, เบเบฐเบเบญเบเบเปเบงเบ 6 pens:
/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เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเปโ.
เปเบฅเบฐเปเบเบเปเบเบตเบชเบธเบเบเปเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบปเบเปเบ - . เบกเบฑเบเบกเบต Shell scripts เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบ:
deploy.shโ เบเบฒเบโเปเบเบตเบโเบเบปเบงโเบเบฒเบโเปเบเบทเปเบญเบโเบเปเบฒเบโเปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโ. เบเปเบฒเปเบเบตเบเบเบฒเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเปเบเปเบ Github Actions;rollback.sh- rollback เบเบญเบเบเบฑเบเบเบธเบเบฑเบเบชเบฐเบเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบญเบเบชเบฐเบเบฒเปเบซเปเบ;curl_tg.sh- เบชเบปเปเบโเบเบฒเบโเปเบเปเบโเบเบฒเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบฑเบ Telegramโ.
Frontend เบชเบธเบ Angular
เบเปเบฒเบเบเบงเปเบฒ Beck's เบซเบผเบฒเบ. เบเบฒเบโเบซเบเปเบฒโเบเบฐโเบเบญเบโเบเปเบงเบโเบชเบฒเบกโเบซเบเปเบฒโ:
- เบซเบเปเบฒเบซเบผเบฑเบเบเบตเปเบกเบตเปเบเบเบเบญเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบปเปเบเบญเบตเปเบกเบงเปเบฅเบฐเบเบธเปเบกเบญเบญเบ.
- เปเปเบฒเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ.
- เบซเบเปเบฒเบฅเบปเบเบเบฐเบเบฝเบ.
เปเปเบฒเบซเบผเบฑเบเปเบเบดเปเบเบงเปเบฒ:

เบกเบตเบชเบญเบเปเบเบฅเปเบขเบนเปเปเบเบฎเบฒเบ 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 เบเบทเบ 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 เบฎเบธเปเบ 8.4โ10.8). เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบชเบฐเบเบฑเบเบซเบฅเปเบฒเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ (12.3 เปเบเปเบงเบฅเบฒเบเบฝเบเบเบตเป), เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบเบฑเปเบเบกเบฑเบเบเปเบงเบเบเบปเบเปเบญเบ.
เบเบณเปเบเบฐเบเบณเบฅเบฐเบญเบฝเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบ 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 เบเปเบญเบเบเบฑเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเปเบเปเบกเบเบเปเบญเบ ;
- UI เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบดเปเบเบฎเบนเบเบเบฒเบเปเบ repository, เบกเบตเบขเบนเปเปเบ .
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป:
- เปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบชเบญเบเปเบเปเบกเบเบเปเบญเบเปเบ 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 เบกเบตโเปเบซเป (เบเบปเบงโเบขเปเบฒเบโ: : 8443 เบซเบผเบท :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
เปเบเบเบเปเบฒเบเบเบฒเบ Beck เปเบฅเบฑเบเบเปเบญเบ. เบกเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบตเปเบกเบตเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเปเบเปเบฅเบฐเบเปเบฝเบเบเบทเปเบเบญเบ tokens เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเป. เบเบงเบฒเบกเบฅเบฑเบเบชเปเบฒเบฅเบฑเบ repository เบเปเบฒเบเบซเบเปเบฒ, เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบทเปเบกเบเปเปเบกเบนเบเปเบชเปเปเบเบเบเปเบฒเบเบซเบฒเบ.
เบเบฒเบโเบเบฑเปเบโเบเปเบฒโเปเบงเบฑเบโเปเบโ
เบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบปเบงเปเบเบเบเปเบฒเบ 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
