рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
рдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА Plesk рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рдЖрдгрд┐ Github рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд░реВрди CI/CD рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рдЭрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реЗрди. рдЖрдЬ рдЖрдкрдг "рд╣реЕрд▓реЛрд╡рд░реНрд▓реНрдб" рдирд╛рд╡рд╛рдЪрд╛ рдПрдХ рд╕рд╛рдзрд╛ рдкреНрд░рдХрд▓реНрдк рдХрд╕рд╛ рд▓рд╛рд╡рд╛рдпрдЪрд╛ рддреЗ рд╢рд┐рдХреВ. рд╣реЗ рдлреНрд▓рд╛рд╕реНрдХ рдкрд╛рдпрдерди рдлреНрд░реЗрдорд╡рд░реНрдХрдордзреНрдпреЗ рд╕реЗрд▓реЗрд░реА рдХрд╛рдордЧрд╛рд░ рдЖрдгрд┐ рдЕрдБрдЧреБрд▓рд░ 8 рдлреНрд░рдВрдЯрдПрдВрдбрд╕рд╣ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗ.

рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдЪреЗ рджреБрд╡реЗ: рдмреЕрдХрдПрдВрдб, рдЕрдЧреНрд░рднрд╛рдЧ.

рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рднрд╛рдЧрд╛рдд, рдЖрдореНрд╣реА рдЖрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рднрд╛рдЧ рдкрд╛рд╣реВ. рджреБрд╕рд▒реНрдпрд╛рдордзреНрдпреЗ, рдЖрдореНрд╣реА Plesk рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрдгрд┐ рдШрдЯрдХ (DB, RabbitMQ, Redis, Docker, рдЗ.) рдХрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рд╡реЗ рддреЗ рд╢реЛрдзреВ.

рддрд┐рд╕рд░реНтАНрдпрд╛ рднрд╛рдЧрд╛рдд, рдбреЗрд╡реНрд╣ рдЖрдгрд┐ рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЖрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╢реА рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреА рддреЗ рдЖрдореНрд╣реА рд╢реЗрд╡рдЯреА рд╢реЛрдзреВ. рдЖрдгрд┐ рдордЧ рдЖрдореНрд╣реА рд╕рд╛рдЗрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реВ.

рдЖрдгрд┐ рд╣реЛ, рдореА рдорд╛рдЭрд╛ рдкрд░рд┐рдЪрдп рджреНрдпрд╛рдпрд▓рд╛ рд╡рд┐рд╕рд░рд▓реЛ. рдорд╛рдЭреЗ рдирд╛рд╡ рдУрд▓реЗрдЧ рдмреЛрд░реНрдЭреЛрд╡реНрд╣ рдЖрд╣реЗ, рдореА Domclick рдордзреАрд▓ рддрд╛рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рдВрд╕рд╛рдареА CRM рдЯреАрдордордзреНрдпреЗ рдлреБрд▓рд╕реНрдЯреЕрдХ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЖрд╣реЗ.

рдкреНрд░рдХрд▓реНрдк рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди

рдкреНрд░рдердо, рджреЛрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЬ - рдмреЕрдХрдПрдВрдб рдЖрдгрд┐ рдлреНрд░рдВрдЯ - рдкрд╛рд╣реВ рдЖрдгрд┐ рдХреЛрдбрд╡рд░ рдЬрд╛рдК.

рдмреЕрдХрдПрдВрдб: рдлреНрд▓рд╛рд╕реНрдХ+рд╕реЗрд▓реЗрд░реА

рдорд╛рдЧрдЪреНрдпрд╛ рднрд╛рдЧрд╛рд╕рд╛рдареА, рдореА рдкрд╛рдпрдерди рдбреЗрд╡реНрд╣рд▓рдкрд░рдордзреНрдпреЗ рдЦреВрдк рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрд╕рд▓реЗрд▓рд╛ рдПрдХ рд╕рдореВрд╣ рдШреЗрддрд▓рд╛: рдлреНрд▓рд╛рд╕реНрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдПрдкреАрдЖрдпрд╕рд╛рдареА) рдЖрдгрд┐ рд╕реЗрд▓реЗрд░реА (рдЯрд╛рд╕реНрдХ рдХреНрдпреВрд╕рд╛рдареА). SQLAchemy ORM рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рдЕрд▓реЗрдореНрдмрд┐рдХрдЪрд╛ рд╡рд╛рдкрд░ рд╕реНрдерд▓рд╛рдВрддрд░рд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣рдБрдбрд▓реНрд╕рдордзреАрд▓ JSON рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рд╕рд╛рдареА - Marshmallow.

╨Т рднрд╛рдВрдбрд╛рд░ рдкреНрд░рдХрд▓реНрдк рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрд░рдЪрдиреЗрдЪреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрди рдЖрдгрд┐ рд╕реВрдЪрдирд╛ рдЕрд╕рд▓реЗрд▓реА Readme.md рдлрд╛рдЗрд▓ рдЖрд╣реЗ.

рд╡реЗрдм рднрд╛рдЧ API рдЕрдЧрджреА рд╕реЛрдкреЗ, 6 рдкреЗрди рдЕрд╕рддрд╛рдд:

  • /ping - рдЙрдкрд▓рдмреНрдзрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА;
  • рдиреЛрдВрджрдгреА, рдЕрдзрд┐рдХреГрддрддрд╛, рдбреА-рдСрдереЛрд░рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдЕрдзрд┐рдХреГрдд рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╛рддрд╛рд│рддреЗ;
  • рдПрдХ рдИрдореЗрд▓ рд╣рдБрдбрд▓ рдЬреЗ рд╕реЗрд▓реЗрд░реА рд░рд╛рдВрдЧреЗрдд рдХрд╛рд░реНрдп рдареЗрд╡рддреЗ.

рднрд╛рдЬреА рдХрд┐рдВрд╡рд╛ рдХреЛрд╢рд┐рдВрдмреАрд░ рдмрдирд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдЕрд╢реА рдПрдХ рд╡рдирд╕реНрдкрддреА рднрд╛рдЧ рдЕрдЧрджреА рд╕реЛрдкреЗ, рдлрдХреНрдд рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ send_mail_task.

рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ /conf рджреЛрди рд╕рдмрдлреЛрд▓реНрдбрд░ рдЖрд╣реЗрдд:

  • docker рджреЛрди рдбреЙрдХрд░рдлрд╛рдИрд▓реНрд╕рд╕рд╣ (base.dockerfile рдХреНрд╡рдЪрд┐рддрдЪ рдмрджрд▓рдгрд╛рд░реА рдЖрдзрд╛рд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ Dockerfile рдореБрдЦреНрдп рд╕рдВрдореЗрд▓рдирд╛рдВрд╕рд╛рдареА);
  • .env_files - рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓рд╛рдВрд╕рд╣ рдлрд╛рдЗрд▓реНрд╕рд╕рд╣.

рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдореБрд│рд╛рд╢реА рдЪрд╛рд░ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рдлрд╛рдЗрд▓реНрд╕ рдЖрд╣реЗрдд:

  • docker-compose.local.db.yml рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╕реНрдерд╛рдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ;
  • docker-compose.local.workers.yml рдХрд╛рдордЧрд╛рд░, рдбреЗрдЯрд╛рдмреЗрд╕, рд░реЗрдбрд┐рд╕ рдЖрдгрд┐ рд░реЕрдмрд┐рдЯрдПрдордХреНрдпреВрдЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рд╡рд╛рдвреАрд╕рд╛рдареА;
  • docker-compose.test.yml рддреИрдирд╛рддреА рджрд░рдореНрдпрд╛рди рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА;
  • docker-compose.yml рддреИрдирд╛рддреАрд╕рд╛рдареА.

рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реЗ рд╢реЗрд╡рдЯрдЪреЗ рдлреЛрд▓реНрдбрд░ - .ci-cd. рддреНрдпрд╛рдд рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╣реЗрдд:

  • deploy.sh - рд╕реНрдерд▓рд╛рдВрддрд░ рдЖрдгрд┐ рддреИрдирд╛рддреА рд▓рд╛рдБрдЪ. Github рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ рдЪрд╛рдЪрдгреНрдпрд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рдЪрд╛рд▓рд╡рд┐рд▓реНрдпрд╛рдирдВрддрд░ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЪрд╛рд▓рддреЗ;
  • rollback.sh - рдЕрд╕реЗрдВрдмреНрд▓реАрдЪреНрдпрд╛ рдорд╛рдЧреАрд▓ рдЖрд╡реГрддреНрддреАрд╡рд░ рдХрдВрдЯреЗрдирд░рдЪрд╛ рд░реЛрд▓рдмреЕрдХ;
  • curl_tg.sh - рдЯреЗрд▓реАрдЧреНрд░рд╛рдорд╡рд░ рдЙрдкрдпреЛрдЬрди рд╕реВрдЪрдирд╛ рдкрд╛рдард╡рдд рдЖрд╣реЗ.

рдХреЛрдиреАрдп рд╡рд░ рдлреНрд░рдВрдЯрдПрдВрдб

рд╕рдореЛрд░ рд╕рд╣ рднрд╛рдВрдбрд╛рд░ рдмреЗрдХ рдкреЗрдХреНрд╖рд╛ рдЦреВрдк рд╕реЛрдкреЗ. рд╕рдореЛрд░ рддреАрди рдкреГрд╖реНрдареЗ рдЖрд╣реЗрдд:

  • рдИрдореЗрд▓ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рдлреЙрд░реНрдо рдЖрдгрд┐ рдПрдХреНрдЭрд┐рдЯ рдмрдЯрдг рдЕрд╕рд▓реЗрд▓реЗ рдореБрдЦреНрдп рдкреГрд╖реНрда.
  • рд▓реЙрдЧрд┐рди рдкреГрд╖реНрда.
  • рдиреЛрдВрджрдгреА рдкреГрд╖реНрда.

рдореБрдЦреНрдп рдкреГрд╖реНрда рддрдкрд╕реНрд╡реА рджрд┐рд╕рддреЗ:

рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
рд░реВрдЯрд╡рд░ рджреЛрди рдлрд╛рдЗрд▓реНрд╕ рдЖрд╣реЗрдд Dockerfile ╨╕ docker-compose.yml, рддрд╕реЗрдЪ рдкрд░рд┐рдЪрд┐рдд рдлреЛрд▓реНрдбрд░ .ci-cd рдорд╛рдЧреАрд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдкреЗрдХреНрд╖рд╛ рдХрд┐рдВрдЪрд┐рдд рдХрдореА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рд╕рд╣ (рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдврд▓реНрдпрд╛).

Plesk рдордзреНрдпреЗ рдПрдХ рдкреНрд░рдХрд▓реНрдк рд╕реБрд░реВ рдХрд░рдд рдЖрд╣реЗ

рдЪрд▓рд╛ Plesk рд╕реЗрдЯ рдХрд░реВрди рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рд╕рд╛рдЗрдЯрд╕рд╛рдареА рд╕рджрд╕реНрдпрддрд╛ рддрдпрд╛рд░ рдХрд░реВрди рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрдпрд╛.

рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ

Plesk рдордзреНрдпреЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдЪрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:

  • Docker Plesk рдкреНрд░рд╢рд╛рд╕рди рдкреЕрдиреЗрд▓рдордзреАрд▓ рдХрдВрдЯреЗрдирд░рдЪреА рд╕реНрдерд┐рддреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рджреГрд╢реНрдпрдорд╛рдирдкрдгреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА;
  • Git рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЙрдкрдпреЛрдЬрди рдЪрд░рдг рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА;
  • Let's Encrypt рдореЛрдлрдд TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди (рдЖрдгрд┐ рд╕реНрд╡рдпрдВ-рдиреВрддрдиреАрдХрд░рдг) рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА;
  • Firewall рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рд░рд╣рджрд╛рд░реАрдЪреЗ рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

рдЖрдкрдг рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ Plesk рдкреНрд░рд╢рд╛рд╕рдХ рдкреЕрдиреЗрд▓рджреНрд╡рд╛рд░реЗ рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛:

рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
рдЖрдореНрд╣реА рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╛рдареА рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгрд╛рд░ рдирд╛рд╣реА, рдбреАрдлреЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЖрдордЪреНрдпрд╛ рдбреЗрдореЛ рдЙрджреНрджреЗрд╢рд╛рдВрд╕рд╛рдареА рдХрд░рддреАрд▓.

рд╕рджрд╕реНрдпрддрд╛ рдЖрдгрд┐ рд╕рд╛рдЗрдЯ рддрдпрд╛рд░ рдХрд░рд╛

рдкреБрдвреЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ helloworld.ru рд╡реЗрдмрд╕рд╛рдЗрдЯрд╕рд╛рдареА рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рди рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рддреЗрдереЗ dev.helloworld.ru рд╕рдмрдбреЛрдореЗрди рдЬреЛрдбрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

  1. helloworld.ru рдбреЛрдореЗрдирд╕рд╛рдареА рд╕рджрд╕реНрдпрддрд╛ рддрдпрд╛рд░ рдХрд░рд╛ рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рд▓реЙрдЧрд┐рди-рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
    рдкреГрд╖реНрдард╛рдЪреНрдпрд╛ рддрд│рд╛рд╢реА рдЕрд╕рд▓реЗрд▓рд╛ рдмреЙрдХреНрд╕ рддрдкрд╛рд╕рд╛ Let's Encrypt рд╕рд╣ рдбреЛрдореЗрди рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рд╛рдЖрдореНрд╣реА рд╕рд╛рдЗрдЯрд╕рд╛рдареА HTTPS рд╕реЗрдЯ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  2. рдкреБрдвреЗ, рдпрд╛ рд╕рджрд╕реНрдпрддреНрд╡рд╛рдордзреНрдпреЗ, рдПрдХ рд╕рдмрдбреЛрдореЗрди dev.helloworld.ru рддрдпрд╛рд░ рдХрд░рд╛ (рдЬреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╡рд┐рдирд╛рдореВрд▓реНрдп TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреЗрдЦреАрд▓ рдЬрд╛рд░реА рдХрд░реВ рд╢рдХрддрд╛):

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

рд╕рд░реНрд╡реНрд╣рд░ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ

рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХ рд╕рд░реНрд╡реНрд╣рд░ рдЖрд╣реЗ OS рдбреЗрдмрд┐рдпрди рд╕реНрдЯреНрд░реЗрдЪ 9.12 рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рдкреНрд▓реЗрд╕реНрдХ рдСрдмреНрд╕рд┐рдбрд┐рдпрди 18.0.27.

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд╕рд╛рдареА рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:

  • PostgreSQL (рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, dev рдЖрдгрд┐ prod рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рджреЛрди рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдПрдХ рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕реЗрд▓).
  • RabbitMQ (рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рднрд┐рдиреНрди рд╡реНрд╣реЙрд╕реНрдЯрд╕рд╣ рд╕рдорд╛рди, рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг).
  • рджреЛрди Redis рдЙрджрд╛рд╣рд░рдгреЗ (dev рдЖрдгрд┐ prod рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА).
  • рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА (рдмрд┐рд▓реНрдЯ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛рдВрдЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА).
  • рдбреЙрдХрд░ рдиреЛрдВрджрдгреАрд╕рд╛рдареА UI.

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

Plesk рдЖрдзреАрдЪ PostgreSQL DBMS рд╕рд╣ рдпреЗрддреЛ, рдкрд░рдВрддреБ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА рдирд╛рд╣реА (Plesk Obsidian рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рд╕рдорд░реНрдерд┐рдд рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдЖрд╡реГрддреНрддреНрдпрд╛ 8.4тАУ10.8). рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА рд╣рд╡реА рдЖрд╣реЗ (рдпрд╛ рд▓реЗрдЦрдирд╛рдЪреНрдпрд╛ рд╡реЗрд│реА 12.3), рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рддреЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ.

рдиреЗрдЯрд╡рд░ рдбреЗрдмрд┐рдпрдирд╡рд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд░реНтАНрдпрд╛рдЪ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕реВрдЪрдирд╛ рдЖрд╣реЗрдд (рдЙрджрд╛рд╣рд░рдг), рдореНрд╣рдгреВрди рдореА рддреНрдпрд╛рдВрдЪреЗ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдореА рдлрдХреНрдд рдЖрдЬреНрдЮрд╛ рджреЗрдИрди:

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-server рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рд╛:

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 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдХрдбреЗ рд╡рд│реВрдпрд╛. рдбреЗрдмрд┐рдпрдирд╡рд░ рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЕрдЧрджреА рд╕реЛрдкреЗ рдЖрд╣реЗ:

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

рдЖрддрд╛ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рд╢реЗрд╡рдЯрдЪрд╛ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ - рд░реЗрдбрд┐рд╕. рд╕реЗрд▓реЗрд░реА рдХрд╛рд░реНрдпрд╛рдВрдЪреЗ рдкрд░рд┐рдгрд╛рдо рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдмреЕрдХрдПрдВрдб рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдИрд▓.

рдЖрдореНрд╣реА рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдкрд░реВрди dev рдЖрдгрд┐ prod рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА Redis рд╕рд╣ рджреЛрди рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд╡рд╛рдврд╡реВ Docker Plesk рд╕рд╛рдареА.

  1. рдЖрдореНрд╣реА Plesk рд╡рд░ рдЬрд╛рддреЛ, рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рднрд╛рдЧрд╛рдд рдЬрд╛, рдбреЙрдХрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╢реЛрдзрд╛ рдЖрдгрд┐ рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ (рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЖрд╡реГрддреНрддреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ):

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  2. рд╕реНрдерд╛рдкрд┐рдд рд╡рд┐рд╕реНрддрд╛рд░рд╛рд╡рд░ рдЬрд╛, рд╢реЛрдзрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рддрд┐рдорд╛ рд╢реЛрдзрд╛ redis bitnami рдЖрдгрд┐ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  3. рдЖрдореНрд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЬрд╛рддреЛ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЛ: рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛, рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рд╡рд╛рдЯрдк рдХреЗрд▓реЗрд▓рд╛ RAM рдЖрдХрд╛рд░, рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреАрд▓ рдкрд╛рд╕рд╡рд░реНрдб рдЖрдгрд┐ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд░рд╛:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  4. рдЖрдореНрд╣реА рдкреНрд░реЛрдб рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдЪрд░рдг 2-3 рдХрд░рддреЛ, рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ рдЖрдореНрд╣реА рдлрдХреНрдд рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдмрджрд▓рддреЛ: рдкреЛрд░реНрдЯ, рдкрд╛рд╕рд╡рд░реНрдб, рд░реЕрдо рдЖрдХрд╛рд░ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдлреЛрд▓реНрдбрд░рдЪрд╛ рдорд╛рд░реНрдЧ:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА

рдореВрд▓рднреВрдд рд╕реЗрд╡рд╛рдВрд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рддреБрдордЪреА рд╕реНрд╡рддрдГрдЪреА рдбреЙрдХрд░ рдЗрдореЗрдЬ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реА рдареЗрд╡рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рд╣реЛрдИрд▓. рд╕реБрджреИрд╡рд╛рдиреЗ, рд╕рд░реНрд╡реНрд╣рд░ рдЬрд╛рдЧрд╛ рдЖрддрд╛ рдЦреВрдкрдЪ рд╕реНрд╡рд╕реНрдд рдЖрд╣реЗ (рдбреЙрдХрд░рд╣рдм рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рдирдкреЗрдХреНрд╖рд╛ рдирдХреНрдХреАрдЪ рд╕реНрд╡рд╕реНрдд), рдЖрдгрд┐ рдЦрд╛рдЬрдЧреА рднрд╛рдВрдбрд╛рд░ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЦреВрдк рд╕реЛрдкреА рдЖрд╣реЗ.

рдЖрдореНрд╣рд╛рд▓рд╛ рд╣рд╡реЗ рдЖрд╣реЗ:

  • рдкрд╛рд╕рд╡рд░реНрдб-рд╕рдВрд░рдХреНрд╖рд┐рдд рдбреЙрдХрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╕рдмрдбреЛрдореЗрдирд╡рд░ рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЖрд╣реЗ https://docker.helloworld.ru;
  • рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА UI, рдпреЗрдереЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ https://docker-ui.helloworld.ru.

рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареАрдГ

  1. рдЪрд▓рд╛ рдЖрдордЪреНрдпрд╛ рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рдирдордзреНрдпреЗ Plesk рдордзреНрдпреЗ рджреЛрди рд╕рдмрдбреЛрдореЗрди рддрдпрд╛рд░ рдХрд░реВ: docker.helloworld.ru рдЖрдгрд┐ docker-ui.helloworld.ru, рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рд▓реЗрдЯреНрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ.
  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 рдлрд╛рдЗрд▓ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░реВ:
    htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
  4. рдХрдВрдЯреЗрдирд░ рдЧреЛрд│рд╛ рдХрд░рд╛ рдЖрдгрд┐ рдЙрдЪрд▓рд╛:
    docker-compose up -d
  5. рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рд╡рд░ Nginx рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ Plesk рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

docker.helloworld.ru рдЖрдгрд┐ docker-ui.helloworld.ru рд╕рдмрдбреЛрдореЗрдирд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ рдкрд╛рдпрд▒реНрдпрд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

рд╡рд┐рднрд╛рдЧ рджреЗрд╡ рд╕рд╛рдзрдиреЗ рдЖрдордЪреНрдпрд╛ рд╕рд╛рдЗрдЯрд╡рд░ рдЬрд╛ рдбреЙрдХрд░ рдкреНрд░реЙрдХреНрд╕реА рдирд┐рдпрдо:

рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдЗрдирдХрдорд┐рдВрдЧ рдЯреНрд░реЕрдлрд┐рдХрдордзреНрдпреЗ рдПрдХ рдирд┐рдпрдо рдЬреЛрдбрд╛:

рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  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 рд╕рдмрдбреЛрдореЗрдирдЪреЗ рдСрдкрд░реЗрд╢рди рджреЗрдЦреАрд▓ рддрдкрд╛рд╕реВрдпрд╛:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
    рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдмреНрд░рд╛рдЙрдЭ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬ рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛, рддреЗрд╡реНрд╣рд╛ рдмреНрд░рд╛рдЙрдЭрд░ рдПрдХ рдЕрдзрд┐рдХреГрддрддрд╛ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓ рдЬрд┐рдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╕рд╛рдареА рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡ рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓. рддреНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдЪреНрдпрд╛ рд╕реВрдЪреАрд╕рд╣ рдПрдХрд╛ рдкреГрд╖реНрдард╛рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ (рдЖрддрд╛ рддреЗ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рд░рд┐рдХреНрдд рдЕрд╕реЗрд▓):

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

Plesk рдлрд╛рдпрд░рд╡реЙрд▓ рдордзреНрдпреЗ рдкреЛрд░реНрдЯ рдЙрдШрдбрдгреЗ

рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреЛрд░реНрдЯ рдЙрдШрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдШрдЯрдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рдмрд╛рд╣реНрдп рдиреЗрдЯрд╡рд░реНрдХрдордзреВрди рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЕрд╕рддреАрд▓.

рдЖрдореНрд╣реА рдЖрдзреА рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ Plesk рд╕рд╛рдареА рдлрд╛рдпрд░рд╡реЙрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдкрд░реВрди рд╣реЗ рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рддреЗ рдкрд╛рд╣реВ.

  1. рдЬрд╛ рд╕рд╛рдзрдиреЗ рдЖрдгрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ > рд╕реЗрдЯрд┐рдВрдЧреНрдЬ > рдлрд╛рдпрд░рд╡реЙрд▓:
    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
  2. рдЬрд╛ Plesk рдлрд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдо рд╕реБрдзрд╛рд░рд┐рдд рдХрд░рд╛ > рд╕рд╛рдиреБрдХреВрд▓ рдирд┐рдпрдо рдЬреЛрдбрд╛ рдЖрдгрд┐ рдбреЙрдХрд░ рд╕рдмрдиреЗрдЯрд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ TCP рдкреЛрд░реНрдЯ рдЙрдШрдбрд╛ (172.0.0.0 / 8):
    RabbitMQ: резреореорей, рекрейремреп, релремренрез-релремренреи, реирелремренреи, ремрезремрезрей-ремрезремрезрек
    рд░реЗрдбрд┐рд╕: рейреиренреорел, рейреиренреорем

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  3. рдЖрдореНрд╣реА рдПрдХ рдирд┐рдпрдо рджреЗрдЦреАрд▓ рдЬреЛрдбреВ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдкреЛрд░реНрдЯ рдЖрдгрд┐ рд░реЕрдмрд┐рдЯрдПрдордХреНрдпреВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреЕрдиреЗрд▓ рдмрд╛рд╣реЗрд░реАрд▓ рдЬрдЧрд╛рд╕рд╛рдареА рдЙрдШрдбреЗрд▓:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  4. рдмрджрд▓ рд▓рд╛рдЧреВ рдХрд░рд╛ рдмрдЯрдг рд╡рд╛рдкрд░реВрди рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░рд╛:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

Github рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ CI/CD рд╕реЗрдЯ рдХрд░рдгреЗ

рдЪрд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рднрд╛рдЧрд╛рдХрдбреЗ рдЬрд╛рдК рдпрд╛ - рд╕рддрдд рдПрдХреАрдХрд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рдЖрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреЗ.

рдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рджреЛрди рднрд╛рдЧ рдЕрд╕рддреАрд▓:

  • рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рдгреЗ (рдмреЕрдХрдПрдВрдбрд╕рд╛рдареА) - рдЧрд┐рдердм рдмрд╛рдЬреВрд▓рд╛;
  • рдорд╛рдпрдЧреНрд░реЗрд╢рди рдЪрд╛рд▓рд╡рдгреЗ (рдмреЕрдХрдПрдВрдбрд╕рд╛рдареА) рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рддреИрдирд╛рдд рдХрд░рдгреЗ - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░.

Plesk рд╡рд░ рддреИрдирд╛рдд

рдЪрд▓рд╛ рдкреНрд░рдердо рджреБрд╕рд░рд╛ рдореБрджреНрджрд╛ рд╣рд╛рддрд╛рд│реВрдпрд╛ (рдХрд╛рд░рдг рдкрд╣рд┐рд▓рд╛ рдореБрджреНрджрд╛ рддреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ).

рдЖрдореНрд╣реА Plesk рд╕рд╛рдареА Git рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдкрд░реВрди рдЙрдкрдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ.

рдмреЕрдХрдПрдВрдб рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╕рд╛рдареА рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╣ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреНрдпрд╛.

  1. рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ Helloworld рд╡реЗрдмрд╕рд╛рдЗрдЯрдЪреНрдпрд╛ рд╕рджрд╕реНрдпрддреНрд╡рд╛рд╡рд░ рдЬрд╛рддреЛ рдЖрдгрд┐ Git рдЙрдкрд╡рд┐рднрд╛рдЧрд╛рд╡рд░ рдЬрд╛рддреЛ:

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  2. "рд░рд┐рдореЛрдЯ рдЧрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА" рдлреАрд▓реНрдбрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛ рдЧрд┐рдердм рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдПрдХ рд▓рд┐рдВрдХ рдШрд╛рд▓рд╛ рдЖрдгрд┐ рдбреАрдлреЙрд▓реНрдЯ рдлреЛрд▓реНрдбрд░ рдмрджрд▓рд╛ httpdocs рджреБрд╕рд▒реНрдпрд╛рд▓рд╛ (рдЙрджрд╛. /httpdocs/hw_back):

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  3. рдорд╛рдЧреАрд▓ рдкрд╛рдпрд░реАрд╡рд░реВрди SSH рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреА рдХреЙрдкреА рдХрд░рд╛ рдЖрдгрд┐ рдЬреЛрдбрд╛ рддреЗ рдЧрд┐рдердм рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ рдЖрд╣реЗ.
  4. рдЪрд░рдг 2 рдордзреНрдпреЗ рд╕реНрдХреНрд░реАрдирд╡рд░ рдУрдХреЗ рдХреНрд▓рд┐рдХ рдХрд░рд╛, рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ Plesk рдордзреАрд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдкреГрд╖реНрдард╛рд╡рд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓. рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдорд╛рд╕реНрдЯрд░ рдмреНрд░рдБрдЪрд▓рд╛ рдХрдорд┐рдЯрд╡рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд░ рдЬрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЖрдгрд┐ рдореВрд▓реНрдп рдЬрддрди рдХрд░рд╛ Webhook URL (рдЧреАрдердм рдХреНрд░рд┐рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛рдирд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдирдВрддрд░ рддреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓):

    рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

  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} - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рдмреЕрдХрдПрдВрдб рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреНрдпрд╛ рдкреНрд░реЛрдб рдлреЛрд▓реНрдбрд░рдЪрд╛ рдорд╛рд░реНрдЧ;
    {ENV} - рдкрд░реНрдпрд╛рд╡рд░рдг (dev/prod), рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд prod;
    {DOCKER_REGISTRY_HOST} - рдЖрдордЪреНрдпрд╛ рдбреЙрдХрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреЗ рд╣реЛрд╕реНрдЯ
    {TG_BOT_TOKEN} - рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдЯреЛрдХрди;
    {TG_CHAT_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. рдЖрдордЪреНрдпрд╛ рд╕рджрд╕реНрдпрддреНрд╡рд╛рддреВрди рдбреЙрдХрд░ рдЧреНрд░реБрдкрдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЬреЛрдбрд╛ (рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдХрдВрдЯреЗрдирд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддреАрд▓):
    sudo usermod -aG docker helloworld_admin

рдмреЕрдХрдПрдВрдб рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЖрдгрд┐ рдлреНрд░рдВрдЯрдПрдВрдбрд╕рд╛рдареА dev рд╡рд╛рддрд╛рд╡рд░рдг рддреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ.

Github рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ рдЙрдкрдпреЛрдЬрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди

Github Actions рдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪрд╛ рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреБрдвреЗ рдЬрд╛рдКрдпрд╛.

рдмреЕрдХрдПрдВрдб

рдордзреНрдпреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ deploy.yml рдлрд╛рдЗрд▓.

рдкрдг рддреЗ рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рдЖрдзреА, Github рдордзреНрдпреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ Secret variables рднрд░рд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд░ рдЬрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ -> рд░рд╣рд╕реНрдпреЗ:

  • DOCKER_REGISTRY - рдЖрдордЪреНрдпрд╛ рдбреЙрдХрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреЗ рд╣реЛрд╕реНрдЯ (docker.helloworld.ru);
  • DOCKER_LOGIN - рдбреЙрдХрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рд▓реЙрдЧ рдЗрди рдХрд░рд╛;
  • DOCKER_PASSWORD - рддреНрдпрд╛рдЪрд╛ рдкрд╛рд╕рд╡рд░реНрдб;
  • DEPLOY_HOST тАФ рдЬреЗрдереЗ Plesk рдЕреЕрдбрдорд┐рди рдкреЕрдиреЗрд▓ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рддреЗрдереЗ рд╣реЛрд╕реНрдЯ рдХрд░рд╛ (рдЙрджрд╛рд╣рд░рдг: helloworld.com: 8443 рдХрд┐рдВрд╡рд╛ 123.4.56.78:8443);
  • DEPLOY_BACK_PROD_TOKEN - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рдкреНрд░реЙрдб-рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯреЛрдХрди (рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ Plesk p. 4 рдордзреНрдпреЗ рддреИрдирд╛рддреАрдордзреНрдпреЗ рдорд┐рд│рд╛рд▓реЗ);
  • DEPLOY_BACK_DEV_TOKEN - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рдбреЗрд╡реНрд╣ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдордзреНрдпреЗ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯреЛрдХрди.

рдЙрдкрдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЛрдкреА рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рддреАрди рдореБрдЦреНрдп рдЪрд░рдгрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ:

  • рдЖрдордЪреНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рдд рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ;
  • рдирд╡реНрдпрд╛рдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рдгреЗ;
  • рд╢рд╛рдЦреЗрд╡рд░ (рджреЗрд╡/рдорд╛рд╕реНрдЯрд░) рдЕрд╡рд▓рдВрдмреВрди рдЗрдЪреНрдЫрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рддреИрдирд╛рдд рдХрд░рдгреЗ.

рдЖрдШрд╛рдбреА

рд╕рдореЛрд░рдЪреНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рд╕рд╛рдареА deploy.yml рдлрд╛рдЗрд▓ рдмреЗрдХрдкреЗрдХреНрд╖рд╛ рдереЛрдбреЗ рд╡реЗрдЧрд│реЗ. рдпрд╛рдд рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЪрд╛рдЪрдгреНрдпрд╛рдВрд╕рд╣ рдПрдХ рдкрд╛рдпрд░реА рдирд╛рд╣реА рдЖрдгрд┐ рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рдЯреЛрдХрдирдЪреА рдирд╛рд╡реЗ рдмрджрд▓рддрд╛рдд. рд╕рдореЛрд░рдЪреНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рд╕рд╛рдареА рд░рд╣рд╕реНрдпреЗ, рддрд╕реЗ, рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рднрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╕рд╛рдЗрдЯ рд╕реЗрдЯрдЕрдк

Nginx рджреНрд╡рд╛рд░реЗ рд░рд╣рджрд╛рд░реА рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдгреЗ

рдмрд░рдВ, рдЖрдореНрд╣реА рд╢реЗрд╡рдЯреА рдЖрд▓реЛ рдЖрд╣реЛрдд. рд╣реЗ рдлрдХреНрдд Nginx рджреНрд╡рд╛рд░реЗ рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рд╡рд░ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдЖрдгрд┐ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рд░рд╣рджрд╛рд░реАрдЪреЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ. рдЖрдореНрд╣реА рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗрдЯрдЕрдкрдЪреНрдпрд╛ рдЪрд░рдг 5 рдордзреНрдпреЗ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдзреАрдЪ рдХрд╡реНрд╣рд░ рдХреЗрд▓реА рдЖрд╣реЗ. dev рдЖрдгрд┐ prod рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдорд╛рдЧреАрд▓ рдЖрдгрд┐ рдкреБрдврдЪреНрдпрд╛ рднрд╛рдЧрд╛рдВрд╕рд╛рдареА рддреЗрдЪ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

рдореА рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдИрди.

рдмреЕрдХрдПрдВрдб

рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА

рдЖрдШрд╛рдбреА

рдлреНрд▓рд╛рд╕реНрдХ+рдЕрдБрдЧреНрдпреБрд▓рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЧрд┐рдердм рдНрдХреНрд╢рдирдордзреНрдпреЗ рд╕реАрдЖрдп/рд╕реАрдбреА
╨г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡ ╤Г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡. рдпрд╛рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдгрд╛рд░реНтАНрдпрд╛ URL рд╡рдЧрд│рддрд╛ рд╕рд░реНрд╡ URL рдлреНрд░рдВрдЯрдПрдВрдб рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓ /api/ - рддреЗ рдорд╛рдЧреАрд▓ рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓ (рдореНрд╣рдгреВрди рдорд╛рдЧреАрд▓ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ, рд╕рд░реНрд╡ рд╣рдБрдбрд▓рд░рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ /api/).

рдкрд░рд┐рдгрд╛рдо

рдЖрддрд╛ рдЖрдордЪреА рд╕рд╛рдЗрдЯ helloworld.ru рдЖрдгрд┐ dev.helloworld.ru (рдЕрдиреБрдХреНрд░рдореЗ prod- рдЖрдгрд┐ dev-environments) рд╡рд░ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд╛рд╡реА.

рдПрдХреВрдг, рдЖрдореНрд╣реА рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рдЕрдБрдЧреБрд▓рд░рдордзреНрдпреЗ рдПрдХ рд╕рд╛рдзрд╛ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╕рд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪрд╛ рдЖрдгрд┐ Plesk рдЪрд╛рд▓рд╡рдгрд╛рд▒реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЧрд┐рдердм рдЕреЕрдХреНрд╢рдирдордзреНрдпреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╢реА рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреА рд╣реЗ рд╢рд┐рдХрд▓реЛ.

рдореА рдХреЛрдбрд╕рд╣ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдЪреЗ рджреБрд╡реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░реАрди: рдмреЕрдХрдПрдВрдб, рдЕрдЧреНрд░рднрд╛рдЧ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛