CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ” แƒ’แƒแƒ’แƒ˜แƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒ— แƒฉแƒ”แƒ›แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒแƒก CI/CD-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ Plesk Control Panel-แƒ˜แƒกแƒ แƒ“แƒ Github Actions-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒ— แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ’แƒแƒฃแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— "Helloworld". แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ Flask Python แƒฉแƒแƒ แƒฉแƒแƒจแƒ˜, Celery แƒ›แƒฃแƒจแƒแƒ™แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ Angular 8-แƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒ—.

แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜: backend, แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜.

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒก แƒ“แƒ แƒ›แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒก. แƒ›แƒ”แƒแƒ แƒ”แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ”แƒ•แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— Plesk แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ (DB, RabbitMQ, Redis, Docker แƒ“แƒ แƒ.แƒจ.).

แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ”แƒ•แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ’แƒแƒœแƒกแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ“ dev แƒ“แƒ prod แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒฎแƒกแƒœแƒ˜แƒ— แƒกแƒแƒ˜แƒขแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

แƒ“แƒ˜แƒแƒฎ, แƒ“แƒแƒ›แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ—แƒแƒ•แƒ˜แƒก แƒ’แƒแƒชแƒœแƒแƒ‘แƒ. แƒ›แƒ” แƒ›แƒฅแƒ•แƒ˜แƒ แƒแƒšแƒ”แƒ’ แƒ‘แƒแƒ แƒ–แƒแƒ•แƒ˜, แƒ›แƒ” แƒ•แƒแƒ  แƒกแƒ แƒฃแƒšแƒ˜ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ CRM แƒ’แƒฃแƒœแƒ“แƒจแƒ˜ แƒ˜แƒžแƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Domclick-แƒจแƒ˜.

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒแƒ  แƒกแƒแƒชแƒแƒ•แƒก - backend แƒ“แƒ front - แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ™แƒแƒ“แƒก.

Backend: แƒ™แƒแƒšแƒ‘แƒ+แƒœแƒ˜แƒแƒฎแƒฃแƒ แƒ˜

แƒฃแƒ™แƒแƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒ” แƒแƒ•แƒ˜แƒฆแƒ” แƒ—แƒแƒ˜แƒ’แƒฃแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜แƒ Python-แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒจแƒ˜: Flask Framework (API-แƒกแƒ—แƒ•แƒ˜แƒก) แƒ“แƒ Celery (แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก). SQLAchemy แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช ORM. Alembic แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒกแƒแƒฎแƒ”แƒšแƒฃแƒ แƒ”แƒ‘แƒจแƒ˜ JSON แƒ•แƒแƒšแƒ˜แƒ“แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - Marshmallow.

ะ’ แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜ แƒแƒ แƒ˜แƒก Readme.md แƒคแƒแƒ˜แƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒแƒ‘แƒ˜แƒ— แƒ“แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒ—.

แƒ•แƒ”แƒ‘ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก API แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ, แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ 6 แƒ™แƒแƒšแƒ›แƒ˜แƒกแƒ’แƒแƒœ:

  • /ping - แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“;
  • แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒแƒก, แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒแƒก, แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒแƒก แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒแƒžแƒแƒ•แƒ”แƒ‘แƒแƒก;
  • แƒ”แƒšแƒคแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒฃแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒแƒก แƒœแƒ˜แƒแƒฎแƒฃแƒ แƒ˜แƒก แƒ แƒ˜แƒ’แƒจแƒ˜.

แƒœแƒ˜แƒแƒฎแƒฃแƒ แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ send_mail_task.

แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ /แƒ™แƒแƒœแƒค แƒแƒ แƒ˜แƒก แƒแƒ แƒ˜ แƒฅแƒ•แƒ”แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”:

  • docker แƒแƒ แƒ˜ Dockerfiles-แƒ˜แƒ— (base.dockerfile แƒ˜แƒจแƒ•แƒ˜แƒแƒ—แƒแƒ“ แƒชแƒ•แƒแƒšแƒ”แƒ‘แƒแƒ“แƒ˜ แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ แƒ“แƒ Dockerfile แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก);
  • .env_files - แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก.

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒจแƒ˜ แƒแƒ แƒ˜แƒก แƒแƒ—แƒฎแƒ˜ แƒ“แƒแƒ™แƒ”แƒ -แƒ™แƒแƒ›แƒžแƒแƒ–แƒ˜แƒขแƒแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜:

  • docker-compose.local.db.yml แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒแƒ›แƒแƒฆแƒšแƒ”แƒ‘แƒ;
  • docker-compose.local.workers.yml แƒ›แƒฃแƒจแƒแƒ™แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒแƒ›แƒแƒฆแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ, Redis แƒ“แƒ RabbitMQ;
  • docker-compose.test.yml แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ;
  • docker-compose.yml แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ“แƒ แƒ‘แƒแƒšแƒ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒก - .ci-cd. แƒ˜แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก shell แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

  • deploy.sh - แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ. แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” Github Actions-แƒจแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’;
  • rollback.sh - แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒ–แƒ”;
  • curl_tg.sh - แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ Telegram-แƒ–แƒ”.

แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ Angular-แƒ–แƒ”

แƒกแƒแƒชแƒแƒ•แƒ˜ แƒคแƒ แƒแƒœแƒขแƒ˜แƒ— แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ•แƒ˜แƒ“แƒ แƒ” แƒ‘แƒ”แƒ™แƒ˜แƒก. แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ” แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒกแƒแƒ›แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒกแƒ’แƒแƒœ:

  • แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜ แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒคแƒแƒ แƒ›แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒกแƒแƒกแƒ•แƒšแƒ”แƒšแƒ˜แƒก แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒ—.
  • แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜.
  • แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜.

แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜ แƒแƒกแƒ™แƒ”แƒขแƒฃแƒ แƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒซแƒ˜แƒ แƒจแƒ˜ แƒแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒ Dockerfile ะธ docker-compose.yml, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒแƒชแƒœแƒแƒ‘แƒ˜ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ” .ci-cd แƒแƒ“แƒœแƒแƒ• แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒ—, แƒ•แƒ˜แƒ“แƒ แƒ” แƒฃแƒ™แƒแƒœแƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ (แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก).

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒžแƒšแƒ”แƒกแƒ™แƒจแƒ˜

แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— Plesk-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ—.

แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ

Plesk-แƒจแƒ˜ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒ—แƒฎแƒ˜ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ:

  • Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ แƒ“แƒ แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒฃแƒ แƒแƒ“ แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ Plesk แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒš แƒžแƒแƒœแƒ”แƒšแƒจแƒ˜;
  • Git แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ;
  • Let's Encrypt แƒฃแƒคแƒแƒกแƒ TLS แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ (แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ);
  • Firewall แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ Plesk แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒžแƒแƒœแƒ”แƒšแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜:

CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ  แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก, แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒ”แƒ›แƒ แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ แƒ“แƒ แƒกแƒแƒ˜แƒขแƒ˜

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ helloworld.ru แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ˜แƒฅ dev.helloworld.ru แƒฅแƒ•แƒ”แƒ“แƒแƒ›แƒ”แƒœแƒ˜.

  1. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ helloworld.ru แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒจแƒ”แƒกแƒ•แƒšแƒ-แƒžแƒแƒ แƒแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
    แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— แƒงแƒฃแƒ—แƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒ‘แƒแƒšแƒแƒจแƒ˜ แƒ“แƒแƒ˜แƒชแƒแƒ•แƒ˜แƒ— แƒ“แƒแƒ›แƒ”แƒœแƒ˜ Let's Encrypt-แƒ˜แƒ—แƒ—แƒฃ แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— HTTPS แƒกแƒแƒ˜แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  2. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒแƒ› แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒแƒจแƒ˜ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒฅแƒ•แƒ”แƒ“แƒแƒ›แƒ”แƒœแƒ˜ dev.helloworld.ru (แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒกแƒชแƒ”แƒ— แƒฃแƒคแƒแƒกแƒ TLS แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ˜):

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ OS Debian Stretch 9.12 แƒ“แƒ แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜ แƒžแƒšแƒ”แƒกแƒ™แƒ˜ แƒแƒ‘แƒกแƒ˜แƒ“แƒ˜แƒแƒœแƒ˜ 18.0.27.

แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— แƒ“แƒ แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

  • PostgreSQL (แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒ— dev แƒ“แƒ prod แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก).
  • RabbitMQ (แƒ˜แƒ’แƒ˜แƒ•แƒ”, แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ vhost-แƒ”แƒ‘แƒ—แƒแƒœ แƒ’แƒแƒ แƒ”แƒ›แƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก).
  • แƒแƒ แƒ˜ Redis แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ (แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒฃแƒšแƒ˜ แƒ“แƒ แƒžแƒ แƒแƒ“ แƒ’แƒแƒ แƒ”แƒ›แƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก).
  • Docker Registry (แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ Docker แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก).
  • UI แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ แƒ”แƒ”แƒกแƒขแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

PostgreSQL

Plesk แƒฃแƒ™แƒ•แƒ” แƒ›แƒแƒงแƒ•แƒ”แƒ‘แƒ PostgreSQL DBMS, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ (Plesk Obsidian-แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ›แƒฎแƒแƒ แƒ˜ แƒ“แƒแƒฃแƒญแƒ˜แƒ แƒ แƒžแƒแƒกแƒขแƒ’แƒ แƒ”แƒกแƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜ 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แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ—แƒแƒ—แƒ•แƒ˜แƒก. แƒแƒฅแƒ•แƒ” แƒฃแƒœแƒ“แƒ แƒแƒฆแƒ˜แƒœแƒ˜แƒจแƒœแƒแƒก, แƒ แƒแƒ› แƒแƒกแƒ”แƒ—แƒ˜ แƒ™แƒแƒšแƒ™แƒฃแƒšแƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒฏแƒแƒ“แƒแƒกแƒœแƒฃแƒ แƒ˜ แƒขแƒงแƒ•แƒ˜แƒ แƒ“แƒ แƒ‘แƒแƒ–แƒ แƒฃแƒคแƒ แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒแƒ แƒแƒขแƒฃแƒ แƒ˜แƒก, แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒ แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“.

แƒ™แƒแƒšแƒ™แƒฃแƒšแƒแƒขแƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ•แƒชแƒ•แƒšแƒ˜แƒ— postgresql.confแƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒžแƒแƒ แƒขแƒ˜ 5432 แƒกแƒฎแƒ•แƒแƒ–แƒ” (แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ - 53983).

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— postgresql-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ—:

service postgresql restart

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ— PostgreSQL. แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ dev แƒ“แƒ prod แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ›แƒ˜แƒ•แƒชแƒ”แƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒ:

$ 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

แƒ™แƒฃแƒ แƒ“แƒฆแƒ”แƒšแƒ˜ MQ

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— 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

แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ•แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ”แƒ‘แƒ˜, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒ›แƒ˜แƒแƒœแƒ˜แƒญแƒ”แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜:

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. แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ แƒœแƒ˜แƒแƒฎแƒฃแƒ แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“.

แƒฉแƒ•แƒ”แƒœ แƒแƒ•แƒแƒ›แƒแƒฆแƒšแƒ”แƒ‘แƒ— Docker-แƒ˜แƒก แƒแƒ  แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก Redis-แƒ˜แƒ— แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒ แƒแƒ“ แƒ’แƒแƒ แƒ”แƒ›แƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Docker แƒžแƒšแƒ”แƒกแƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

  1. แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— Plesk-แƒจแƒ˜, แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜, แƒ•แƒ”แƒซแƒ”แƒ‘แƒ— Docker แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ— (แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒฃแƒคแƒแƒกแƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ):

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  2. แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒ–แƒ”, แƒ˜แƒžแƒแƒ•แƒ”แƒ— แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— redis bitnami แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  3. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒ’แƒแƒ“แƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒš แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒ“แƒ แƒ•แƒแƒ แƒ”แƒ’แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก: แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒžแƒแƒ แƒขแƒ˜, แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ RAM แƒ–แƒแƒ›แƒ, แƒžแƒแƒ แƒแƒšแƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  4. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒก 2-3 แƒžแƒ แƒแƒ“ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜ แƒ•แƒชแƒ•แƒšแƒ˜แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก: แƒžแƒแƒ แƒขแƒก, แƒžแƒแƒ แƒแƒšแƒก, RAM-แƒ˜แƒก แƒ–แƒแƒ›แƒแƒก แƒ“แƒ แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ แƒ”แƒ”แƒกแƒขแƒ แƒ˜

แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, แƒ™แƒแƒ แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ Docker แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜. แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ” แƒแƒฎแƒšแƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ˜แƒแƒคแƒ˜แƒ (แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒฃแƒคแƒ แƒ แƒ˜แƒแƒคแƒ˜แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” DockerHub แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ), แƒฎแƒแƒšแƒ แƒ™แƒ”แƒ แƒซแƒ แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก:

  • แƒžแƒแƒ แƒแƒšแƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜ Docker แƒกแƒแƒชแƒแƒ•แƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒฅแƒ•แƒ”แƒ“แƒแƒ›แƒ”แƒœแƒ–แƒ” https://docker.helloworld.ru;
  • UI แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“, แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ–แƒ” https://docker-ui.helloworld.ru.

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก:

  1. แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒ แƒ˜ แƒฅแƒ•แƒ”แƒ“แƒแƒ›แƒ”แƒœแƒ˜ Plesk-แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒแƒจแƒ˜: docker.helloworld.ru แƒ“แƒ docker-ui.helloworld.ru แƒ“แƒ แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— Let's Encrypt แƒกแƒ”แƒ แƒ—แƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก.
  2. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒคแƒแƒ˜แƒšแƒ˜ 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'
    

  3. SSH แƒฅแƒ•แƒ”แƒจ, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒฅแƒ›แƒœแƒ˜แƒ— .htpasswd แƒคแƒแƒ˜แƒšแƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Docker แƒกแƒแƒชแƒแƒ•แƒจแƒ˜:
    htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
  4. แƒจแƒ”แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— แƒ“แƒ แƒแƒฌแƒ˜แƒ”แƒ— แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜:
    docker-compose up -d
  5. แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ Nginx แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ–แƒ”. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก Plesk-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก docker.helloworld.ru แƒ“แƒ docker-ui.helloworld.ru แƒฅแƒ•แƒ”แƒ“แƒแƒ›แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜ Dev แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒ˜แƒขแƒ–แƒ” Docker Proxy-แƒ˜แƒก แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜:

CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒฌแƒ”แƒกแƒ˜ แƒžแƒ แƒแƒฅแƒกแƒ˜แƒก แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒš แƒขแƒ แƒแƒคแƒ˜แƒ™แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜:

CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  1. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒ˜แƒ“แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒ“แƒแƒœ:
    $ 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
  2. แƒ›แƒแƒ“แƒ˜แƒ— แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒแƒ— docker-ui.helloworld.ru แƒฅแƒ•แƒ”แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
    แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ— แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ—แƒ•แƒแƒšแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒ–แƒ”, แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ“แƒ แƒžแƒแƒ แƒแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ— แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ˜แƒ— (แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ):

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒฎแƒกแƒœแƒ Plesk Firewall-แƒจแƒ˜

แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒฎแƒกแƒœแƒแƒ— แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ˜แƒงแƒแƒก Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ’แƒแƒ แƒ” แƒฅแƒกแƒ”แƒšแƒ˜แƒ“แƒแƒœ.

แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒแƒ— แƒ”แƒก Plesk-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Firewall แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ“แƒ แƒ” แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ—.

  1. แฒฌแƒแƒ“แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ > แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ > Firewall:
    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  2. แฒฌแƒแƒ“แƒ˜ Plesk Firewall-แƒ˜แƒก แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ > แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒ”แƒกแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ“แƒ แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ TCP แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜ Docker แƒฅแƒ•แƒ”แƒฅแƒกแƒ”แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (172.0.0.0 / 8):
    RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
    Redis: 32785, 32786

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  3. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒฌแƒ”แƒกแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒฎแƒกแƒœแƒ˜แƒก PostgreSQL แƒžแƒแƒ แƒขแƒ”แƒ‘แƒก แƒ“แƒ RabbitMQ แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ” แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  4. แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฆแƒ˜แƒšแƒแƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

CI/CD-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ Github Actions-แƒจแƒ˜

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ–แƒ” - แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ.

แƒ”แƒก แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒแƒ แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒแƒ’แƒแƒœ:

  • แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ (backend-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก) - Github แƒ›แƒฎแƒแƒ แƒ”แƒก;
  • แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ (backend-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก) แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ - แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒžแƒšแƒ”แƒกแƒ™แƒจแƒ˜

แƒฏแƒ”แƒ  แƒ›แƒ”แƒแƒ แƒ” แƒžแƒฃแƒœแƒฅแƒขแƒก แƒจแƒ”แƒ•แƒ”แƒฎแƒแƒ— (แƒ แƒแƒ“แƒ’แƒแƒœ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ›แƒแƒกแƒ–แƒ”แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜).

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒ— แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก Plesk-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Git แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ Prod แƒ’แƒแƒ แƒ”แƒ›แƒแƒ—แƒ˜ Backend-แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

  1. แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ Helloworld แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒแƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— Git แƒฅแƒ•แƒ”แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜:

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  2. แƒฉแƒแƒ“แƒ”แƒ— แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ Github แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ•แƒ”แƒšแƒจแƒ˜ "Remote Git repository" แƒ“แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ” httpdocs แƒกแƒฎแƒ•แƒแƒก (แƒ›แƒแƒ’. /httpdocs/hw_back):

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  3. แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ— SSH แƒกแƒแƒฏแƒแƒ แƒ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ แƒฌแƒ˜แƒœแƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ˜แƒก Github แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜แƒ.
  4. แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— OK แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 2, แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ“แƒ”แƒ‘แƒ˜แƒ— Plesk-แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ”. แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒกแƒแƒชแƒแƒ•แƒ˜, แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒก แƒกแƒแƒ›แƒแƒ’แƒ˜แƒกแƒขแƒ แƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ— แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ Webhook URL (แƒ’แƒ•แƒ˜แƒแƒœ แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ Github Actions-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก):

    CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  5. แƒฌแƒ˜แƒœแƒ แƒแƒ‘แƒ–แƒแƒชแƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒจแƒ˜ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“:
    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} - แƒ’แƒ–แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” backend-แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒก prod แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒ›แƒ“แƒ”;
    {ENV} - แƒ’แƒแƒ แƒ”แƒ›แƒ (dev / prod), แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ prod;
    {DOCKER_REGISTRY_HOST} - แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜
    {TG_BOT_TOKEN} โ€” Telegram-แƒ˜แƒก แƒ‘แƒแƒขแƒ˜แƒก แƒŸแƒ”แƒขแƒแƒœแƒ˜;
    {TG_CHAT_ID} โ€” แƒฉแƒแƒขแƒ˜แƒก/แƒแƒ แƒฎแƒ˜แƒก ID แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

    แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜:

    cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/
    .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
  6. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒ“แƒแƒœ Docker แƒฏแƒ’แƒฃแƒคแƒจแƒ˜ (แƒ แƒแƒ› แƒ›แƒแƒ— แƒจแƒ”แƒซแƒšแƒแƒœ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ):
    sudo usermod -aG docker helloworld_admin

แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒ แƒกแƒแƒชแƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒ›แƒแƒ•แƒ” แƒ’แƒ–แƒ˜แƒ—.

แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜ Github Actions-แƒจแƒ˜

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— Github Actions-แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ CI/CD แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ–แƒ”.

แƒฎแƒ”แƒ แƒฎแƒ“แƒ”แƒ‘แƒ

แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ deploy.yml แƒคแƒแƒ˜แƒšแƒ˜.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒœแƒแƒ› แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ—, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒแƒ•แƒกแƒแƒ— แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ Github-แƒจแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ -> แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜:

  • DOCKER_REGISTRY - แƒฉแƒ•แƒ”แƒœแƒ˜ Docker แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜ (docker.helloworld.ru);
  • DOCKER_LOGIN - แƒจแƒ”แƒ“แƒ˜แƒ— Docker แƒกแƒแƒชแƒแƒ•แƒจแƒ˜;
  • DOCKER_PASSWORD - แƒžแƒแƒ แƒแƒšแƒ˜ แƒ›แƒแƒกแƒ–แƒ”;
  • DEPLOY_HOST - แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜, แƒกแƒแƒ“แƒแƒช แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ Plesk แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒžแƒแƒœแƒ”แƒšแƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜: helloworld.com: 8443 แƒแƒœ 123.4.56.78:8443);
  • DEPLOY_BACK_PROD_TOKEN - แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” prod-repository-แƒจแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒœแƒ˜แƒจแƒแƒœแƒ˜ (แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— Deployment in Plesk แƒ’แƒ•. 4);
  • DEPLOY_BACK_DEV_TOKEN - แƒŸแƒ”แƒขแƒแƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ แƒ“แƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒกแƒแƒ›แƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ”แƒขแƒแƒžแƒ˜แƒกแƒ’แƒแƒœ:

  • แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜;
  • แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒแƒฎแƒšแƒแƒ“ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜;
  • แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— (dev/master).

Frontend

deploy.yml แƒคแƒแƒ˜แƒšแƒ˜ แƒฌแƒ˜แƒœแƒ แƒกแƒแƒชแƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒชแƒแƒขแƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒ”แƒฅแƒแƒกแƒ’แƒแƒœ. แƒ›แƒแƒก แƒแƒ™แƒšแƒ˜แƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒชแƒ•แƒšแƒ˜แƒก แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒฌแƒ˜แƒœแƒ แƒกแƒแƒชแƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒชแƒแƒšแƒ™แƒ” แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒžแƒ แƒแƒฅแƒกแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜ Nginx-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—

แƒแƒ‘แƒ, แƒฉแƒ•แƒ”แƒœ แƒ‘แƒแƒšแƒแƒ›แƒ“แƒ” แƒ›แƒ˜แƒ•แƒ”แƒ“แƒ˜แƒ—. แƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒจแƒ”แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒžแƒ แƒแƒฅแƒกแƒ˜แƒ˜แƒœแƒ’แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ Nginx-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ•แƒแƒจแƒฃแƒฅแƒ”แƒ— แƒ”แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ Docker Registry-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”-5 แƒ”แƒขแƒแƒžแƒ–แƒ”. แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ“แƒ”แƒก แƒฃแƒ™แƒแƒœแƒ แƒ“แƒ แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก dev แƒ“แƒ prod แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜.

แƒ›แƒ” แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒก.

แƒฎแƒ”แƒ แƒฎแƒ“แƒ”แƒ‘แƒ

CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

Frontend

CI/CD Github Actions-แƒจแƒ˜ Flask+Angular แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒ—แƒฅแƒ•แƒ”แƒœ แƒฎแƒแƒ แƒ— แƒฃแƒขแƒแƒฉแƒœแƒ”แƒ”แƒœแƒ˜. แƒงแƒ•แƒ”แƒšแƒ URL แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒžแƒ แƒแƒฅแƒกแƒ˜แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ–แƒ”, แƒ’แƒแƒ แƒ“แƒ แƒ˜แƒ› แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜แƒกแƒ /api/ - แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ˜แƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜แƒแƒœ แƒฃแƒ™แƒแƒœแƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ–แƒ” (แƒแƒจ แƒฃแƒ™แƒแƒœแƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒแƒก /api/).

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ˜แƒขแƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก helloworld.ru-แƒ–แƒ” แƒ“แƒ dev.helloworld.ru-แƒ–แƒ” (แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, prod- แƒ“แƒ dev-environments).

แƒกแƒแƒ”แƒ แƒ—แƒ แƒฏแƒแƒ›แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ— แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ•แƒแƒ›แƒ–แƒแƒ“แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ Flask-แƒจแƒ˜ แƒ“แƒ Angular-แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜ Github Actions-แƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Plesk-แƒจแƒ˜.

แƒ›แƒ” แƒ’แƒแƒ•แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘ แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒก แƒ™แƒแƒ“แƒ˜แƒ—: backend, แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ