рдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА Plesk рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рдЖрдгрд┐ Github рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд░реВрди CI/CD рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рдЭрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реЗрди. рдЖрдЬ рдЖрдкрдг "рд╣реЕрд▓реЛрд╡рд░реНрд▓реНрдб" рдирд╛рд╡рд╛рдЪрд╛ рдПрдХ рд╕рд╛рдзрд╛ рдкреНрд░рдХрд▓реНрдк рдХрд╕рд╛ рд▓рд╛рд╡рд╛рдпрдЪрд╛ рддреЗ рд╢рд┐рдХреВ. рд╣реЗ рдлреНрд▓рд╛рд╕реНрдХ рдкрд╛рдпрдерди рдлреНрд░реЗрдорд╡рд░реНрдХрдордзреНрдпреЗ рд╕реЗрд▓реЗрд░реА рдХрд╛рдордЧрд╛рд░ рдЖрдгрд┐ рдЕрдБрдЧреБрд▓рд░ 8 рдлреНрд░рдВрдЯрдПрдВрдбрд╕рд╣ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗ.
рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдЪреЗ рджреБрд╡реЗ:
рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рднрд╛рдЧрд╛рдд, рдЖрдореНрд╣реА рдЖрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рднрд╛рдЧ рдкрд╛рд╣реВ. рджреБрд╕рд▒реНрдпрд╛рдордзреНрдпреЗ, рдЖрдореНрд╣реА Plesk рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрдгрд┐ рдШрдЯрдХ (DB, RabbitMQ, Redis, Docker, рдЗ.) рдХрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рд╡реЗ рддреЗ рд╢реЛрдзреВ.
рддрд┐рд╕рд░реНтАНрдпрд╛ рднрд╛рдЧрд╛рдд, рдбреЗрд╡реНрд╣ рдЖрдгрд┐ рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЖрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╢реА рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреА рддреЗ рдЖрдореНрд╣реА рд╢реЗрд╡рдЯреА рд╢реЛрдзреВ. рдЖрдгрд┐ рдордЧ рдЖрдореНрд╣реА рд╕рд╛рдЗрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реВ.
рдЖрдгрд┐ рд╣реЛ, рдореА рдорд╛рдЭрд╛ рдкрд░рд┐рдЪрдп рджреНрдпрд╛рдпрд▓рд╛ рд╡рд┐рд╕рд░рд▓реЛ. рдорд╛рдЭреЗ рдирд╛рд╡ рдУрд▓реЗрдЧ рдмреЛрд░реНрдЭреЛрд╡реНрд╣ рдЖрд╣реЗ, рдореА Domclick рдордзреАрд▓ рддрд╛рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рдВрд╕рд╛рдареА CRM рдЯреАрдордордзреНрдпреЗ рдлреБрд▓рд╕реНрдЯреЕрдХ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЖрд╣реЗ.
рдкреНрд░рдХрд▓реНрдк рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди
рдкреНрд░рдердо, рджреЛрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЬ - рдмреЕрдХрдПрдВрдб рдЖрдгрд┐ рдлреНрд░рдВрдЯ - рдкрд╛рд╣реВ рдЖрдгрд┐ рдХреЛрдбрд╡рд░ рдЬрд╛рдК.
рдмреЕрдХрдПрдВрдб: рдлреНрд▓рд╛рд╕реНрдХ+рд╕реЗрд▓реЗрд░реА
рдорд╛рдЧрдЪреНрдпрд╛ рднрд╛рдЧрд╛рд╕рд╛рдареА, рдореА рдкрд╛рдпрдерди рдбреЗрд╡реНрд╣рд▓рдкрд░рдордзреНрдпреЗ рдЦреВрдк рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрд╕рд▓реЗрд▓рд╛ рдПрдХ рд╕рдореВрд╣ рдШреЗрддрд▓рд╛: рдлреНрд▓рд╛рд╕реНрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдПрдкреАрдЖрдпрд╕рд╛рдареА) рдЖрдгрд┐ рд╕реЗрд▓реЗрд░реА (рдЯрд╛рд╕реНрдХ рдХреНрдпреВрд╕рд╛рдареА). SQLAchemy ORM рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рдЕрд▓реЗрдореНрдмрд┐рдХрдЪрд╛ рд╡рд╛рдкрд░ рд╕реНрдерд▓рд╛рдВрддрд░рд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣рдБрдбрд▓реНрд╕рдордзреАрд▓ JSON рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рд╕рд╛рдареА - Marshmallow.
╨Т
/ping
- рдЙрдкрд▓рдмреНрдзрддрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА;- рдиреЛрдВрджрдгреА, рдЕрдзрд┐рдХреГрддрддрд╛, рдбреА-рдСрдереЛрд░рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдЕрдзрд┐рдХреГрдд рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╛рддрд╛рд│рддреЗ;
- рдПрдХ рдИрдореЗрд▓ рд╣рдБрдбрд▓ рдЬреЗ рд╕реЗрд▓реЗрд░реА рд░рд╛рдВрдЧреЗрдд рдХрд╛рд░реНрдп рдареЗрд╡рддреЗ.
send_mail_task
.
рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ
docker
рджреЛрди рдбреЙрдХрд░рдлрд╛рдИрд▓реНрд╕рд╕рд╣ (base.dockerfile
рдХреНрд╡рдЪрд┐рддрдЪ рдмрджрд▓рдгрд╛рд░реА рдЖрдзрд╛рд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐Dockerfile
рдореБрдЦреНрдп рд╕рдВрдореЗрд▓рдирд╛рдВрд╕рд╛рдареА);.env_files
- рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рдкрд░реНрдпрд╛рд╡рд░рдгреАрдп рдЪрд▓рд╛рдВрд╕рд╣ рдлрд╛рдЗрд▓реНрд╕рд╕рд╣.
рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рдореБрд│рд╛рд╢реА рдЪрд╛рд░ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рдлрд╛рдЗрд▓реНрд╕ рдЖрд╣реЗрдд:
docker-compose.local.db.yml
рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╕реНрдерд╛рдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдпрд╛рд░ рдХрд░рдгреЗ;docker-compose.local.workers.yml
рдХрд╛рдордЧрд╛рд░, рдбреЗрдЯрд╛рдмреЗрд╕, рд░реЗрдбрд┐рд╕ рдЖрдгрд┐ рд░реЕрдмрд┐рдЯрдПрдордХреНрдпреВрдЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рд╡рд╛рдвреАрд╕рд╛рдареА;docker-compose.test.yml
рддреИрдирд╛рддреА рджрд░рдореНрдпрд╛рди рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА;docker-compose.yml
рддреИрдирд╛рддреАрд╕рд╛рдареА.
рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реЗ рд╢реЗрд╡рдЯрдЪреЗ рдлреЛрд▓реНрдбрд░ -
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 рд╕рдмрдбреЛрдореЗрди рдЬреЛрдбрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.
- helloworld.ru рдбреЛрдореЗрдирд╕рд╛рдареА рд╕рджрд╕реНрдпрддрд╛ рддрдпрд╛рд░ рдХрд░рд╛ рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рд▓реЙрдЧрд┐рди-рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛:
рдкреГрд╖реНрдард╛рдЪреНрдпрд╛ рддрд│рд╛рд╢реА рдЕрд╕рд▓реЗрд▓рд╛ рдмреЙрдХреНрд╕ рддрдкрд╛рд╕рд╛ Let's Encrypt рд╕рд╣ рдбреЛрдореЗрди рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рд╛рдЖрдореНрд╣реА рд╕рд╛рдЗрдЯрд╕рд╛рдареА HTTPS рд╕реЗрдЯ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕: - рдкреБрдвреЗ, рдпрд╛ рд╕рджрд╕реНрдпрддреНрд╡рд╛рдордзреНрдпреЗ, рдПрдХ рд╕рдмрдбреЛрдореЗрди dev.helloworld.ru рддрдпрд╛рд░ рдХрд░рд╛ (рдЬреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╡рд┐рдирд╛рдореВрд▓реНрдп TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреЗрдЦреАрд▓ рдЬрд╛рд░реА рдХрд░реВ рд╢рдХрддрд╛):
рд╕рд░реНрд╡реНрд╣рд░ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ
рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХ рд╕рд░реНрд╡реНрд╣рд░ рдЖрд╣реЗ OS рдбреЗрдмрд┐рдпрди рд╕реНрдЯреНрд░реЗрдЪ 9.12 рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рдкреНрд▓реЗрд╕реНрдХ рдСрдмреНрд╕рд┐рдбрд┐рдпрди 18.0.27.
рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд╕рд╛рдареА рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:
- PostgreSQL (рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, dev рдЖрдгрд┐ prod рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рджреЛрди рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдПрдХ рд╕рд░реНрд╡реНрд╣рд░ рдЕрд╕реЗрд▓).
- RabbitMQ (рдкрд░реНрдпрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рднрд┐рдиреНрди рд╡реНрд╣реЙрд╕реНрдЯрд╕рд╣ рд╕рдорд╛рди, рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг).
- рджреЛрди Redis рдЙрджрд╛рд╣рд░рдгреЗ (dev рдЖрдгрд┐ prod рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА).
- рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА (рдмрд┐рд▓реНрдЯ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛рдВрдЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА).
- рдбреЙрдХрд░ рдиреЛрдВрджрдгреАрд╕рд╛рдареА UI.
рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓
Plesk рдЖрдзреАрдЪ PostgreSQL DBMS рд╕рд╣ рдпреЗрддреЛ, рдкрд░рдВрддреБ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА рдирд╛рд╣реА (Plesk Obsidian рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реА
рдиреЗрдЯрд╡рд░ рдбреЗрдмрд┐рдпрдирд╡рд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд░реНтАНрдпрд╛рдЪ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕реВрдЪрдирд╛ рдЖрд╣реЗрдд (
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 рд╕рд╛рдареА.
- рдЖрдореНрд╣реА Plesk рд╡рд░ рдЬрд╛рддреЛ, рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рднрд╛рдЧрд╛рдд рдЬрд╛, рдбреЙрдХрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╢реЛрдзрд╛ рдЖрдгрд┐ рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ (рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдЖрд╡реГрддреНрддреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ):
- рд╕реНрдерд╛рдкрд┐рдд рд╡рд┐рд╕реНрддрд╛рд░рд╛рд╡рд░ рдЬрд╛, рд╢реЛрдзрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рддрд┐рдорд╛ рд╢реЛрдзрд╛
redis bitnami
рдЖрдгрд┐ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛: - рдЖрдореНрд╣реА рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЬрд╛рддреЛ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЛ: рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛, рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рд╡рд╛рдЯрдк рдХреЗрд▓реЗрд▓рд╛ RAM рдЖрдХрд╛рд░, рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреАрд▓ рдкрд╛рд╕рд╡рд░реНрдб рдЖрдгрд┐ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд░рд╛:
- рдЖрдореНрд╣реА рдкреНрд░реЛрдб рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдЪрд░рдг 2-3 рдХрд░рддреЛ, рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ рдЖрдореНрд╣реА рдлрдХреНрдд рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдмрджрд▓рддреЛ: рдкреЛрд░реНрдЯ, рдкрд╛рд╕рд╡рд░реНрдб, рд░реЕрдо рдЖрдХрд╛рд░ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдлреЛрд▓реНрдбрд░рдЪрд╛ рдорд╛рд░реНрдЧ:
рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА
рдореВрд▓рднреВрдд рд╕реЗрд╡рд╛рдВрд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рддреБрдордЪреА рд╕реНрд╡рддрдГрдЪреА рдбреЙрдХрд░ рдЗрдореЗрдЬ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реА рдареЗрд╡рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рд╣реЛрдИрд▓. рд╕реБрджреИрд╡рд╛рдиреЗ, рд╕рд░реНрд╡реНрд╣рд░ рдЬрд╛рдЧрд╛ рдЖрддрд╛ рдЦреВрдкрдЪ рд╕реНрд╡рд╕реНрдд рдЖрд╣реЗ (рдбреЙрдХрд░рд╣рдм рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рдирдкреЗрдХреНрд╖рд╛ рдирдХреНрдХреАрдЪ рд╕реНрд╡рд╕реНрдд), рдЖрдгрд┐ рдЦрд╛рдЬрдЧреА рднрд╛рдВрдбрд╛рд░ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЦреВрдк рд╕реЛрдкреА рдЖрд╣реЗ.
рдЖрдореНрд╣рд╛рд▓рд╛ рд╣рд╡реЗ рдЖрд╣реЗ:
- рдкрд╛рд╕рд╡рд░реНрдб-рд╕рдВрд░рдХреНрд╖рд┐рдд рдбреЙрдХрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╕рдмрдбреЛрдореЗрдирд╡рд░ рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЖрд╣реЗ
https://docker.helloworld.ru ; - рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА UI, рдпреЗрдереЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ
https://docker-ui.helloworld.ru .
рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареАрдГ
- рдЪрд▓рд╛ рдЖрдордЪреНрдпрд╛ рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрд╢рдирдордзреНрдпреЗ Plesk рдордзреНрдпреЗ рджреЛрди рд╕рдмрдбреЛрдореЗрди рддрдпрд╛рд░ рдХрд░реВ: docker.helloworld.ru рдЖрдгрд┐ docker-ui.helloworld.ru, рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рд▓реЗрдЯреНрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ.
- рдлрд╛рдЗрд▓ 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 рдлрд╛рдЗрд▓ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░реВ:
htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
- рдХрдВрдЯреЗрдирд░ рдЧреЛрд│рд╛ рдХрд░рд╛ рдЖрдгрд┐ рдЙрдЪрд▓рд╛:
docker-compose up -d
- рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рд╡рд░ Nginx рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ Plesk рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.
docker.helloworld.ru рдЖрдгрд┐ docker-ui.helloworld.ru рд╕рдмрдбреЛрдореЗрдирд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ рдкрд╛рдпрд▒реНрдпрд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:
рд╡рд┐рднрд╛рдЧ рджреЗрд╡ рд╕рд╛рдзрдиреЗ рдЖрдордЪреНрдпрд╛ рд╕рд╛рдЗрдЯрд╡рд░ рдЬрд╛ рдбреЙрдХрд░ рдкреНрд░реЙрдХреНрд╕реА рдирд┐рдпрдо:
рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдЗрдирдХрдорд┐рдВрдЧ рдЯреНрд░реЕрдлрд┐рдХрдордзреНрдпреЗ рдПрдХ рдирд┐рдпрдо рдЬреЛрдбрд╛:
- рдЖрдореНрд╣реА рддрдкрд╛рд╕рддреЛ рдХреА рдЖрдореНрд╣реА рд╕реНрдерд╛рдирд┐рдХ рдорд╢реАрдирд╡рд░реВрди рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд▓реЙрдЧ рдЗрди рдХрд░реВ рд╢рдХрддреЛ:
$ 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 рд╕рдмрдбреЛрдореЗрдирдЪреЗ рдСрдкрд░реЗрд╢рди рджреЗрдЦреАрд▓ рддрдкрд╛рд╕реВрдпрд╛:
рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдмреНрд░рд╛рдЙрдЭ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬ рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛, рддреЗрд╡реНрд╣рд╛ рдмреНрд░рд╛рдЙрдЭрд░ рдПрдХ рдЕрдзрд┐рдХреГрддрддрд╛ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓ рдЬрд┐рдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╕рд╛рдареА рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡ рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓. рддреНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдЪреНрдпрд╛ рд╕реВрдЪреАрд╕рд╣ рдПрдХрд╛ рдкреГрд╖реНрдард╛рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ (рдЖрддрд╛ рддреЗ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рд░рд┐рдХреНрдд рдЕрд╕реЗрд▓):
Plesk рдлрд╛рдпрд░рд╡реЙрд▓ рдордзреНрдпреЗ рдкреЛрд░реНрдЯ рдЙрдШрдбрдгреЗ
рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреЛрд░реНрдЯ рдЙрдШрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдШрдЯрдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рдмрд╛рд╣реНрдп рдиреЗрдЯрд╡рд░реНрдХрдордзреВрди рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЕрд╕рддреАрд▓.
рдЖрдореНрд╣реА рдЖрдзреА рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ Plesk рд╕рд╛рдареА рдлрд╛рдпрд░рд╡реЙрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдкрд░реВрди рд╣реЗ рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рддреЗ рдкрд╛рд╣реВ.
- рдЬрд╛ рд╕рд╛рдзрдиреЗ рдЖрдгрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ > рд╕реЗрдЯрд┐рдВрдЧреНрдЬ > рдлрд╛рдпрд░рд╡реЙрд▓:
- рдЬрд╛ Plesk рдлрд╛рдпрд░рд╡реЙрд▓ рдирд┐рдпрдо рд╕реБрдзрд╛рд░рд┐рдд рдХрд░рд╛ > рд╕рд╛рдиреБрдХреВрд▓ рдирд┐рдпрдо рдЬреЛрдбрд╛ рдЖрдгрд┐ рдбреЙрдХрд░ рд╕рдмрдиреЗрдЯрд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ TCP рдкреЛрд░реНрдЯ рдЙрдШрдбрд╛ (172.0.0.0 / 8):
RabbitMQ: резреореорей, рекрейремреп, релремренрез-релремренреи, реирелремренреи, ремрезремрезрей-ремрезремрезрек
рд░реЗрдбрд┐рд╕: рейреиренреорел, рейреиренреорем - рдЖрдореНрд╣реА рдПрдХ рдирд┐рдпрдо рджреЗрдЦреАрд▓ рдЬреЛрдбреВ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдкреЛрд░реНрдЯ рдЖрдгрд┐ рд░реЕрдмрд┐рдЯрдПрдордХреНрдпреВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреЕрдиреЗрд▓ рдмрд╛рд╣реЗрд░реАрд▓ рдЬрдЧрд╛рд╕рд╛рдареА рдЙрдШрдбреЗрд▓:
- рдмрджрд▓ рд▓рд╛рдЧреВ рдХрд░рд╛ рдмрдЯрдг рд╡рд╛рдкрд░реВрди рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░рд╛:
Github рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ CI/CD рд╕реЗрдЯ рдХрд░рдгреЗ
рдЪрд▓рд╛ рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рднрд╛рдЧрд╛рдХрдбреЗ рдЬрд╛рдК рдпрд╛ - рд╕рддрдд рдПрдХреАрдХрд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рдЖрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреЗ.
рдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рджреЛрди рднрд╛рдЧ рдЕрд╕рддреАрд▓:
- рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рдгреЗ (рдмреЕрдХрдПрдВрдбрд╕рд╛рдареА) - рдЧрд┐рдердм рдмрд╛рдЬреВрд▓рд╛;
- рдорд╛рдпрдЧреНрд░реЗрд╢рди рдЪрд╛рд▓рд╡рдгреЗ (рдмреЕрдХрдПрдВрдбрд╕рд╛рдареА) рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рддреИрдирд╛рдд рдХрд░рдгреЗ - рд╕рд░реНрд╡реНрд╣рд░рд╡рд░.
Plesk рд╡рд░ рддреИрдирд╛рдд
рдЪрд▓рд╛ рдкреНрд░рдердо рджреБрд╕рд░рд╛ рдореБрджреНрджрд╛ рд╣рд╛рддрд╛рд│реВрдпрд╛ (рдХрд╛рд░рдг рдкрд╣рд┐рд▓рд╛ рдореБрджреНрджрд╛ рддреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ).
рдЖрдореНрд╣реА Plesk рд╕рд╛рдареА Git рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдкрд░реВрди рдЙрдкрдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ.
рдмреЕрдХрдПрдВрдб рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╕рд╛рдареА рдкреНрд░реЛрдб рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╣ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреНрдпрд╛.
- рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ Helloworld рд╡реЗрдмрд╕рд╛рдЗрдЯрдЪреНрдпрд╛ рд╕рджрд╕реНрдпрддреНрд╡рд╛рд╡рд░ рдЬрд╛рддреЛ рдЖрдгрд┐ Git рдЙрдкрд╡рд┐рднрд╛рдЧрд╛рд╡рд░ рдЬрд╛рддреЛ:
- "рд░рд┐рдореЛрдЯ рдЧрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА" рдлреАрд▓реНрдбрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛ рдЧрд┐рдердм рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдПрдХ рд▓рд┐рдВрдХ рдШрд╛рд▓рд╛ рдЖрдгрд┐ рдбреАрдлреЙрд▓реНрдЯ рдлреЛрд▓реНрдбрд░ рдмрджрд▓рд╛
httpdocs
рджреБрд╕рд▒реНрдпрд╛рд▓рд╛ (рдЙрджрд╛./httpdocs/hw_back
): - рдорд╛рдЧреАрд▓ рдкрд╛рдпрд░реАрд╡рд░реВрди SSH рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреА рдХреЙрдкреА рдХрд░рд╛ рдЖрдгрд┐
рдЬреЛрдбрд╛ рддреЗ рдЧрд┐рдердм рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ рдЖрд╣реЗ. - рдЪрд░рдг 2 рдордзреНрдпреЗ рд╕реНрдХреНрд░реАрдирд╡рд░ рдУрдХреЗ рдХреНрд▓рд┐рдХ рдХрд░рд╛, рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ Plesk рдордзреАрд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдкреГрд╖реНрдард╛рд╡рд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓. рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдорд╛рд╕реНрдЯрд░ рдмреНрд░рдБрдЪрд▓рд╛ рдХрдорд┐рдЯрд╡рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд░ рдЬрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЖрдгрд┐ рдореВрд▓реНрдп рдЬрддрди рдХрд░рд╛
Webhook URL
(рдЧреАрдердм рдХреНрд░рд┐рдпрд╛ рд╕реЗрдЯ рдХрд░рддрд╛рдирд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдирдВрддрд░ рддреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓): - рдорд╛рдЧреАрд▓ рдкрд░рд┐рдЪреНрдЫреЗрджрд╛рддреАрд▓ рд╕реНрдХреНрд░реАрдирд╡рд░реАрд▓ рдХреНрд░рд┐рдпрд╛ рдлреАрд▓реНрдбрдордзреНрдпреЗ, рдЙрдкрдпреЛрдЬрди рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛:
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
- рдЖрдордЪреНрдпрд╛ рд╕рджрд╕реНрдпрддреНрд╡рд╛рддреВрди рдбреЙрдХрд░ рдЧреНрд░реБрдкрдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЬреЛрдбрд╛ (рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдХрдВрдЯреЗрдирд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддреАрд▓):
sudo usermod -aG docker helloworld_admin
рдмреЕрдХрдПрдВрдб рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдЖрдгрд┐ рдлреНрд░рдВрдЯрдПрдВрдбрд╕рд╛рдареА dev рд╡рд╛рддрд╛рд╡рд░рдг рддреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ.
Github рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ рдЙрдкрдпреЛрдЬрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди
Github Actions рдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪрд╛ рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреБрдвреЗ рдЬрд╛рдКрдпрд╛.
рдмреЕрдХрдПрдВрдб
рдордзреНрдпреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ
рдкрдг рддреЗ рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рдЖрдзреА, 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
- рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рдбреЗрд╡реНрд╣ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдордзреНрдпреЗ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯреЛрдХрди.
рдЙрдкрдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЛрдкреА рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рддреАрди рдореБрдЦреНрдп рдЪрд░рдгрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ:
- рдЖрдордЪреНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рдд рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ;
- рдирд╡реНрдпрд╛рдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЪрд╛рдЪрдгреНрдпрд╛ рдЪрд╛рд▓рд╡рдгреЗ;
- рд╢рд╛рдЦреЗрд╡рд░ (рджреЗрд╡/рдорд╛рд╕реНрдЯрд░) рдЕрд╡рд▓рдВрдмреВрди рдЗрдЪреНрдЫрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рддреИрдирд╛рдд рдХрд░рдгреЗ.
рдЖрдШрд╛рдбреА
рд╕рд╛рдЗрдЯ рд╕реЗрдЯрдЕрдк
Nginx рджреНрд╡рд╛рд░реЗ рд░рд╣рджрд╛рд░реА рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдгреЗ
рдмрд░рдВ, рдЖрдореНрд╣реА рд╢реЗрд╡рдЯреА рдЖрд▓реЛ рдЖрд╣реЛрдд. рд╣реЗ рдлрдХреНрдд Nginx рджреНрд╡рд╛рд░реЗ рдЖрдордЪреНрдпрд╛ рдХрдВрдЯреЗрдирд░рд╡рд░ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдЖрдгрд┐ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рд░рд╣рджрд╛рд░реАрдЪреЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ. рдЖрдореНрд╣реА рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗрдЯрдЕрдкрдЪреНрдпрд╛ рдЪрд░рдг 5 рдордзреНрдпреЗ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдзреАрдЪ рдХрд╡реНрд╣рд░ рдХреЗрд▓реА рдЖрд╣реЗ. dev рдЖрдгрд┐ prod рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдорд╛рдЧреАрд▓ рдЖрдгрд┐ рдкреБрдврдЪреНрдпрд╛ рднрд╛рдЧрд╛рдВрд╕рд╛рдареА рддреЗрдЪ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.
рдореА рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджреЗрдИрди.
рдмреЕрдХрдПрдВрдб
рдЖрдШрд╛рдбреА
╨г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡ ╤Г╤В╨╛╤З╨╜╨╡╨╜╨╕╨╡. рдпрд╛рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдгрд╛рд░реНтАНрдпрд╛ URL рд╡рдЧрд│рддрд╛ рд╕рд░реНрд╡ URL рдлреНрд░рдВрдЯрдПрдВрдб рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓ /api/
- рддреЗ рдорд╛рдЧреАрд▓ рдХрдВрдЯреЗрдирд░рд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓ (рдореНрд╣рдгреВрди рдорд╛рдЧреАрд▓ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ, рд╕рд░реНрд╡ рд╣рдБрдбрд▓рд░рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ /api/
).
рдкрд░рд┐рдгрд╛рдо
рдЖрддрд╛ рдЖрдордЪреА рд╕рд╛рдЗрдЯ helloworld.ru рдЖрдгрд┐ dev.helloworld.ru (рдЕрдиреБрдХреНрд░рдореЗ prod- рдЖрдгрд┐ dev-environments) рд╡рд░ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд╛рд╡реА.
рдПрдХреВрдг, рдЖрдореНрд╣реА рдлреНрд▓рд╛рд╕реНрдХ рдЖрдгрд┐ рдЕрдБрдЧреБрд▓рд░рдордзреНрдпреЗ рдПрдХ рд╕рд╛рдзрд╛ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╕рд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪрд╛ рдЖрдгрд┐ Plesk рдЪрд╛рд▓рд╡рдгрд╛рд▒реНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЧрд┐рдердм рдЕреЕрдХреНрд╢рдирдордзреНрдпреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╢реА рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреА рд╣реЗ рд╢рд┐рдХрд▓реЛ.
рдореА рдХреЛрдбрд╕рд╣ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдЪреЗ рджреБрд╡реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░реАрди:
рд╕реНрддреНрд░реЛрдд: www.habr.com